Besoin d'aide intergation Captcha PHP
Bonjour,
J'ai un script de commentraire sur mon site et je voudrais intégré un systéme CAPTCHA dessus mais sans succès...
Le script bloque bien la page quand le code est faux avec le message en echo
Le script accepte bien le code quand celui ci est bon avec message en echo (mais le commentaire n'est pas posté)
Voici le code CAPTCHA:
Et voici le code de ma page:
Voila si vous avez une idée merci d'avance parce que je peine un peu :)
Bonne soirée/nuit
J'ai un script de commentraire sur mon site et je voudrais intégré un systéme CAPTCHA dessus mais sans succès...
Le script bloque bien la page quand le code est faux avec le message en echo
Le script accepte bien le code quand celui ci est bon avec message en echo (mais le commentaire n'est pas posté)
Voici le code CAPTCHA:
<?php
session_start();
if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
echo Merci pour votre message: "'.$_POST['message'].'"';
unset($_SESSION['security_code']);
} else {
echo 'Désolé, le code de sécurité est invalide';
}
} else {
?>
Et voici le code de ma page:
<?php
if (isset($submit) AND ($titrems <> "Titre du message") AND ($pseudo <> "Pseudo/Nom") AND ($commentaire <> ""))
{
$fp = fopen("commentaires.txt","a");
$commentaire = str_replace("\'", "'", $commentaire);
$titrems = str_replace("\'", "'", $titrems);
$titrems = str_replace(">", ">", $titrems);
$titrems = str_replace("<", "<", $titrems);
$pseudo = str_replace("\'", "'", $pseudo);
$commentaire = str_replace('\"', '"', $commentaire);
$titrems = str_replace('\"', '"', $titrems);
$pseudo = str_replace('\"', '"', $pseudo);
$pseudo = str_replace("<", "<", $pseudo);
$pseudo = str_replace(">", ">", $pseudo);
$commentaire = str_replace(">", ">", $commentaire);
$commentaire = str_replace("<", "<", $commentaire);
$commentaire = str_replace(",", ", ", $commentaire);
$commentaire = str_replace(" ,", ", ", $commentaire);
$commentaire = str_replace(" , ", ", ", $commentaire);
$commentaire = str_replace(" .", ". ", $commentaire);
$commentaire = str_replace(" . ", ". ", $commentaire);
$commentaire = str_replace(CHR(10), "<br>", $commentaire);
$commentaire = str_replace("[LOL]", "<img align='absmiddle' border='0' src='images/0.gif'>", $commentaire);
$commentaire = str_replace("[oui]", "<img align='absmiddle' border='0' src='images/1.gif'>", $commentaire);
$commentaire = str_replace("[non]", "<img align='absmiddle' border='0' src='images/2.gif'>", $commentaire);
$commentaire = str_replace("[wow]", "<img align='absmiddle' border='0' src='images/3.gif'>", $commentaire);
$commentaire = str_replace("[cool]", "<img align='absmiddle' border='0' src='images/4.gif'>", $commentaire);
$commentaire = str_replace("[ncool]", "<img align='absmiddle' border='0' src='images/5.gif'>", $commentaire);
$commentaire = str_replace("[zZz]", "<img align='absmiddle' border='0' src='images/6.gif'>", $commentaire);
$commentaire = str_replace("[bien]", "<img align='absmiddle' border='0' src='images/7.gif'>", $commentaire);
$commentaire = str_replace("[dead]", "<img align='absmiddle' border='0' src='images/8.gif'>", $commentaire);
$commentaire = str_replace("[mouai]", "<img align='absmiddle' border='0' src='images/9.gif'>", $commentaire);
$commentaire = str_replace("[triste]", "<img align='absmiddle' border='0' src='images/10.gif'>", $commentaire);
$commentaire = str_replace("[clin]", "<img align='absmiddle' border='0' src='images/11.gif'>", $commentaire);
$commentaire = str_replace("[perplexe]", "<img align='absmiddle' border='0' src='images/12.gif'>", $commentaire);
$commentaire = str_replace("[hehe]", "<img align='absmiddle' border='0' src='images/13.gif'>", $commentaire);
$commentaire = str_replace("[choc]", "<img align='absmiddle' border='0' src='images/14.gif'>", $commentaire);
// Date
$date = getdate();
$mois{1} = "Janvier";
$mois{2} = "Février";
$mois{3} = "Mars";
$mois{4} = "Avril";
$mois{5} = "Mai";
$mois{6} = "Juin";
$mois{7} = "Juillet";
$mois{8} = "Août";
$mois{9} = "Septembre";
$mois{10} = "Octobre";
$mois{11} = "Novembre";
$mois{12} = "Décembre";
$jour = $date['mday'];
$mois = $mois{$date['mon']};
$annee = $date['year'];
$temps = "le <i>";
$temps .= $jour;
$temps .= " ";
$temps .= $mois;
$temps .= " ";
$temps .= $annee;
$temps .= "</i> ";
// Fin Date
fputs($fp, "$titrems|$commentaire|$pseudo|$note|$temps");
fputs($fp,"£");
fclose($fp);
echo("<script language=\"javascript\">document.location=\"n1.php\";</script>");
}
elseif (isset($submit))
{
echo("<script language=\"javascript\">alert('Vous devez renseigner votre Nom, le Titre de votre message et laisser un message!');</script>");
}
?>
Voila si vous avez une idée merci d'avance parce que je peine un peu :)
Bonne soirée/nuit
Configuration: Windows Vista Internet Explorer 7.0
32 réponses
Résumé de la discussion
L’intégration d’un CAPTCHA dans un formulaire de commentaire PHP est abordée et montre que le code CAPTCHA correct peut autoriser l’envoi sans afficher le commentaire, tandis qu’un code invalide peut bloquer l’accès. Des solutions évoquées incluent la vérification de la session et du champ security_code, la réutilisation du même code CAPTCHA sur les pages de traitement, et l’archivage des commentaires dans un fichier texte. Plusieurs réponses proposent de fusionner les deux extraits de code en un seul fichier et d’ajuster l’affichage après validation du CAPTCHA. En cas de tests, la gestion des chaînes et des remplacements HTML dans les données saisies est citée comme source d’erreurs d’affichage.
-
L'essentiel est que tu t'en soies sortie.
-
Bonjour,
Pour l'histoire du session tu cherches trop loin, le code marche qu'avec CaptchaSecurityImages.php
Logique que tu ne puisse pas tester le code si tu n'as pas le fichier: CaptchaSecurityImages.php
J'ai enfin, la reponse à mon problème je te post le code qui fonctionne tres bien:
<?php session_start(); //print_r($_SESSION); //print_r($_POST); $error = ''; if( isset($_POST['submit'])) { if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) { // Insert you code for processing the form here, e.g emailing the submission, entering it into a database. //echo 'Merci. Validation du message: "'.$_POST['commentaire'].'"'; unset($_SESSION['security_code']); } else { // Insert your code for showing an error message here //die('Désolé, votre code sécurité est invalide!'); $error = 'Le code de sécurité est invalide...'; //header('Location: note.php'); } } //else { ?>
et la ligne:
if (isset($_POST['submit']) AND ($_POST['titrems'] <> "Titre du message") AND ($_POST['pseudo'] <> "Pseudo/Nom") AND ($_POST['commentaire'] <> "")) {
Comme je disais au debut cela venait de cette derniere ligne qui n'etait pas correct :)))
Enfin merci pour ton aide et d'avoir suivit mon post. :)
Bonne continuation.
Merci à stanboost pour son aide.
solene -
re-bonjour,
P.S. la dernière version envoyée ne teste rien sur mon poste quand j'essaie. même sans mes modifs ! -
Bonjour,
Pour le premier problème : tant que tu testeras $_SESSION['security_code'] et que celui ci ne sera pas renseigné il y aura un plantage.
Il ne peut pas y avoir de gébération, spontanée de variable : cela veut dire que cette variable doit obligatoirement être créée et renseignée dans un coe en amont.
Pour le second problème je vais regarder, mais je crois que le problème n'est pas dans ce que j'ai ajouté.
P.S. en reprenant l'intégralité du dernier code, je n'ai rien qui fonctionne : je ne comprends donc pas ce que toi faire ton programme, cette version bute sur $_SESSION['security_code']. -
re,
le probléme premier, c'est que tu donnes un password alors que celui-ci doit être generé tout seul et automatiquement.
ta modification: $_SESSION['security_code']="jeanluc"
La ligne qui affiche le code est le valide apres verif : <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" />
le second problème c'est que d'ordinaire j'ai un message du type:
echo("<script language=\"javascript\">alert('Vous devez renseigner votre Nom, le Titre de votre message et laisser un message!');</script>");
lorsqu'un champ n'est pas complété ! avec tes modifs du code il ne fonctionne plus.
J'ai seulement un problème de validation des commentaires le système CAPTCHA fonctionne tres bien.
Je penses tjours qu'une seule modification doit suffir pour valider les commentaires posté le fameux submit... -
Bonsoir,
Il faut qu'on se mette en phase.
J'ai testé le programme sans tester la vérification des champs.
à savoir, au premier passage, il me demande de remplir les champs, je clique sur valider, il me répond message envoyé, à condition d'avoir mis jeanluc dans le code_securiry.
si je ne le mets pas il me dit 'Désolé, votre code sécurité est invalide!
Volià je que j'ai testé.
Dans le dernier message, la deuxième ligne n'est pas celle notée ici.
Il serait intéeressant de limiter, dans un premier temps les variables de manière à avoir un pgm plus cours, le faire fonctionner et ensuite remettre les variables enlevées.
-
bonsoir,
Merci de suivre mon post et de participer activement lol :) mais voila,
le code ne marche toujours pas, plus de fonction "verifier les champs" pas de post du message non plus,
ainsi que le système de code CAPTCHA inactif.
J'ai un collegue qui code un peu qui va regarder le code et le tester sur son serveur si il trouve je te ferais signe ;)
en attendant si vous avez des solutions, n"hesitez pas parce que là, je séche sur le sujet.
Merci d'avance à tous et à giheller pour sa patience ;)
PS/ verifier bien les ligne des submit c'est surement là (d'apres moi) que se trouve le problème.
1ere ligne:
if( isset($_POST['submit'])) {
2eme ligne
if (isset($submit) AND ($titrems <> "Titre du message") AND ($pseudo <> "Pseudo/Nom") AND ($commentaire <> "")) -
ok je vais test le code merci beaucoup je te donnerais des news ce soir si cela foncctionne ou pas.
-
re bonjour,
Pour tester il faut que la variable de session $_SESSION['security_code'] soit initialisée pour faire la comparaison.
donc en début on la force à : $_SESSION['security_code']="jeanluc"; // par exemple
pour votre test mettez jeanluc comme code de sécurité
je rajoute derrière echo 'Désolé, votre code sécurité est invalide!';
ça -> unset($submit);
je modifie aussi cette ligne mais ce n'est pas obligatoire
<input id="security_code" name="security_code" type="password" size="15" />
je rajoute
à la fin
<?php
}
unset($submit);
?> -
Bonjour,
je regrade ça.
Jean-Luc -
Mon post d'avant a louper une partie du code
code complet:<?php session_start(); if( isset($_POST['submit'])) { if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) { // Insert you code for processing the form here, e.g emailing the submission, entering it into a database. echo 'Merci. Validation du message: "'.$_POST['commentaire'].'"'; unset($_SESSION['security_code']); } else { // Insert your code for showing an error message here echo 'Désolé, votre code sécurité est invalide!'; } } else { ?> <?php $cpt=0; $fp = fopen("commentaires.txt", "r"); $liste = array(); while (!feof($fp)) { $ligne = fgets($fp,200000); $login = explode("£",$ligne); $stop = sizeof( $login ); for($x = 0; $x < $stop-1; $x++) { $liste = explode("|",$login[$x]); for($y = 0;$y <= 4 ;$y++) { $case[$x][$cpt] = $liste[$y]; $cpt++; } $cpt = 0; } } fclose($fp); /*$buff = file_get_contents('commentaires.txt'); $comments = explode("£",$buff); foreach($comments as $k => $v) { }*/ // Division en plusieurs pages : if($stop-1 > 15){ if(!isset($debut) && !isset($fin)){$debut = 1; $fin = 15;} echo("<center>[ "); $afficn = 1; for($alt = 0; $alt <= $stop-2; $alt = $alt+15) { $alt2 = $alt+15; $alt0 = $alt+1; if ($alt2 > $stop-1){$alt2 = $stop-1;} if ($debut == $alt0 && $fin == $alt2){echo("<b>");} echo("<a href=\"note.php?debut=$alt0&fin=$alt2\">$afficn</a>"); if ($debut == $alt0 && $fin == $alt2){echo("</b>");} $afficn++; if ($alt2 < $stop-1) { echo(" | "); } } echo("]</center><br>"); } else { $debut = 1; $fin = $stop-1; } // Dessin du tableau : $debut = $stop-1-$debut; $fin = $stop-1-$fin; for($x = $debut; $x >= $fin; $x--) { $ama = "{$case[$x][0]}"; $ama = strtolower($ama); $ama = ucwords($ama); $mess = "{$case[$x][2]}"; $mess = strtolower($mess); $mess = ucwords($mess); $comm = "{$case[$x][1]}"; $comm = preg_replace("`((?:https?|ftp)://\S+)(\s|\z)`", '<a title="Visiter le site" target="_blank" href="$1">$1</a>$2', $comm); echo("<img align=\"absmiddle\" border=\"0\" src=\"images/puce.gif\"><b><font color=\"#919191\">$ama</font></b> ("); for($az = 0; $az < "{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée à la vidéo par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/oui.gif\">"); } for($az = 0; $az < 5-"{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée au site par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/non.gif\">"); } echo(") écrit par <font color=\"#0099FF\"><i>$mess</i></font> {$case[$x][4]} :<br>$comm<br><br>"); } ?><br> </div> <p align="center"> <form method="POST" name="form" action="note.php"> <div align="center"> <input type="text" name="titrems" size="22" value="Titre du message" onClick="javascript:document.form.titrems.value='';"maxlength="22"> <input type="text" name="pseudo" size="22" value="Pseudo/Nom" onClick="javascript:document.form.pseudo.value='';"maxlength="17"> <br><br> Attribuez une note sur 5 au site: <select align="absmiddle" size="1" name="note"> <option value="5">5 - Parfait</option> <option value="4">4 - Bien</option> <option selected value="3">3 - Moyen</option> <option value="2">2 - Bof</option> <option value="1">1 - Nul</option> </select> <br><br> <textarea name="commentaire" cols="50" rows="5" wrap="physical" style="font-size: 8 pt; font-family: Verdana"></textarea> <br> <img src="images/0.gif" style="CURSOR: hand" onClick="commentaire.value+=' [1] '"> <img src="images/1.gif" style="CURSOR: hand" onClick="commentaire.value+=' [2] '"> <img src="images/2.gif" style="CURSOR: hand" onClick="commentaire.value+=' [3] '"> <img src="images/3.gif" style="CURSOR: hand" onClick="commentaire.value+=' [4] '"> <img src="images/4.gif" style="CURSOR: hand" onClick="commentaire.value+=' [5] '"> <img src="images/5.gif" style="CURSOR: hand" onClick="commentaire.value+=' [6] '"> <img src="images/6.gif" style="CURSOR: hand" onClick="commentaire.value+=' [7] '"> <img src="images/7.gif" style="CURSOR: hand" onClick="commentaire.value+=' [8] '"> <img src="images/8.gif" style="CURSOR: hand" onClick="commentaire.value+=' [9] '"> <img src="images/9.gif" style="CURSOR: hand" onClick="commentaire.value+=' [10] '"> <img src="images/10.gif" style="CURSOR: hand" onClick="commentaire.value+=' [11] '"> <img src="images/11.gif" style="CURSOR: hand" onClick="commentaire.value+=' [12] '"> <img src="images/12.gif" style="CURSOR: hand" onClick="commentaire.value+=' [13] '"> <img src="images/13.gif" style="CURSOR: hand" onClick="commentaire.value+=' [14] '"> <img src="images/14.gif" style="CURSOR: hand" onClick="commentaire.value+=' [15] '"> <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /> <br /><br /> <label for="security_code"> Code de sécurité: </label> <input id="security_code" name="security_code" type="text" size="15" /> <INPUT TYPE="submit" value="Valider" name="submit"> <INPUT TYPE="reset" value="Effacer" name="reset"> </p> </div> </form> <div align="center"> <?php if (isset($submit) AND ($titrems <> "Titre du message") AND ($pseudo <> "Pseudo/Nom") AND ($commentaire <> "")) { $fp = fopen("commentaires.txt","a"); $commentaire = str_replace("\'", "'", $commentaire); $titrems = str_replace("\'", "'", $titrems); $titrems = str_replace(">", ">", $titrems); $titrems = str_replace("<", "<", $titrems); $pseudo = str_replace("\'", "'", $pseudo); $commentaire = str_replace('\"', '"', $commentaire); $titrems = str_replace('\"', '"', $titrems); $pseudo = str_replace('\"', '"', $pseudo); $pseudo = str_replace("<", "<", $pseudo); $pseudo = str_replace(">", ">", $pseudo); $commentaire = str_replace(">", ">", $commentaire); $commentaire = str_replace("<", "<", $commentaire); $commentaire = str_replace(",", ", ", $commentaire); $commentaire = str_replace(" ,", ", ", $commentaire); $commentaire = str_replace(" , ", ", ", $commentaire); $commentaire = str_replace(" .", ". ", $commentaire); $commentaire = str_replace(" . ", ". ", $commentaire); $commentaire = str_replace(CHR(10), "<br>", $commentaire); $commentaire = str_replace("[1]", "<img align='absmiddle' border='0' src='images/0.gif'>", $commentaire); $commentaire = str_replace("[2]", "<img align='absmiddle' border='0' src='images/1.gif'>", $commentaire); $commentaire = str_replace("[3]", "<img align='absmiddle' border='0' src='images/2.gif'>", $commentaire); $commentaire = str_replace("[4]", "<img align='absmiddle' border='0' src='images/3.gif'>", $commentaire); $commentaire = str_replace("[5]", "<img align='absmiddle' border='0' src='images/4.gif'>", $commentaire); $commentaire = str_replace("[6]", "<img align='absmiddle' border='0' src='images/5.gif'>", $commentaire); $commentaire = str_replace("[7]", "<img align='absmiddle' border='0' src='images/6.gif'>", $commentaire); $commentaire = str_replace("[8]", "<img align='absmiddle' border='0' src='images/7.gif'>", $commentaire); $commentaire = str_replace("[9]", "<img align='absmiddle' border='0' src='images/8.gif'>", $commentaire); $commentaire = str_replace("[10]", "<img align='absmiddle' border='0' src='images/9.gif'>", $commentaire); $commentaire = str_replace("[11]", "<img align='absmiddle' border='0' src='images/10.gif'>", $commentaire); $commentaire = str_replace("[12]", "<img align='absmiddle' border='0' src='images/11.gif'>", $commentaire); $commentaire = str_replace("[13]", "<img align='absmiddle' border='0' src='images/12.gif'>", $commentaire); $commentaire = str_replace("[14]", "<img align='absmiddle' border='0' src='images/13.gif'>", $commentaire); $commentaire = str_replace("[15]", "<img align='absmiddle' border='0' src='images/14.gif'>", $commentaire); // Date $date = getdate(); $mois{1} = "Janvier"; $mois{2} = "Février"; $mois{3} = "Mars"; $mois{4} = "Avril"; $mois{5} = "Mai"; $mois{6} = "Juin"; $mois{7} = "Juillet"; $mois{8} = "Août"; $mois{9} = "Septembre"; $mois{10} = "Octobre"; $mois{11} = "Novembre"; $mois{12} = "Décembre"; $jour = $date['mday']; $mois = $mois{$date['mon']}; $annee = $date['year']; $temps = "le <i>"; $temps .= $jour; $temps .= " "; $temps .= $mois; $temps .= " "; $temps .= $annee; $temps .= "</i> "; // Fin Date fputs($fp, "$titrems|$commentaire|$pseudo|$note|$temps"); fputs($fp,"£"); fclose($fp); echo("<script language=\"javascript\">document.location=\"note.php\";</script& gt;"); } elseif (isset($submit)) { echo("<script language=\"javascript\">alert('Vous devez renseigner votre Nom, le Titre de votre message et laisser un message!');</script>"); } ?> <?php } ?>
voila merci encore -
Bonjour,
oui en effet mon premier post contient les deux codes différents et je desire en faire qu'un avec les deux.
J'ai intégré les deux codes dans un seul comme et c'est celui ci à modifier:
<code>
<?php
session_start();
if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.
echo 'Merci. Validation du message: "'.$_POST['commentaire'].'"';
unset($_SESSION['security_code']);
} else {
// Insert your code for showing an error message here
echo 'Désolé, votre code sécurité est invalide!';
}
} else {
?>
<?php
$cpt=0;
$fp = fopen("commentaires.txt", "r");
$liste = array();
while (!feof($fp))
{
$ligne = fgets($fp,200000);
$login = explode("£",$ligne);
$stop = sizeof( $login );
for($x = 0; $x < $stop-1; $x++)
{
$liste = explode("|",$login[$x]);
for($y = 0;$y <= 4 ;$y++)
{
$case[$x][$cpt] = $liste[$y];
$cpt++;
}
$cpt = 0;
}
}
fclose($fp);
/*$buff = file_get_contents('commentaires.txt');
$comments = explode("£",$buff);
foreach($comments as $k => $v) {
}*/
// Division en plusieurs pages :
if($stop-1 > 15){
if(!isset($debut) && !isset($fin)){$debut = 1; $fin = 15;}
echo("<center>[ ");
$afficn = 1;
for($alt = 0; $alt <= $stop-2; $alt = $alt+15)
{
$alt2 = $alt+15;
$alt0 = $alt+1;
if ($alt2 > $stop-1){$alt2 = $stop-1;}
if ($debut == $alt0 && $fin == $alt2){echo("<b>");}
echo("<a href=\"note.php?debut=$alt0&fin=$alt2\">$afficn</a>");
if ($debut == $alt0 && $fin == $alt2){echo("</b>");}
$afficn++;
if ($alt2 < $stop-1)
{
echo(" | ");
}
}
echo("]</center><br>");
}
else
{
$debut = 1;
$fin = $stop-1;
}
// Dessin du tableau :
$debut = $stop-1-$debut;
$fin = $stop-1-$fin;
for($x = $debut; $x >= $fin; $x--)
{
$ama = "{$case[$x][0]}";
$ama = strtolower($ama);
$ama = ucwords($ama);
$mess = "{$case[$x][2]}";
$mess = strtolower($mess);
$mess = ucwords($mess);
$comm = "{$case[$x][1]}";
$comm = preg_replace("`((?:https?|ftp)://\S+)(\s|\z)`", '<a title="Visiter le site" target="_blank" href="$1">$1</a>$2', $comm);
echo("<img align=\"absmiddle\" border=\"0\" src=\"images/puce.gif\"><b><font color=\"#919191\">$ama</font></b> (");
for($az = 0; $az < "{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée à la vidéo par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/oui.gif\">"); }
for($az = 0; $az < 5-"{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée au site par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/non.gif\">"); }
echo(") écrit par <font color=\"#0099FF\"><i>$mess</i></font> {$case[$x][4]} :<br>$comm<br><br>");
}
?><br>
</div>
<p align="center">
<form method="POST" name="form" action="note.php">
<div align="center">
<input type="text" name="titrems" size="22" value="Titre du message" onClick="javascript:document.form.titrems.value='';"maxlength="22">
<input type="text" name="pseudo" size="22" value="Pseudo/Nom" onClick="javascript:document.form.pseudo.value='';"maxlength="17">
<br><br>
Attribuez une note sur 5 au site:
<select align="absmiddle" size="1" name="note">
<option value="5">5 - Parfait</option>
<option value="4">4 - Bien</option>
<option selected value="3">3 - Moyen</option>
<option value="2">2 - Bof</option>
<option value="1">1 - Nul</option>
</select>
<br><br>
<textarea name="commentaire" cols="50" rows="5" wrap="physical" style="font-size: 8 pt; font-family: Verdana"> -
Bonjour,
La nuit porte conseil. ai-je bien compris ton problème ?
Le premier message donne deux programme. est-ce que ton soucis ne serait pas de les réunir en seul ?
-
C'est le if isset qu'il ne faut pas mettre.
Je persiste et je signe. les deux codes que j'ai renvoyés tout à l'heure fonctionnent.
if isset est vrai quand on vient du formulaire puisqu'il teste si on a cliquer sur valider.
alors qu'on veut dans vote.php qu'il ne soit vrai qu'un fois passé une première fois
partant du premier formulaire, on arrive dans vote.php
si tu veux voir ce qui arrive tu ajoutes en début de vote.php, immédiatement après <?php
la ligne
echo "<pre>";print_r($_POST);echo "</pre>";
et tu verras ce qui est passé par le premier formulaire.
la variable $submit contient ce qui est mis dans a variable name de l'input type=submit ...
la logique de tes deux programme c'est le premier se débranche sur le second qui doit aller dans le second formulaire et boucler sur lui même, ce qu'il ne pourra JAMAIS faire sit tu testes if isset($submit)
-
re bonsoir
Déjà merci pour tes explications et ton aide :)
Apres j'ai testé le code il ne fonctione plus du tout,
je comprends pas pourquoi tu mets le code là:
<form action="vote.php" method="post"> <label for="name">Name: </label><input type="text" name="name" id="name" /><br /> <label for="email">Email: </label><input type="text" name="email" id="email" /><br /> <label for="message">Message: </label><textarea rows="5" cols="30" name="message" id="message"></textarea><br /> <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br /> <label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br /> <input type="submit" name="submit" value="Envoyer" /> </form>
le morceau de code etait un exemple... j'ai qu'une page qui se nomme vote.php
La voici avec le code CAPTCHA integré dedans mais qui ne marche pas.
<?php session_start(); if( isset($_POST['submit'])) { if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) { // Insert you code for processing the form here, e.g emailing the submission, entering it into a database. echo 'Merci. Validation du message: "'.$_POST['commentaire'].'"'; unset($_SESSION['security_code']); } else { // Insert your code for showing an error message here echo 'Désolé, votre code sécurité est invalide!'; } } else { ?> <?php $cpt=0; $fp = fopen("commentaires.txt", "r"); $liste = array(); while (!feof($fp)) { $ligne = fgets($fp,200000); $login = explode("£",$ligne); $stop = sizeof( $login ); for($x = 0; $x < $stop-1; $x++) { $liste = explode("|",$login[$x]); for($y = 0;$y <= 4 ;$y++) { $case[$x][$cpt] = $liste[$y]; $cpt++; } $cpt = 0; } } fclose($fp); /*$buff = file_get_contents('commentaires.txt'); $comments = explode("£",$buff); foreach($comments as $k => $v) { }*/ // Division en plusieurs pages : if($stop-1 > 15){ if(!isset($debut) && !isset($fin)){$debut = 1; $fin = 15;} echo("<center>[ "); $afficn = 1; for($alt = 0; $alt <= $stop-2; $alt = $alt+15) { $alt2 = $alt+15; $alt0 = $alt+1; if ($alt2 > $stop-1){$alt2 = $stop-1;} if ($debut == $alt0 && $fin == $alt2){echo("<b>");} echo("<a href=\"note.php?debut=$alt0&fin=$alt2\">$afficn</a>"); if ($debut == $alt0 && $fin == $alt2){echo("</b>");} $afficn++; if ($alt2 < $stop-1) { echo(" | "); } } echo("]</center><br>"); } else { $debut = 1; $fin = $stop-1; } // Dessin du tableau : $debut = $stop-1-$debut; $fin = $stop-1-$fin; for($x = $debut; $x >= $fin; $x--) { $ama = "{$case[$x][0]}"; $ama = strtolower($ama); $ama = ucwords($ama); $mess = "{$case[$x][2]}"; $mess = strtolower($mess); $mess = ucwords($mess); $comm = "{$case[$x][1]}"; $comm = preg_replace("`((?:https?|ftp)://\S+)(\s|\z)`", '<a title="Visiter le site" target="_blank" href="$1">$1</a>$2', $comm); echo("<img align=\"absmiddle\" border=\"0\" src=\"images/puce.gif\"><b><font color=\"#919191\">$ama</font></b> ("); for($az = 0; $az < "{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée à la vidéo par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/oui.gif\">"); } for($az = 0; $az < 5-"{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée au site par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/non.gif\">"); } echo(") écrit par <font color=\"#0099FF\"><i>$mess</i></font> {$case[$x][4]} :<br>$comm<br><br>"); } ?><br> </div> <p align="center"> <form method="POST" name="form" action="note.php"> <div align="center"> <input type="text" name="titrems" size="22" value="Titre du message" onClick="javascript:document.form.titrems.value='';"maxlength="22"> <input type="text" name="pseudo" size="22" value="Pseudo/Nom" onClick="javascript:document.form.pseudo.value='';"maxlength="17"> <br><br> Attribuez une note sur 5 au site: <select align="absmiddle" size="1" name="note"> <option value="5">5 - Parfait</option> <option value="4">4 - Bien</option> <option selected value="3">3 - Moyen</option> <option value="2">2 - Bof</option> <option value="1">1 - Nul</option> </select> <br><br> <textarea name="commentaire" cols="50" rows="5" wrap="physical" style="font-size: 8 pt; font-family: Verdana"></textarea> <br> <img src="images/0.gif" style="CURSOR: hand" onClick="commentaire.value+=' [1] '"> <img src="images/1.gif" style="CURSOR: hand" onClick="commentaire.value+=' [2] '"> <img src="images/2.gif" style="CURSOR: hand" onClick="commentaire.value+=' [3] '"> <img src="images/3.gif" style="CURSOR: hand" onClick="commentaire.value+=' [4] '"> <img src="images/4.gif" style="CURSOR: hand" onClick="commentaire.value+=' [5] '"> <img src="images/5.gif" style="CURSOR: hand" onClick="commentaire.value+=' [6] '"> <img src="images/6.gif" style="CURSOR: hand" onClick="commentaire.value+=' [7] '"> <img src="images/7.gif" style="CURSOR: hand" onClick="commentaire.value+=' [8] '"> <img src="images/8.gif" style="CURSOR: hand" onClick="commentaire.value+=' [9] '"> <img src="images/9.gif" style="CURSOR: hand" onClick="commentaire.value+=' [10] '"> <img src="images/10.gif" style="CURSOR: hand" onClick="commentaire.value+=' [11] '"> <img src="images/11.gif" style="CURSOR: hand" onClick="commentaire.value+=' [12] '"> <img src="images/12.gif" style="CURSOR: hand" onClick="commentaire.value+=' [13] '"> <img src="images/13.gif" style="CURSOR: hand" onClick="commentaire.value+=' [14] '"> <img src="images/14.gif" style="CURSOR: hand" onClick="commentaire.value+=' [15] '"> <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /> <br /><br /> <label for="security_code"> Code de sécurité: </label> <input id="security_code" name="security_code" type="text" size="15" /> <INPUT TYPE="submit" value="Valider" name="submit"> <INPUT TYPE="reset" value="Effacer" name="reset"> </p> </div> </form> <div align="center"> <?php if (isset($submit) AND ($titrems <> "Titre du message") AND ($pseudo <> "Pseudo/Nom") AND ($commentaire <> "")) { $fp = fopen("commentaires.txt","a"); $commentaire = str_replace("\'", "'", $commentaire); $titrems = str_replace("\'", "'", $titrems); $titrems = str_replace(">", ">", $titrems); $titrems = str_replace("<", "<", $titrems); $pseudo = str_replace("\'", "'", $pseudo); $commentaire = str_replace('\"', '"', $commentaire); $titrems = str_replace('\"', '"', $titrems); $pseudo = str_replace('\"', '"', $pseudo); $pseudo = str_replace("<", "<", $pseudo); $pseudo = str_replace(">", ">", $pseudo); $commentaire = str_replace(">", ">", $commentaire); $commentaire = str_replace("<", "<", $commentaire); $commentaire = str_replace(",", ", ", $commentaire); $commentaire = str_replace(" ,", ", ", $commentaire); $commentaire = str_replace(" , ", ", ", $commentaire); $commentaire = str_replace(" .", ". ", $commentaire); $commentaire = str_replace(" . ", ". ", $commentaire); $commentaire = str_replace(CHR(10), "<br>", $commentaire); $commentaire = str_replace("[1]", "<img align='absmiddle' border='0' src='images/0.gif'>", $commentaire); $commentaire = str_replace("[2]", "<img align='absmiddle' border='0' src='images/1.gif'>", $commentaire); $commentaire = str_replace("[3]", "<img align='absmiddle' border='0' src='images/2.gif'>", $commentaire); $commentaire = str_replace("[4]", "<img align='absmiddle' border='0' src='images/3.gif'>", $commentaire); $commentaire = str_replace("[5]", "<img align='absmiddle' border='0' src='images/4.gif'>", $commentaire); $commentaire = str_replace("[6]", "<img align='absmiddle' border='0' src='images/5.gif'>", $commentaire); $commentaire = str_replace("[7]", "<img align='absmiddle' border='0' src='images/6.gif'>", $commentaire); $commentaire = str_replace("[8]", "<img align='absmiddle' border='0' src='images/7.gif'>", $commentaire); $commentaire = str_replace("[9]", "<img align='absmiddle' border='0' src='images/8.gif'>", $commentaire); $commentaire = str_replace("[10]", "<img align='absmiddle' border='0' src='images/9.gif'>", $commentaire); $commentaire = str_replace("[11]", "<img align='absmiddle' border='0' src='images/10.gif'>", $commentaire); $commentaire = str_replace("[12]", "<img align='absmiddle' border='0' src='images/11.gif'>", $commentaire); $commentaire = str_replace("[13]", "<img align='absmiddle' border='0' src='images/12.gif'>", $commentaire); $commentaire = str_replace("[14]", "<img align='absmiddle' border='0' src='images/13.gif'>", $commentaire); $commentaire = str_replace("[15]", "<img align='absmiddle' border='0' src='images/14.gif'>", $commentaire); // Date $date = getdate(); $mois{1} = "Janvier"; $mois{2} = "Février"; $mois{3} = "Mars"; $mois{4} = "Avril"; $mois{5} = "Mai"; $mois{6} = "Juin"; $mois{7} = "Juillet"; $mois{8} = "Août"; $mois{9} = "Septembre"; $mois{10} = "Octobre"; $mois{11} = "Novembre"; $mois{12} = "Décembre"; $jour = $date['mday']; $mois = $mois{$date['mon']}; $annee = $date['year']; $temps = "le <i>"; $temps .= $jour; $temps .= " "; $temps .= $mois; $temps .= " "; $temps .= $annee; $temps .= "</i> "; // Fin Date fputs($fp, "$titrems|$commentaire|$pseudo|$note|$temps"); fputs($fp,"£"); fclose($fp); echo("<script language=\"javascript\">document.location=\"note.php\";</script>"); } elseif (isset($submit)) { echo("<script language=\"javascript\">alert('Vous devez renseigner votre Nom, le Titre de votre message et laisser un message!');</script>"); } ?> <?php } ?>
Je pense qu'on parlait pas de la même chose, sinon voici le code que je rajoute en faite si cela peut t'aider: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
Je pense tjours que l'erreur vient d'un submit de mon formulaire d'origine (vote.php)
mais je n'arrive pas a le modifier.
rappel:
if (isset($submit) AND ($titrems <> "Titre du message") AND ($pseudo <> "Pseudo/Nom") AND ($commentaire <> ""))
et la ligne:
}
elseif (isset($submit))
{
Merci pour ton aide :) (je fais tjours des essais de modif du code mais sans succes) -
Bonsoir,
J'ai fait les changements, il ne reste plus qu'à savoir où est renseignée la variable de session secirity_code .
<?php
$cpt=0;
$fp = fopen("commentaires.txt", "r");
$liste = array();
while (!feof($fp))
{
$ligne = fgets($fp,200000);
$login = explode("£",$ligne);
$stop = sizeof( $login );
for($x = 0; $x < $stop-1; $x++)
{
$liste = explode("|",$login[$x]);
for($y = 0;$y <= 4 ;$y++)
{
$case[$x][$cpt] = $liste[$y];
$cpt++;
}
$cpt = 0;
}
}
fclose($fp);
/*$buff = file_get_contents('commentaires.txt');
$comments = explode("£",$buff);
foreach($comments as $k => $v) {
}*/
// Division en plusieurs pages :
if($stop-1 > 15){
if(!isset($debut) && !isset($fin)){$debut = 1; $fin = 15;}
echo("<center>[ ");
$afficn = 1;
for($alt = 0; $alt <= $stop-2; $alt = $alt+15)
{
$alt2 = $alt+15;
$alt0 = $alt+1;
if ($alt2 > $stop-1){$alt2 = $stop-1;}
if ($debut == $alt0 && $fin == $alt2){echo("<b>");}
echo("<a href=\"n1.php?debut=$alt0&fin=$alt2\">$afficn</a>");
if ($debut == $alt0 && $fin == $alt2){echo("</b>");}
$afficn++;
if ($alt2 < $stop-1)
{
echo(" | ");
}
}
echo("]</center><br>");
}
else
{
$debut = 1;
$fin = $stop-1;
}
// Dessin du tableau :
$debut = $stop-1-$debut;
$fin = $stop-1-$fin;
for($x = $debut; $x >= $fin; $x--)
{
$ama = "{$case[$x][0]}";
$ama = strtolower($ama);
$ama = ucwords($ama);
$mess = "{$case[$x][2]}";
$mess = strtolower($mess);
$mess = ucwords($mess);
$comm = "{$case[$x][1]}";
$comm = preg_replace("`((?:https?|ftp)://\S+)(\s|\z)`", '<a title="Visiter le site" target="_blank" href="$1">$1</a>$2', $comm);
echo("<img align=\"absmiddle\" border=\"0\" src=\"images/puce.gif\"><b><font color=\"#919191\">$ama</font></b> (");
for($az = 0; $az < "{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée à la vidéo par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/oui.gif\">"); }
for($az = 0; $az < 5-"{$case[$x][3]}"; $az++){ echo("<img alt=\"Note attribuée au site par $mess\" align=\"absmiddle\" border=\"0\" src=\"images/non.gif\">"); }
echo(") écrit par <font color=\"#0099FF\"><i>$mess</i></font> {$case[$x][4]} :<br>$comm<br><br>");
}
?><br>
</div>
<p align="center">
<form method="POST" name="form" action="vote.php">
<div align="center">
<input type="text" name="titrems" size="22" value="Titre du message" onClick="javascript:document.form.titrems.value='';"maxlength="22">
<input type="text" name="pseudo" size="22" value="Pseudo/Nom" onClick="javascript:document.form.pseudo.value='';"maxlength="17">
<br><br>
Attribuez une note sur 5 à la vidéo :
<select align="absmiddle" size="1" name="note">
<option value="5">5 - Parfait</option>
<option value="4">4 - Bien</option>
<option selected value="3">3 - Moyen</option>
<option value="2">2 - Bof</option>
<option value="1">1 - Nul</option>
</select>
<br><br>
<textarea name="commentaire" cols="50" rows="5" wrap="physical" style="font-size: 8 pt; font-family: Verdana"></textarea>
<br>
<img src="images/0.gif" style="CURSOR: hand" onClick="commentaire.value+=' [LOL] '">
<img src="images/1.gif" style="CURSOR: hand" onClick="commentaire.value+=' [oui] '">
<img src="images/2.gif" style="CURSOR: hand" onClick="commentaire.value+=' [non] '">
<img src="images/3.gif" style="CURSOR: hand" onClick="commentaire.value+=' [wow] '">
<img src="images/4.gif" style="CURSOR: hand" onClick="commentaire.value+=' [cool] '">
<img src="images/5.gif" style="CURSOR: hand" onClick="commentaire.value+=' [ncool] '">
<img src="images/6.gif" style="CURSOR: hand" onClick="commentaire.value+=' [zZz] '">
<img src="images/7.gif" style="CURSOR: hand" onClick="commentaire.value+=' [bien] '">
<img src="images/8.gif" style="CURSOR: hand" onClick="commentaire.value+=' [dead] '">
<img src="images/9.gif" style="CURSOR: hand" onClick="commentaire.value+=' [mouai] '">
<img src="images/10.gif" style="CURSOR: hand" onClick="commentaire.value+=' [triste] '">
<img src="images/11.gif" style="CURSOR: hand" onClick="commentaire.value+=' [clin] '">
<img src="images/12.gif" style="CURSOR: hand" onClick="commentaire.value+=' [perplexe] '">
<img src="images/13.gif" style="CURSOR: hand" onClick="commentaire.value+=' [hehe] '">
<img src="images/14.gif" style="CURSOR: hand" onClick="commentaire.value+=' [choc] '">
<INPUT TYPE="submit" value="Valider" name="envoyer">
</p>
</div>
</form>
<div align="center">
<?php
if (isset($submit) AND ($titrems <> "Titre du message") AND ($pseudo <> "Pseudo/Nom") AND ($commentaire <> ""))
{
$fp = fopen("commentaires.txt","a");
$commentaire = str_replace("\'", "'", $commentaire);
$titrems = str_replace("\'", "'", $titrems);
$titrems = str_replace(">", ">", $titrems);
$titrems = str_replace("<", "<", $titrems);
$pseudo = str_replace("\'", "'", $pseudo);
$commentaire = str_replace('\"', '"', $commentaire);
$titrems = str_replace('\"', '"', $titrems);
$pseudo = str_replace('\"', '"', $pseudo);
$pseudo = str_replace("<", "<", $pseudo);
$pseudo = str_replace(">", ">", $pseudo);
$commentaire = str_replace(">", ">", $commentaire);
$commentaire = str_replace("<", "<", $commentaire);
$commentaire = str_replace(",", ", ", $commentaire);
$commentaire = str_replace(" ,", ", ", $commentaire);
$commentaire = str_replace(" , ", ", ", $commentaire);
$commentaire = str_replace(" .", ". ", $commentaire);
$commentaire = str_replace(" . ", ". ", $commentaire);
$commentaire = str_replace(CHR(10), "<br>", $commentaire);
$commentaire = str_replace("[LOL]", "<img align='absmiddle' border='0' src='images/0.gif'>", $commentaire);
$commentaire = str_replace("[oui]", "<img align='absmiddle' border='0' src='images/1.gif'>", $commentaire);
$commentaire = str_replace("[non]", "<img align='absmiddle' border='0' src='images/2.gif'>", $commentaire);
$commentaire = str_replace("[wow]", "<img align='absmiddle' border='0' src='images/3.gif'>", $commentaire);
$commentaire = str_replace("[cool]", "<img align='absmiddle' border='0' src='images/4.gif'>", $commentaire);
$commentaire = str_replace("[ncool]", "<img align='absmiddle' border='0' src='images/5.gif'>", $commentaire);
$commentaire = str_replace("[zZz]", "<img align='absmiddle' border='0' src='images/6.gif'>", $commentaire);
$commentaire = str_replace("[bien]", "<img align='absmiddle' border='0' src='images/7.gif'>", $commentaire);
$commentaire = str_replace("[dead]", "<img align='absmiddle' border='0' src='images/8.gif'>", $commentaire);
$commentaire = str_replace("[mouai]", "<img align='absmiddle' border='0' src='images/9.gif'>", $commentaire);
$commentaire = str_replace("[triste]", "<img align='absmiddle' border='0' src='images/10.gif'>", $commentaire);
$commentaire = str_replace("[clin]", "<img align='absmiddle' border='0' src='images/11.gif'>", $commentaire);
$commentaire = str_replace("[perplexe]", "<img align='absmiddle' border='0' src='images/12.gif'>", $commentaire);
$commentaire = str_replace("[hehe]", "<img align='absmiddle' border='0' src='images/13.gif'>", $commentaire);
$commentaire = str_replace("[choc]", "<img align='absmiddle' border='0' src='images/14.gif'>", $commentaire);
// Date
$date = getdate();
$mois{1} = "Janvier";
$mois{2} = "Février";
$mois{3} = "Mars";
$mois{4} = "Avril";
$mois{5} = "Mai";
$mois{6} = "Juin";
$mois{7} = "Juillet";
$mois{8} = "Août";
$mois{9} = "Septembre";
$mois{10} = "Octobre";
$mois{11} = "Novembre";
$mois{12} = "Décembre";
$jour = $date['mday'];
$mois = $mois{$date['mon']};
$annee = $date['year'];
$temps = "le <i>";
$temps .= $jour;
$temps .= " ";
$temps .= $mois;
$temps .= " ";
$temps .= $annee;
$temps .= "</i> ";
// Fin Date
fputs($fp, "$titrems|$commentaire|$pseudo|$note|$temps");
fputs($fp,"£");
fclose($fp);
echo("<script language=\"javascript\">document.location=\"vote.php\";</script>");
}
elseif (isset($submit))
{
echo("<script language=\"javascript\">alert('Vous devez renseigner votre Nom, le Titre de votre message et laisser un message!');</script>");
}
?>
--------------------------------------------------
<?php
session_start();
//echo "<pre>"; print_r($_POST); echo"</pre>";
if($_POST['submit']<>'Valider') {
//if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
echo "Merci pour votre message: ".$_POST['message'];
unset($_SESSION['security_code']);
} else {
echo 'Désolé, le code de sécurité est invalide';
}
} else {
?>
<form action="vote.php" method="post">
<label for="name">Name: </label><input type="text" name="name" id="name" /><br />
<label for="email">Email: </label><input type="text" name="email" id="email" /><br />
<label for="message">Message: </label><textarea rows="5" cols="30" name="message" id="message"></textarea><br />
<img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
<label for="security_code">Security Code: </label><input id="security_code" name="security_code" type="text" /><br />
<input type="submit" name="submit" value="Envoyer" />
</form>
<?php
}
?>
-
Bonsoir,
avec le changement plus rien ne fonctionne -
Bonjour
je ne peux le tester mais essayons de changer cette ligne dans le premier fichier
<INPUT TYPE="submit" value="Valider" name="submit">
en mettant :
<INPUT TYPE="submit" value="Valider" name="envoyer">
-
Je comprends tjours pas :$
tu veux pas posté la rectification avec tes explications stp?
Parce que mon système de code accepte les codes quans ils sont bon et refuse les autres quans ils sont faux.
Mon problème vient seulment qu'il valide pas mon commentaires.txt meme si je donne le bon code il va m'afficher:
Merci pour votre message 'blablablabla' mais le commentaire n'apparatra pas sur la page :$
Je sais pas trop si on parle de la même chose... désolé si je m'exprime mal
as tu testé le code? -
bonsoir
le premier formulaire enregiste le commentaire, la note, le pseudo, la date dans un simple fichier txt et se débranche sur vote.php où la varaible submit est vraie .
alors on test le code de securité qui lui n'a pas encore été remplit. le test est donc faux et renvoit echo 'Désolé, le code de sécurité est invalide';
JL, m'enfin c'est juste mon avis @+
- 1
- 2
Suivant