8791 sujets

Développement web côté serveur, CMS

Bonjour à tous

Je suis nouveau ici, d'avance merci de m'accueillir et de bien vouloir m'aider avec indulgence.
Je viens de créer un petit site de coaching personnel et donc il y a un formulaire à remplir :
le message et une photo à envoyer ou pas (au choix/bouton radio)

J'ai au départ été aidé pour la conception du traitement.php du formulaire car je n'y connais pas grand chose au codage en php et a ce stade malgré plusieurs correctifs il ne fonctionne pas correctement, donc blocage pour moi.

Voici les problèmes (je vous donne aussi le formulaire et son traitement) :

1)Pour l'option question sans photo que je mette ou pas la photo en upload ça me donne :
" Vous avez choisi question avec photo mais vous ne l'avez pas envoyée, recommencez le formulaire " et donc pas d'envoi du formulaire

2)Pour l'option question avec photo :
-lorsque l'upload se fait en gif ça me met " il faut télécharger une image "
-pour les photos jpg venant d'un appareil photo ça me met " veuillez télécharger une photo en gif, jpg, ou png "
-pour les images jpg téléchargées sur internet ou capturées par webcam, là c'est ok ça fonctionne



<form action="traitementbabyl222.php" method="post" enctype="multipart/form-data">
	<p>Cochez votre choix (tous les champs sont obligatoires) :</p>
	<ul>
		<li><input type="radio" id="sans_photo" name="question_type" value="Sans photo" checked="checked"><label for="sans_photo">Question sans photo / xx euros</label></li>
		<li><input type="radio" id="avec_photo" name="question_type" value="Avec photo" checked="checked"><label for="avec_photo">Question avec photo / yy euros</label></li>
	</ul>

	<p><label for="prenom">Votre prénom :</label><br/><input type="text" id="prenom" name="prenom"></p>
          <p><label for="email">Votre adresse e-mail :</label><br/><input type="text" id="email" name="email"></p>
          <p><label for="question">Votre question :</label><br/><textarea id="question" name="question" cols="48" rows="8"></textarea></p>

	<p><label for="photo">Votre photo :</label><br/><input type="file" id="photo" name="photo"></p>
          <p>Si vous souhaitez une copie de ce formulaire par mail, cochez cette case :<input type="checkbox" name="copie" value="1"/></p>
	<p><input type="submit" name="envoi" value="Envoyer">
</form>







<?php
 // definitions
    $adresse_ton_site = 'http://www.xxxxxxxxxxxx.com/';
    $destination_photos = 'photosclients/';
    $destination_email = 'xxxxxxxxx@live.fr';
    $objet = "Réception du formulaire :";

    // recuperation des variables
    $question_type = (isset($_POST['question_type'])) ? $_POST['question_type'] : '';
    $prenom        = (isset($_POST['prenom']))        ? sprintf("%s", trim($_POST['prenom'])) : '';
    $email        = (isset($_POST['email']))        ? sprintf("%s", trim($_POST['email'])) : '';
    $question      = (isset($_POST['question']))      ? sprintf("%s", trim($_POST['question'])) : '';
    $taille = filesize($_FILES['photo']['tmp_name']); //Taille du fichier

    // verification des variables
    $erreurs = array(); // par defaut, vide

    if ($prenom == '')
        $erreurs[] = 'Il faut renseigner votre prenom.';

        if (($email == '') || (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email) == false))
            $erreurs[] = 'Votre email est vide ou mal orthographie. Verifiez.';

            if ($question == '')
                $erreurs[] = 'Il faut renseigner votre question.';

                if (!in_array($question_type, array('Sans photo', 'Avec photo')))
                    $question_type = 'Sans photo'; // par defaut s'il triche et que rien n'est envoye, on reste sur "sans photo".
               
             if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['tmp_name'])))
             {
                   $array_extensions_permises = array('gif', 'jpg', 'png');
                    $taille_maxi = 2300000; // taille maximum (en octets)
 
                    // on recupere l'extension de la photo
                    $temp = explode('.', basename($_FILES['photo']['name']));
                    $extension = $temp[count($temp) -1];
   
                   if (!in_array($extension, $array_extensions_permises))
                        $erreurs[] = 'Veuillez télécharger une photo en gif, jpg ou png, merci.';
      
                        // on limite la taille à 2 mo
                    if( file_exists($_FILES['photo']['tmp_name'])
                        and filesize($_FILES['photo']['tmp_name']) > $taille_maxi)
                    {
                        $erreurs[] = "Votre fichier doit faire moins de 2 mo !";
                  }
   
                        // on limite la taille à 2 Mo
                    if (isset($_FILES['photo']) && in_array($_FILES['photo']['type'], array('image/gif', 'image/jpg', 'image/png')))
                  {
                        $erreurs[] = 'Il faut telecharger une image, svp.';
                    }         
              }
             else
                   $erreurs[] = 'Vous avez choisi question avec photo mais vous ne l\'avez pas envoyée, recommencez le formulaire.';		 
                if (count($erreurs) > 0)
                {
                echo '<center><p><strong style="color:#FF0000;">'.join('<br>', $erreurs).'</strong></p></center>';
                }
                else // formulaire OK
            {
                // on recupere la photo uniquement si le choix est sur "avec photo"
                if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['name'])))
                {
                    // on recupere l'extension de la photo
                    $temp = explode('.', basename($_FILES['photo']['name']));

                    // on renomme la photo avec l'email et la date
                    $nom_photo = date('Ymd_His').'_photo_'.$email.'.'.$temp[count($temp) -1];

                    opendir($destination_photos);

                    if (!move_uploaded_file($_FILES['photo']['tmp_name'], $destination_photos.$nom_photo))
                    echo '<center><p><strong style="color:#FF0000;">Erreur au telechargement du fichier - trop gros ou pas le droit d ecriture.</strong></p></center>';
           
                };

                    // on envoie le mail final
                    $headers .= 'From: '.$prenom.' <'.$email.'>' . "\r\n";
                    $headers .= 'Reply-To: '.$email. "\r\n";

                    $message = "Vous avez rempli le formulaire avec les informations suivantes, Lucile vous répondra au plus vite :\n\n";

                    if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['name'])))
                {
                    $message .= "Photo : ".$adresse_ton_site.$destination_photos.$nom_photo."\n\n";
                }
                    $message .= stripslashes("Prenom : ".$prenom."\n\n");
                    $message .= "Email : ".$email."\n\n";
                    $message .= stripslashes("Question : ".$question."\n\n");  

                    if (mail($destination_email, $objet, $message, $headers))
                      echo '<center><p><strong style="color:#009900;">Votre email m\'est bien parvenu, merci !</strong></p></center>';
                  else
                      echo '<center><p><strong style="color:#FF0000;">Votre email n\'est pas encore parti, veuillez reessayer SVP.</strong></p></center>';

                    //Envoi du double :
                    if (isset($_POST["copie"])){mail($email, $objet, $message, $headers);}

            };
   
?>



En espérant vous lire
Cordialement
Modifié par conke (01 Feb 2011 - 17:28)
Je trouve ce code assez lourd, y'a moyen de faire beaucoup plus simple.
Je pense aussi que les boutons radios ne servent à rien, si la personne veut charger une photo, elle le fait, pourquoi lui demander en plus de valider un bouton radio ?

Commences par faire un formulaire tout simple, sans photos, et vois si tu as arrives à le faire fonctionner, il faut y aller pas à pas (pas très constructif, je sais, mais ça serait trop facile de te refiler un code tout fait Smiley cligne )
Bonjour et merci de bien vouloir me répondre

Sans doute, ce code est un peu lourd.
Par contre ça fait plus de 2 mois que je construis ce site dont un mois sur ce code et c'est pas évident lorsqu'ont part de zéro, c'est mon cas
Donc reprendre tout le code du debut alors que mon site est déja en ligne, pas évident pour moi, tu me comprendra

Aussi J'ai corrigé le problème de l'upload photo en jpg qui ne partait pas >> ça fonctionne

Je suis par contre bloqué uniquement par :
-la vérification du champs d'upload de photo, qui n'est pas vérifié, si la personne oublie d'envoyer la photo elle n'est pas prévenue.

Voilà, c'est tout ce qui me manque je ne demande pas de me filer un code tout fait

Il y a sans doute cette ligne de code à rajouter mais je ne sais pas ou ?

else
                   $erreurs[] = 'Vous avez choisi avec photo mais n\'avez pas soumis de photo.';




Voilà mon code corrigé, mais sans la vérification du champ de l'upload

<?php
 // definitions
    $adresse_ton_site = 'http://www.xxxxxxxxxxxxx.com/';
    $destination_photos = 'photosclients/';
    $destination_email = 'xxxxxxxxx@live.fr';
    $objet = "Réception du formulaire :";

    // recuperation des variables
    $question_type = (isset($_POST['question_type'])) ? $_POST['question_type'] : '';
    $prenom        = (isset($_POST['prenom']))        ? sprintf("%s", trim($_POST['prenom'])) : '';
    $email        = (isset($_POST['email']))        ? sprintf("%s", trim($_POST['email'])) : '';
    $question      = (isset($_POST['question']))      ? sprintf("%s", trim($_POST['question'])) : '';
    $taille = filesize($_FILES['photo']['tmp_name']); //Taille du fichier

    // verification des variables
    $erreurs = array(); // par defaut, vide

    if ($prenom == '')
        $erreurs[] = 'Il faut renseigner votre prenom.';

        if (($email == '') || (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email) == false))
            $erreurs[] = 'Votre email est vide ou mal orthographie. Verifiez.';

            if ($question == '')
                $erreurs[] = 'Il faut renseigner votre question.';

                if (!in_array($question_type, array('Sans photo', 'Avec photo')))
                    $question_type = 'Sans photo'; // par defaut s'il triche et que rien n'est envoye, on reste sur "sans photo".
               
             if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['tmp_name'])))
             {
                   $array_extensions_permises = array('gif', 'GIF', 'jpg', 'png', 'JPG', 'jpeg', 'JPEG');
                    $taille_maxi = 6000000; // taille maximum (en octets)
 
                    // on recupere l'extension de la photo
                    $temp = explode('.', basename($_FILES['photo']['name']));
                    $extension = $temp[count($temp) -1];
   
                   if (!in_array($extension, $array_extensions_permises))
                        $erreurs[] = 'Veuillez télécharger une photo en gif, jpg ou png, merci.';
      
                        // on limite la taille à 5 mo
                    if( file_exists($_FILES['photo']['tmp_name'])
                        and filesize($_FILES['photo']['tmp_name']) > $taille_maxi)
                    {
                        $erreurs[] = "Votre fichier doit faire moins de 5 mo !";
                  }
   
                        // on limite la taille à 5 Mo
                    if (isset($_FILES['photo']) && in_array($_FILES['photo']['type'], array('image/gif', 'image/GIF', 'image/jpg', 'image/png', 'image/JPG', 'image/JPEG', 'image/jpeg')))
                  {
                        $erreurs[] = 'Il faut telecharger une image, svp.';
                    }         
              }
                
                if (count($erreurs) > 0)
                {
                echo '<center><p><strong style="color:#FF0000;">'.join('<br>', $erreurs).'</strong></p></center>';
                }
                else // formulaire OK
            {
                // on recupere la photo uniquement si le choix est sur "avec photo"
                if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['name'])))
                {
                    // on recupere l'extension de la photo
                    $temp = explode('.', basename($_FILES['photo']['name']));

                    // on renomme la photo avec l'email et la date
                    $nom_photo = date('Ymd_His').'_photo_'.$email.'.'.$temp[count($temp) -1];

                    opendir($destination_photos);

                    if (!move_uploaded_file($_FILES['photo']['tmp_name'], $destination_photos.$nom_photo))
                    echo '<center><p><strong style="color:#FF0000;">Erreur au telechargement du fichier - trop gros ou pas le droit d ecriture.</strong></p></center>';
           
                };

                    // on envoie le mail final
                    $headers .= 'From: '.$prenom.' <'.$email.'>' . "\r\n";
                    $headers .= 'Reply-To: '.$email. "\r\n";

                    $message = "Vous avez rempli le formulaire avec les informations suivantes, Lucile vous répondra au plus vite :\n\n";

                    if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['name'])))
                {
                    $message .= "Photo : ".$adresse_ton_site.$destination_photos.$nom_photo."\n\n";
                }
                    $message .= stripslashes("Prenom : ".$prenom."\n\n");
                    $message .= "Email : ".$email."\n\n";
                    $message .= stripslashes("Question : ".$question."\n\n");   

                    if (mail($destination_email, $objet, $message, $headers))
                      echo '<center><p><strong style="color:#009900;">Votre email m\'est bien parvenu, merci !</strong></p></center>';
                  else
                      echo '<center><p><strong style="color:#FF0000;">Votre email n\'est pas encore parti, veuillez reessayer SVP.</strong></p></center>';

                    //Envoi du double :
                    if (isset($_POST["copie"])){mail($email, $objet, $message, $headers);}

            };
   
?>


A vous lire
Cordialement

Modifié par conke (01 Feb 2011 - 17:29)
Franchement, je trouve le code indigeste.

Je t'ai fait ça vite fait, pour moi ça devrait suffire à tes besoins (pas testé) :

<?php
$erreur = '';
// Les champs simples :
if ((!isset($_POST["prenom"])) || (empty($_POST["prenom"]))) {
	$erreur.= "Vous n'avez pas renseigné votre prénom.<br />\n";
}
if ((!isset($_POST["email"])) || (empty($_POST["email"]))) {
	$erreur .= "Vous n'avez pas renseigné votre mail.<br />\n";
}
else if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $_POST["email"]) == false) {
	$erreur .= "L'email que vous avez renseigné n'est pas valide.<br />\n";
}
if ((!isset($_POST["question"])) || (empty($_POST["question"]))) {
	$erreur .= "Vous n'avez pas renseigné votre question.<br />\n";
}
// Ta photo en adéquation avec ton bouton radio :
if (($_POST["question_type"] == "Avec photo") && (!isset($_FILES['photo']['tmp_name']))) {
	$erreur .= "Vous avez oublié d'ajouter votre photo.<br />\n";
}
// vérification de la photo :
else if (isset($_FILES['photo']['tmp_name'])) {
	$taille = getimagesize($_FILES["photo"]["tmp_name"]);
	// Type GIF, JPG ou PNG :
	if ($taille[2] > 3) {
		$erreur.= "Désolé, le fichier n'est pas d'un format autorisé.<br />\n";
	}
	// Vérification du poids de la photo :
	else if ($_FILES['Photo']['size'] > 6000000) {
		$erreur.= "Désolé, votre photo dépasse la taille autorisée.<br />\n";
	}
	// Sauvegarde de la photo :
	else {
		// Extension :
		$valeur = array(1, 2, 3);
		$exten = array('.gif', '.jpg', '.png');
		foreach ($valeur as $key => $value) {
			if ($value == $taille[2]) {
				$extension = $exten[$key];
			}
		}
		// Sauvegarde de la photo, pense à mettre la bonne direction :
		if (move_uploaded_file($_FILES['photo']['tmp_name'], uniqid().$extension)) {
			// Tu envois ton mail ici
		}
	}
}

if ($erreur != '') {
	echo $erreur;
	// Tu ajoute ton formulaire :
	require ('ton_formulaire.php');
}
?>


Voilà, tu peux ajouter d'autres erreurs à $erreur ($erreur .= "la suite des erreurs.<br />").


PS : lorsque tu mes du code, précise que c'est du code php, comme ça il sera en couleur et ça sera déjà nettement moins indigeste.
Modifié par zounounous (24 Nov 2010 - 10:52)
Bonjour

J'ai fais des essais
(à noter que mon formulaire est en html)
Je rencontre les erreurs suivantes (j'ai du mal faire quelque chose, help please ) :

1) Lorsque "question sans photo" est coché, le mail du client ne part pas et ça lui donne comme message :
" Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /homez.218/mon login ovh/www/traitementbabyl222.php on line 36 "
-En revanche (chose bizarre) lorsqu'il envoi une photo le mail part bien mais sans réception de la photo (normal)

2) Lorsque "question avec photo " est cochée, le mail part bien, mais je reçois d'un coup toutes les photos qui sont déjà dans le dossier photo qui se trouve à la racine de mon site.
-Sinon en cas d'oubli de la photo le client reçoit le message suivant :
" Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /homez.218/mon login ovh/www/traitementbabyl222.php on line 36 "


Voilà le traitement.php que j'ai testé :


<?php 
// definitions
    $adresse_ton_site = 'http://www.xxxxxxxxxxxxxxxx.com/';
    $destination_photos = 'photosclients/';
    $destination_email = 'xxxxxxxx@live.fr';
    $objet = "Réception du formulaire :";

    // recuperation des variables
    $question_type = (isset($_POST['question_type'])) ? $_POST['question_type'] : '';
    $prenom        = (isset($_POST['prenom']))        ? sprintf("%s", trim($_POST['prenom'])) : '';
    $email        = (isset($_POST['email']))        ? sprintf("%s", trim($_POST['email'])) : '';
    $question      = (isset($_POST['question']))      ? sprintf("%s", trim($_POST['question'])) : '';
    $taille = filesize($_FILES['photo']['tmp_name']); //Taille du fichier

    // verification des variables
$erreur = ''; 
// Les champs simples : 
if ((!isset($_POST["prenom"])) || (empty($_POST["prenom"]))) { 
    $erreur.= "Vous n'avez pas renseigné votre prénom.<br />\n"; 
} 
if ((!isset($_POST["email"])) || (empty($_POST["email"]))) { 
    $erreur .= "Vous n'avez pas renseigné votre mail.<br />\n"; 
} 
else if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $_POST["email"]) == false) { 
    $erreur .= "L'email que vous avez renseigné n'est pas valide.<br />\n"; 
} 
if ((!isset($_POST["question"])) || (empty($_POST["question"]))) { 
    $erreur .= "Vous n'avez pas renseigné votre question.<br />\n"; 
} 
// Ta photo en adéquation avec ton bouton radio : 
if (($_POST["question_type"] == "Avec photo") && (!isset($_FILES['photo']['tmp_name']))) { 
    $erreur .= "Vous avez oublié d'ajouter votre photo.<br />\n"; 
} 
// vérification de la photo : 
else if (isset($_FILES['photo']['tmp_name'])) { 
    $taille = getimagesize($_FILES["photo"]["tmp_name"]); 
    // Type GIF, JPG ou PNG : 
    if ($taille[2] > 3) { 
        $erreur.= "Désolé, le fichier n'est pas d'un format autorisé.<br />\n"; 
    } 
    // Vérification du poids de la photo : 
    else if ($_FILES['Photo']['size'] > 6000000) { 
        $erreur.= "Désolé, votre photo dépasse la taille autorisée.<br />\n"; 
    } 
    // Sauvegarde de la photo : 
    else { 
        // Extension : 
        $valeur = array(1, 2, 3); 
        $exten = array('.gif', '.jpg', '.png'); 
        foreach ($valeur as $key => $value) { 
            if ($value == $taille[2]) { 
                $extension = $exten[$key]; 
            } 
        } 
        // Sauvegarde de la photo, pense à mettre la bonne direction : 
        if (move_uploaded_file($_FILES['photo']['tmp_name'], uniqid().$extension)) { 
            // Tu envois ton mail ici 
			$headers .= 'From: '.$prenom.' <'.$email.'>' . "\r\n";
                    $headers .= 'Reply-To: '.$email. "\r\n";

                    $message = "Vous avez rempli le formulaire avec les informations suivantes, Lucile vous répondra au plus vite :\n\n";

                    if (($question_type == 'Avec photo') && (!empty($_FILES['photo']['name'])))
                {
                    $message .= "Photo : ".$adresse_ton_site.$destination_photos.$nom_photo."\n\n";
                }
                    $message .= stripslashes("Prenom : ".$prenom."\n\n");
                    $message .= "Email : ".$email."\n\n";
                    $message .= stripslashes("Question : ".$question."\n\n");   

                    if (mail($destination_email, $objet, $message, $headers))
                      echo '<center><p><strong style="color:#009900;">Votre email m\'est bien parvenu, merci !</strong></p></center>';
                  else
                      echo '<center><p><strong style="color:#FF0000;">Votre email n\'est pas encore parti, veuillez reessayer SVP.</strong></p></center>';

                    //Envoi du double :
                    if (isset($_POST["copie"])){mail($email, $objet, $message, $headers);}
        } 
    } 
} 
 
if ($erreur != '') { 
    echo $erreur; 
    // Tu ajoute ton formulaire : 
    require ('ton_formulaire.php'); 
} 
?>



Cordialement
ps : Oui le code que je t'avais donné est indigeste, mais pour l'instant je voudrais juste le corriger et ne t'en fait pas a l'avenir je ferais mieux, ça m'intéresse
Modifié par conke (01 Feb 2011 - 17:31)
conke a écrit :

1) Lorsque &quot;question sans photo&quot; est coché, le mail du client ne part pas et ça lui donne comme message :
&quot; Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /homez.218/mon login ovh/www/traitementbabyl222.php on line 36 &quot;


Etrange.
Remplace la ligne 31 par ça :


if (($_POST["question_type"] == "Avec photo") && (!isset($_FILES['photo']['name']))) {


Et ta ligne 35 par :


else if ((isset($_FILES['photo']['name'])) && ($_POST["question_type"] == "Sans photo")) {  


conke a écrit :
2) Lorsque "question avec photo " est cochée, le mail part bien, mais je reçois d'un coup toutes les photos qui sont déjà dans le dossier photo qui se trouve à la racine de mon site)


Tu n'as pas lu le code.... ta variable $nom_photo est vide.... j'ai utilisé "uniqid().$extension" pour nommer ta photo dans le code que je t'ai filé.

Remplace tes lignes 55 et 56 par ça :

// Sauvegarde de la photo, pense à mettre la bonne direction :  
		$nom_photo = uniqid().$extension;
        if (move_uploaded_file($_FILES['photo']['tmp_name'], $nom_photo)) {  


Et tiens-nous au courant.
J'ai effectué les corrections que tu m'as donné et vérifié plusieurs fois
ça donne :

1) Si je coche "question avec photo" : que j'envoie ou pas une photo ça me donne une page blanche

2) Si je coche "question sans photo" :
-Je n'envoie pas de photo, ça me redonne erreur ligne 36 (voir post up)
-Je met une photo, le mail est bien envoyé

A te lire
merci Smiley smile
conke a écrit :
1) Si je coche &quot;question avec photo&quot; : que j'envoie ou pas une photo ça me donne une page blanche


Le problème vient de la ligne 35 que je t'ai fait remplacé, remplace le && par ||

conke a écrit :
2) Si je coche "question sans photo" :
-Je n'envoie pas de photo, ça me redonne erreur ligne 36 (voir post up)


Normal, si tu lisais le code, je t'ai mis une coquille (sans le vouloir) sur la ligne 35 ("s'il y a une photo et que vous avez coché 'sans photo'"...), donc forcément !

Il faut que tu mette le traitement de la photo dans un bloc conditionnel à part.

conke a écrit :
Je met une photo, le mail est bien envoyé


Logique, conséquence de l'erreur précédente.

conke, désolé de t'avoir fournis un code avec une erreur, mais si tu connaissais un MINIMUM php, tu aurais pu l'adapter en 5 minutes.

Si tu veux que je t'aide encore, je te demande une chose : enlève tes boutons radio "avec photo" et "sans photo" qui ne servent à rien du tout (si la personne veut mettre la photo, elle la met, pas besoin de faire des clics en plus), adapte le formulaire en conséquence en ne traitant QUE le cas de l'envois d'une photo.
Bonjour zounounous

En effet mes connaissances en codage php sont très limitées, mais j'essaye d'apprendre, petit a petit, c'est très long,,,,,,, par exemple aujourd'hui et les autres jours je vais essayer (oui essayer) de capter ça :
http://www.commentcamarche.net/contents/php/phpcond.php3
je lis aussi :
http://www.apprendre-php.com/tutoriels/tutoriel-17-uploader-des-images-sur-un-serveur-web.html
et
http://antoine-herault.developpez.com/tutoriels/php/upload/

Sinon tu as raisons on va alléger et simplifier le formulaire (en html), après modif celui ci me semble correct :

<form action="traitementbabyl222.php" method="post" enctype="multipart/form-data">
	<p><h5>Remplissez ce formulaire en fonction de votre choix :</h5></p>
	

	<p><label for="prenom">Votre prénom :</label><br/><input type="text" id="prenom" name="prenom"></p>
          <p><label for="email">Votre adresse e-mail :</label><br/><input type="text" id="email" name="email"></p>
          <p><label for="question">Votre question :</label><br/><textarea id="question" name="question" cols="48" rows="8"></textarea></p>


	<p><label for="photo">Votre photo (formats jpg, png, jpeg) :</label><br/><input type="file" id="photo" name="photo"></p>
     
           
          <p>Si vous souhaitez une copie de ce formulaire par mail, cochez cette case :<input type="checkbox" name="copie" value="1"/></p>
	<p><input type="submit" name="envoi" value="Envoyer">
</form>



Pour le traitement.php je verrai plus tard, car pour l'instant c'est pas évident pour moi, vu mes faibles connaissances Smiley cligne
je compte donc sur toi pour m'aider

Cordialement Smiley smile
Peu être un début Smiley cligne
Bon, je sais Smiley confused
mais il faut bien essayer

<?php
// definitions
    $adresse_ton_site = 'http://www.xxxxxxxxxxxxxxxxxxx.com/';
    $destination_photos = 'photosclients/';
    $destination_email = 'xxxxxxxxxx@live.fr';
    $objet = "Réception du formulaire :";

    // recuperation des variables
    $prenom        = (isset($_POST['prenom']))        ? sprintf("%s", trim($_POST['prenom'])) : '';
    $email        = (isset($_POST['email']))        ? sprintf("%s", trim($_POST['email'])) : '';
    $question      = (isset($_POST['question']))      ? sprintf("%s", trim($_POST['question'])) : '';
    $taille = filesize($_FILES['photo']['tmp_name']); //Taille du fichier

    // verification des variables
$erreur = ''; 
// Les champs simples : 
if ((!isset($_POST["prenom"])) || (empty($_POST["prenom"]))) { 
    $erreur.= "Vous n'avez pas renseigné votre prénom.<br />\n"; 
} 
if ((!isset($_POST["email"])) || (empty($_POST["email"]))) { 
    $erreur .= "Vous n'avez pas renseigné votre mail.<br />\n"; 
} 
else if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $_POST["email"]) == false) { 
    $erreur .= "L'email que vous avez renseigné n'est pas valide.<br />\n"; 
} 
if ((!isset($_POST["question"])) || (empty($_POST["question"]))) { 
    $erreur .= "Vous n'avez pas renseigné votre question.<br />\n"; 
} 
// La photo  : 
if ((!isset($_FILES['photo']['name'])) || (empty($_FILES['photo']['name']))) { 
    $erreur .= "Vous avez oublié d'ajouter votre photo.<br />\n"; 
}
?>

Modifié par conke (01 Feb 2011 - 17:33)
Voilà, tout sur le même fichier, je n'ai pas testé.
En espérant que ça fonctionnera.

<?php
if ($_POST["utilisation"] == 1) {
	// ------------------------------------------------------------------------------ LES CHAMPS SIMPLES :
	if ((!isset($_POST["prenom"])) || (empty($_POST["prenom"]))) {  
    $erreur.= "Vous n'avez pas renseigné votre prénom.<br />\n";  
	}  
	if ((!isset($_POST["email"])) || (empty($_POST["email"]))) {  
		$erreur .= "Vous n'avez pas renseigné votre mail.<br />\n";  
	}  
	else if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $_POST["email"]) == false) {  
		$erreur .= "L'email que vous avez renseigné n'est pas valide.<br />\n";  
	}  
	if ((!isset($_POST["question"])) || (empty($_POST["question"]))) {  
		$erreur .= "Vous n'avez pas renseigné votre question.<br />\n";  
	}
	// ------------------------------------------------------------------------------ LA PHOTO :
	// vérification de la photo : 
	if (isset($_FILES['photo']['name'])) { 
		$taille = getimagesize($_FILES["photo"]["tmp_name"]); 
		// Type GIF, JPG ou PNG : 
		if ($taille[2] > 3) { 
			$erreur.= "Désolé, le fichier n'est pas d'un format autorisé.<br />\n"; 
		} 
		// Vérification du poids de la photo : 
		else if ($_FILES['Photo']['size'] > 6000000) { 
			$erreur.= "Désolé, votre photo dépasse la taille autorisée.<br />\n"; 
		} 
		// Sauvegarde de la photo : 
		else { 
			// Extension : 
			$valeur = array(1, 2, 3); 
			$exten = array('.gif', '.jpg', '.png'); 
			foreach ($valeur as $key => $value) { 
				if ($value == $taille[2]) { 
					$extension = $exten[$key]; 
				} 
			} 
			// Sauvegarde de la photo, pense à mettre la bonne direction : 
			$nom_photo = uniqid().$extension; 
        	if (!move_uploaded_file($_FILES['photo']['tmp_name'], $nom_photo)) {
				$erreur.= "Votre photo n'a pas été enregistrée.<br />\n";
			} 
		} 
	}
	// ------------------------------------------------------------------------------ LE MAIL :
	if ($erreur == '') {
		$adresse_ton_site = 'http://www.psycho-conseil-pendule.com/'; 
		$destination_photos = 'photosclients/'; 
		$destination_email = 'xxxxxxxx@live.fr'; 
		$objet = "Réception du formulaire :";
		
		$headers .= 'From: '.$prenom.' <'.$email.'>' . "\r\n"; 
        $headers .= 'Reply-To: '.$email. "\r\n";
		
		if ($_POST["copie"] == 1) {
			$headers.= "Bcc: ".$_POST["email"]."\r\n";
		}
 
        $message = "Vous avez rempli le formulaire avec les informations suivantes, Lucile vous répondra au plus vite :\n\n"; 
 
         if (isset($_FILES['photo']['name'])) {
			 $message .= "Photo : ".$adresse_ton_site.$destination_photos.$nom_photo."\n\n"; 
         } 
         $message .= stripslashes("Prenom : ".$prenom."\n\n"); 
         $message .= "Email : ".$email."\n\n"; 
         $message .= stripslashes("Question : ".$question."\n\n");    
 
         if (mail($destination_email, $objet, $message, $headers))  {
			 echo '<center><p><strong style="color:#009900;">Votre email m\'est bien parvenu, merci !</strong></p></center>';
		 }
         else {
			 echo '<center><p><strong style="color:#FF0000;">Votre email n\'est pas encore parti, veuillez reessayer SVP.</strong></p></center>';
		 }
		 exit;
	}
	// ------------------------------------------------------------------------------ SI ERREUR :
	else {
		echo $erreur;
	}
}		
?>

<form action="tonFormulaire.php" method="post" enctype="multipart/form-data"> 
    <p><h5>Remplissez ce formulaire en fonction de votre choix :</h5></p> 
     
 
    <p><label for="prenom">Votre prénom :</label><br/><input type="text" name="prenom" /></p> 
    <p><label for="email">Votre adresse e-mail :</label><br/><input type="text" name="email" /></p> 
    <p><label for="question">Votre question :</label><br/><textarea name="question" cols="48" rows="8"></textarea></p> 
 	<p><label for="photo">Votre photo (formats jpg, png, jpeg) :</label><br/><input type="file" name="photo" /></p> 
      
            
    <p>Si vous souhaitez une copie de ce formulaire par mail, cochez cette case :<input type="checkbox" name="copie" value="1" /></p> 
	<input type="hidden" name="utilisation" value="1" />
    <p><input type="submit" name="envoi" value="Envoyer" /> 
</form>
Bonjour

D'abord, Merci pour ton aide


1)Tu me dis " tout sur le même fichier "
Je voudrais savoir si ça change quelque chose concernant l'installation ?
Voilà comment j'ai fait jusqu'à maintenant : J'insère le formulaire sur sa page avec web acappella et d'un autre coté j'envoie le traitement.php à la racine de mon site.
Tu me diras si c'est ok ?


2)Tu me dis "//Sauvegarde de la photo, pense à mettre la bonne direction :"
ça concerne bien cette partie ? :

if ($erreur == '') { 
        $adresse_ton_site = 'http://www.xxxxxxxxxxxxxxxxxx.com/';  
        $destination_photos = 'photosclients/';  
        $destination_email = 'xxxxxxxx@live.fr';  
        $objet = "Réception du formulaire :"; 



Je te pose ces questions pour être sur de ne pas faire d'erreurs de mon coté, mes connaissances en codage étant déjà limitées Smiley cligne et l'apprentissage long.

J'ai donc testé :

-Si on n'envoie pas de photo ça me donne :
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /homez.218/mon login ovh/www/traitementbabyl222.php on line 19
Votre photo n'a pas été enregistrée.

-Si une photo est envoyée le mail est bien expédié, par contre, le prénom, l'ad email et la question ne sont pas renseignés, de plus l'adresse de l'expéditeur est renseignée avec les signes ""<>
En ce qui concerne la photo, le lien est bien dans le mail, mais en cliquant dessus ça donne :
" page web introuvable, erreur http 404 "

Bien Cordialement Smiley smile
Modifié par conke (01 Feb 2011 - 17:36)
Salut,

comme ce sujet est déjà bien long je n'ai jeté qu'un coup d'oeil en diagonale mais juste une petite remarque : comme nous sommes sympathiques avec nos visiteurs nous allons forcément réafficher les valeurs déjà saisies en cas d'erreur donc il faut initialiser chacune des variables. Du coup on peut faire quelque chose comme ça :
<?php
// Initialisation ou récupération des variables
$nom = !empty($_POST['nom']) ? trim($_POST['nom']) : '';
$prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : '';
// etc.

$erreurs = array();

if($_SERVER['REQUEST_METHOD']=='POST') {
	// nom obligatoire
	if(empty($nom)) {
		$erreurs[] = 'Le nom est obligatoire.';
	}
	// prénom obligatoire
	if(empty($prenom)) {
		$erreurs[] = 'Le prénom est obligatoire.';
	}
	
	// etc.
	
	// Aucune erreur...
	if(empty($erreurs)) {
		// Traitement (envoi de mail, Insert en base, etc.)
		header('Location: confirmation.php'); // Redirection vers la page de confirmation
	}
}
?><!DOCTYPE ...

</head>
<body>
<?php
if(!empty($erreurs)) {
	foreach($erreurs as $erreur) {
		echo '<p class="alerte">'.$erreur."</p>\n";
	}
}
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post" enctype="multipart/form-data">
	<p>
		<label for="nom">Nom :</label>
		<input type="text" name="nom" id="nom" value="<?php echo htmlspecialchars($nom); ?>" />
	</p>
	<p>
		<label for="prenom">Prénom :</label>
		<input type="text" name="prenom" id="prenom" value="<?php echo htmlspecialchars($prenom); ?>" />
	</p>
	<!-- etc. -->
	<p>
		<input type="submit" />
	</p>
</form>
</body>
</html>
Bonjour Heyoan et tous

Merci de passer m'aider pour l'élaboration du traitement de mon formulaire.
C'est vrai que vous êtes sympas de bien vouloir me répondre.

Au départ je suis venu ici avec le traitement de mon formulaire(en html) pour lequel
la vérif de l'upload ne se faisait pas (le client n'était pas prévenu en cas de non envoi
de la photo) certes le code du traitement était lourd et indigeste (pour reprendre les mots de zounounous).
Pour simplifier on a donc supprimé les boutons radio.

On en est là et,
à ce niveau je suis un peu perdu.

Aussi merci pour votre indulgence, j'ai commencé à apprendre il y a peu de temps,
donc mes connaissances sont très limitées.

Bien cordialement
conke a écrit :
Au départ je suis venu ici avec le traitement de mon formulaire(en html) pour lequel la vérif de l'upload ne se faisait pas
S'il s'agit de contrôler que le fichier est correctement uploadé tu peux faire quelque chose comme ça :
if($_SERVER['REQUEST_METHOD']=='POST') {
	// ...
	if(empty($_FILES)) {    // Fichier trop volumineux  
	  $erreurs[] = 'Le fichier ne doit pas dépasser '.ini_get('post_max_size').' !';  
	} elseif(empty($_FILES['fichier']['name'])) {    // Aucun fichier sélectionné  
	  $erreurs[] = 'Sélectionner un fichier.';  
	} elseif($_FILES['fichier']['error'] > 0) {    // cf.    http://fr2.php.net/manual/fr/features.file-upload.errors.php    pour les retours d'erreurs  
	  $erreurs[] = 'Une erreur est survenue lors de la récupération du fichier.';  
	} else {    // L'upload s'est bien passé (il ne reste qu'à vérifier ensuite la taille maxi, l'extension et éventuellement le véritable type-mime : getimagesize est suffisant pour valider celui d'une image sinon regarder du côté de finfo_open, mime_content_type ou exec)  
	  // Traitement de l'image uploadée  
	}
}

A noter qu'il existe bon nombre de classes php prêtes à l'emploi qui simplifient la vie.
Modifié par Heyoan (28 Nov 2010 - 22:24)
Bonjour Heyoan

Je me suis déjà pas mal avancé avec le traitement.php de mon formulaire (en xhtml).
Je vais voir pour la suite

Bien cordialement
Modifié par conke (21 Dec 2010 - 15:26)