Verif code php, à l'aide svp !
Résolu/Fermé
siegfrield
Messages postés
4
Date d'inscription
samedi 7 février 2009
Statut
Membre
Dernière intervention
9 septembre 2011
-
9 sept. 2011 à 07:10
curumo_leblanc Messages postés 266 Date d'inscription samedi 10 septembre 2011 Statut Membre Dernière intervention 7 juillet 2014 - 10 sept. 2011 à 20:59
curumo_leblanc Messages postés 266 Date d'inscription samedi 10 septembre 2011 Statut Membre Dernière intervention 7 juillet 2014 - 10 sept. 2011 à 20:59
A voir également:
- Verif code php, à l'aide svp !
- Code ascii de a à z - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
6 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
9 sept. 2011 à 10:44
9 sept. 2011 à 10:44
Bonjour,
Par pitié, utilisez les balises < code > du forum, sinon un long code avec de nombreuses indentations comme celui-ci n'est pas lisible...
Merci,
Xavier
Par pitié, utilisez les balises < code > du forum, sinon un long code avec de nombreuses indentations comme celui-ci n'est pas lisible...
Merci,
Xavier
Natio78
Messages postés
719
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
27 mai 2013
96
9 sept. 2011 à 11:46
9 sept. 2011 à 11:46
pourquoi ça =>
if(strlen($message)> strlen($msg_erreur)) {
echo $message;
}
? je ne vois pas trop à quoi ça te sert.
Sinon c'est normal que le mail parte tout le temps, vu que tu effectues tous tes tests (nom,prénom,mail etc...) qui affiche un message (si ça ne correspond pas à ce que tu souhaites) cependant l'envoi de mail n'est pas "compris" dans tous tes if donc quoiqu'il arrive (même si une condition n'est pas remplit avant) le mail partira...
faudrait un truc du genre
if(strlen($message)> strlen($msg_erreur)) {
echo $message;
}
? je ne vois pas trop à quoi ça te sert.
Sinon c'est normal que le mail parte tout le temps, vu que tu effectues tous tes tests (nom,prénom,mail etc...) qui affiche un message (si ça ne correspond pas à ce que tu souhaites) cependant l'envoi de mail n'est pas "compris" dans tous tes if donc quoiqu'il arrive (même si une condition n'est pas remplit avant) le mail partira...
faudrait un truc du genre
if(prenom = verifprenom) { if(nom = verifnom) { if(mail = verifmail) { $mail_entete = blabla mail($destinataire,......) } else $message = "mail pas bon"; } else $message = "nom pas bon"; } else $message = "prenom pas bon";
oxymore64
Messages postés
34
Date d'inscription
samedi 23 avril 2011
Statut
Membre
Dernière intervention
16 juin 2012
9 sept. 2011 à 14:44
9 sept. 2011 à 14:44
Bonjour,
Désolé, je ne connaissais pas l'existence de telles balises. J'y aurai recours à l'avenir.
Crdlt,
Sieg
Désolé, je ne connaissais pas l'existence de telles balises. J'y aurai recours à l'avenir.
Crdlt,
Sieg
oxymore64
Messages postés
34
Date d'inscription
samedi 23 avril 2011
Statut
Membre
Dernière intervention
16 juin 2012
9 sept. 2011 à 15:12
9 sept. 2011 à 15:12
Bonjour Natio78 et merci de ta réponse.
Je dois avouer que je ne sais pas à quoi sert :
if(strlen($message)> strlen($msg_erreur)) {
echo $message;
}
Je suis un grand novice en html/php et c'est mon premier site alors je tente d'adapter à mes besoins des codes existants piochés à droite à gauche pour apprendre.
Je n'ai pas bien saisi ta réponse mais je vais tenter de l'adapter à mes besoins.
Je remets le code entre balises pour plus de clarté :
contact.php
captcha.php
traitement.php
Je dois avouer que je ne sais pas à quoi sert :
if(strlen($message)> strlen($msg_erreur)) {
echo $message;
}
Je suis un grand novice en html/php et c'est mon premier site alors je tente d'adapter à mes besoins des codes existants piochés à droite à gauche pour apprendre.
Je n'ai pas bien saisi ta réponse mais je vais tenter de l'adapter à mes besoins.
Je remets le code entre balises pour plus de clarté :
contact.php
<div id="contactform"> <form action="traitement.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> <table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td width="24%">Civilité :</td> <td width="76%"><select name="civilite" size="1" id="civilite" tabindex="1"> <option>Sélectionner</option> <option>Mlle</option> <option>Mme</option> <option>M.</option> </select></td> </tr> <tr> <td>Nom :</td> <td><span id="sp_nom"> <input name="nom" type="text" id="nom" tabindex="1" size="32" maxlength="100" /> <span class="textfieldRequiredMsg">Champ obligatoire.</span></span></td> </tr> <tr> <td>Mél. :</td> <td><span id="sp_mail"> <input name="mail" type="text" id="mail" tabindex="1" size="32" maxlength="100" /> <span class="textfieldRequiredMsg">Champ obligatoire.</span><span class="textfieldInvalidFormatMsg">Format non valide.</span></span></td> </tr> <tr> <td>Message :</td> <td rowspan="2"><span id="sp_message"> <textarea name="message" id="message" cols="45" rows="4" tabindex="1"></textarea> <span class="textareaRequiredMsg"><br /> Champ obligatoire.</span><span class="textareaMaxCharsMsg">Le nombre maximum de caractères a été dépassé.</span></span></td> </tr> <tr> <td> </td> </tr> <tr> <td>Pièce jointe :<input type="hidden" name="MAX_FILE_SIZE" value="26214400" /></td> <td><input name="parcourir" type="file" id="parcourir"/></td> </tr> <tr> <td>Comment avez-vous connu... ?</td> <td><select name="decouverte" size="1" id="decouverte" tabindex="1"> <option selected="selected">Sélectionner</option> <option>Ami(e)</option> <option>Contact professionnel</option> <option>Publicité</option> <option>Démarchage</option> <option>Par hasard</option> <option>Autre</option> </select></td> </tr> <tr> <td>Code de sécurité :</td> <td> <input name="verif" type="text" id="sprytrigger1" tabindex="1" size="10" maxlength="6"/> <img src="captcha.php" alt="Image code de sécurité" align="absmiddle" /></td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" name="envoyer" id="envoyer" value="Envoyer" tabindex="1" /> <input type="reset" name="effacer" id="effacer" value="Réinitialiser" tabindex="1" /> </div></td> </tr> </table> </form> </div>
captcha.php
<?php session_start(); $liste="123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $code=''; while(strlen($code)!=6){ $code.=$liste[rand(0,36)]; } $_SESSION['code']=$code; $img=imagecreate(70,20) or die ("Problème de création GD"); $background_color=imagecolorallocate($img,238,238,238); $ecriture_color=imagecolorallocate($img,0,0,0); $code_police=5; header('Expires: Mon, 26 Jul 1997 05h00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header("Content-type: image/jpeg"); imageString($img,$code_police,(70-imageFontWidth($code_police)*strlen($code))/2,0,$code,$ecriture_color); imagejpeg($img,'',30); imageDestroy($img); ?>
traitement.php
<div class="leftcontent"> <?php $msg_erreur = "<span style='color:red'>Erreur. Les champs suivants doivent être obligatoirement remplis :</span><br/><br/>"; $msg_ok = "Votre demande a bien été prise en compte. Nous vous répondrons dans les meilleurs délais."; $message=$msg_erreur; define('MAIL_DESTINATAIRE','mon mail'); define('MAIL_SUJET','Information'); if(empty($_POST['nom'])) $message.="<span style='color:red'>Vous devez saisir un nom</span><br/>"; if(empty($_POST['mail'])) $message.="<span style='color:red'>Vous devez saisir une adresse électronique</span><br/>"; if(empty($_POST['message'])) $message.="<span style='color:red'>Vous devez saisir un message</span><br/>"; if(!isset($_SESSION['code']) || strlen($_SESSION['code']) != 6) die("Erreur !"); if($_SESSION['code'] !=$_POST['verif']) //die("Erreur : le code de sécurité est invalide !"); echo "<span style='color:red'>le code est invalide !</span><br>"; if(!preg_match("$[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $_POST["mail"])) { $message.="<span style='color:red'>Votre adresse électronique n'est pas valide</span><br/>"; } if(strlen($message)> strlen($msg_erreur)) { echo $message; } else { foreach($_POST as $index => $valeur) { $$index=stripslashes(trim($valeur)); } $mail_entete = "MIME-Version: 1.0\r\n"; $mail_entete .= "From: {$_POST['nom']} " ."<{$_POST['mail']}>\r\n"; $mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n"; $mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"'; $mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n"; $mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n"; // préparation du corps du mail $mail_corps = "Civilite : $civilite\n"; $mail_corps .= "Message de : $nom\n"; $mail_corps .= "Email : $mail\n"; $mail_corps .= "Decouverte : $decouverte\n"; $mail_corps .= "Contenu : $message"; // envoi du mail if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) { //Le mail est bien expédié echo $msg_ok; } else { //Le mail n'a pas été expédié echo '<span style="color:red">Une erreur est survenue lors de l\'envoi du formulaire par email</span>'; } } $dossier = 'upload/'; $fichier = basename($_FILES['parcourir']['name']); $taille_maxi = 26214400; $taille = filesize($_FILES['parcourir']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.txt', '.doc', '.docx', '.xls', '.xlsx', '.pdf'); $extension = strrchr($_FILES['parcourir']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $erreur = 'Le type de fichier que vous souhaitez nous envoyer n\'est pas autorisé.'; } if($taille>$taille_maxi) { $erreur = 'Le fichier est trop volumineux.'; } if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['parcourir']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Votre document nous a bien été envoyé.'; } else //Sinon (la fonction renvoie FALSE). { echo 'Le transfert de votre document a échoué'; } } else { echo $erreur; } ?> </div>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ton code est en fait un assemblage de morceaux glanés sur le net.
Tu utilises des styles d'un coté, des doubles définitions des tests parfois erronés... Bref c'est pas "propre" du tout et ce côté brouillon explique les résultats inattendus.
De plus, pour le fichier joint, tu utilises l'upload par formulaire sur un serveur. Or ton but est de nous le faire parvenir... pas besoin de le stocker donc sauf temporairement !
Par ailleurs, le captcha sous cette forme est totalement inefficace. J'ai donc mis dans le code ci-dessous deux cases "input checkbox" dont une invisible. Un robot coche tout ou rien... et donc les robots ne passent pas cette protection ultra simple pourtant !
J'ai aussi regroupé tes 3 pages en une seule pour une lecture simplifiée et un regroupement du code redondant. Car tu ne gérais pas les erreurs de remplissage de formulaire contrairement à ce que ton code pouvait de prime abord laisser croire.
Les rares paramètres changeant au besoin ont été regroupé en haut de page pour une lisibilité simple des variables modifiables.
Si tu veux des explications ou un code plus commenté dis le moi
Tu utilises des styles d'un coté, des doubles définitions des tests parfois erronés... Bref c'est pas "propre" du tout et ce côté brouillon explique les résultats inattendus.
De plus, pour le fichier joint, tu utilises l'upload par formulaire sur un serveur. Or ton but est de nous le faire parvenir... pas besoin de le stocker donc sauf temporairement !
Par ailleurs, le captcha sous cette forme est totalement inefficace. J'ai donc mis dans le code ci-dessous deux cases "input checkbox" dont une invisible. Un robot coche tout ou rien... et donc les robots ne passent pas cette protection ultra simple pourtant !
J'ai aussi regroupé tes 3 pages en une seule pour une lecture simplifiée et un regroupement du code redondant. Car tu ne gérais pas les erreurs de remplissage de formulaire contrairement à ce que ton code pouvait de prime abord laisser croire.
Les rares paramètres changeant au besoin ont été regroupé en haut de page pour une lisibilité simple des variables modifiables.
Si tu veux des explications ou un code plus commenté dis le moi
oxymore64
Messages postés
34
Date d'inscription
samedi 23 avril 2011
Statut
Membre
Dernière intervention
16 juin 2012
10 sept. 2011 à 18:24
10 sept. 2011 à 18:24
Un grand merci Curumo. J'ai effectivemment pioché des bouts de code à droite à gauche, j'ai essayé"de ne pas me compliquer la vie pour la partie php et en fait je vois que, selon tes commentaires, c'est un peu du grand n'importe quoi. Je vais essayé de comprendre le code et de me "l'auto commenter" au lieu de cette fois ci le copier bêtement.
Encore merci pour ton travail.
Encore merci pour ton travail.
curumo_leblanc
Messages postés
266
Date d'inscription
samedi 10 septembre 2011
Statut
Membre
Dernière intervention
7 juillet 2014
74
Modifié par curumo_leblanc le 10/09/2011 à 21:00
Modifié par curumo_leblanc le 10/09/2011 à 21:00
Non pas totalement n'importe quoi mais disons que c'est au niveau des vérifications et du traitement que ca se sentait ce "collage". Maintenant on a tous commencé par là :p
Saches que pour la suite si tu as besoin d'aide, mail moi directement : aratar@wanadoo.fr (précises dans le sujet qui tu es sinon c'est spam ou poubelle :p)
Je ne suis pas un grand codeur mais je commence à me débrouiller.
P.S.: j'ai gardé les styles que tu avais copier coller mais n'ayant pas vu tes feuilles de styles j'espère juste que le résultat est "visible" ^^ sinon tu devras générer une feuille de style, définir tes propriétés CSS et surtout changer les class ;)
Changement de pseudo après inscription...
Saches que pour la suite si tu as besoin d'aide, mail moi directement : aratar@wanadoo.fr (précises dans le sujet qui tu es sinon c'est spam ou poubelle :p)
Je ne suis pas un grand codeur mais je commence à me débrouiller.
P.S.: j'ai gardé les styles que tu avais copier coller mais n'ayant pas vu tes feuilles de styles j'espère juste que le résultat est "visible" ^^ sinon tu devras générer une feuille de style, définir tes propriétés CSS et surtout changer les class ;)
Changement de pseudo après inscription...
Natio78
Messages postés
719
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
27 mai 2013
96
9 sept. 2011 à 17:34
9 sept. 2011 à 17:34
alors on je vais essayer de clarifier,
1) pour l'envoi de mails:
dans ta page traitement.php tu fais tout un tas de tests (je ne les ai pas tous vérifié ) mais tu les fais 1 par 1, c'est à dire que tu ne imbriques pas (si tu as une erreur à un moment effectivement ça t'affichera un message mais le script continuera de s'exécuter sur le serveur) donc ton mail partira. Inspire toi de ce que j'ai écrit précédemment pour imbriquer tes if successivement.
Sinon pour
if(strlen($message)> strlen($msg_erreur)) {
echo $message;
}
tu peux l'enlever, c'est inutile tu compares juste la longueur des chaines de caractère....
1) pour l'envoi de mails:
dans ta page traitement.php tu fais tout un tas de tests (je ne les ai pas tous vérifié ) mais tu les fais 1 par 1, c'est à dire que tu ne imbriques pas (si tu as une erreur à un moment effectivement ça t'affichera un message mais le script continuera de s'exécuter sur le serveur) donc ton mail partira. Inspire toi de ce que j'ai écrit précédemment pour imbriquer tes if successivement.
Sinon pour
if(strlen($message)> strlen($msg_erreur)) {
echo $message;
}
tu peux l'enlever, c'est inutile tu compares juste la longueur des chaines de caractère....
oxymore64
Messages postés
34
Date d'inscription
samedi 23 avril 2011
Statut
Membre
Dernière intervention
16 juin 2012
9 sept. 2011 à 18:19
9 sept. 2011 à 18:19
Génial. Merci pour l'explication, je teste ça dans le week end !
Oula lisez bien le code... tu définis un message de base puis tu dis que le messqge d'erreur est égal à ton message de base. Après chaque erreur concatène un morceau de texte à la suite "$message .=" notez bien le point pour l'ajout.
Du coup tu test la longeur de ton code erreur avec ton code de base. SI tu as le code erreur plus long alors tu affiches sinon tu executes... Bref je regarde plus en détails mais l'imbrication n'est pas vitale dans le cas présent (et rends le code moins lisible)
Du coup tu test la longeur de ton code erreur avec ton code de base. SI tu as le code erreur plus long alors tu affiches sinon tu executes... Bref je regarde plus en détails mais l'imbrication n'est pas vitale dans le cas présent (et rends le code moins lisible)