IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Captcha avec les if et else


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut Captcha avec les if et else
    salut, déjà je précise que c'est pas moi qui ai fait le code donc c'est pour ça que je pige pas certains trucs.

    Pour éviter d'avoir 50 commentaires chaque jour à cause de bots, j'essaye de voir pour un captcha textuel, image ou un champ caché. Mais le truc c'est que j'arrive pas à placer le reste de mon code initial dans le if et le else.

    genre si les 4 numéros sont bien écrits, alors on dit ok c bon le commentaire est bien ajouté et sinon les numéros sont pas bons.

    Par exemple j'ai ça

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     session_start();
    ?>
     
    <form method="POST" action="">
    <h3>Quel est ce chiffe? </h3>
    <img src="captcha.php" /><br />
    <input type="text" name="captcha" style="width:70px"/><br />
    <input type="submit" />
    </form>
     
    <?php 
    if($_POST['captcha']){
    if($_POST['captcha']==$_SESSION['captcha']){
    echo 'Bingo !';
    }
    else {
    echo '<h3 style="color:red">Oups !</h3>';
    }
    }
    ?>

    et le code de mon captcha

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    session_start();
    $_SESSION['captcha'] = rand(1000,9999);
     
    $img = imagecreatetruecolor(70, 30);
    $fill_color=imagecolorallocate($img,255,255,255);
    imagefilledrectangle($img, 0, 0, 70, 30, $fill_color);
     
    $text_color=imagecolorallocate($img,10,10,10);
    $font = './28DaysLater.ttf';
    imagettftext($img, 23, 0, 5,30, $text_color, $font, $_SESSION['captcha']);
     
    header("Content-type: image/jpeg");
    imagejpeg($img);
    imagedestroy($img);

    ça marche mais j'arrive pas à placer mon code initial dans le if

    voila un bout de mon code index, c'est le formulaire de commentaires

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <form action="index.php" method="POST">
    			<?php
    			echo '&nbsp;&nbsp;<input type="text" name="Auteur" id="Auteur" value="" /> <span class="Small"><label for="Auteur">Pseudo (requis)</label></span><br />';
    			echo '&nbsp;&nbsp;<textarea type="text" class="Postcomment" name="Message" id="Message" rows="4" cols="70"></textarea><br />';
     
    			?>&nbsp;
    <br />
    <?php
    			echo '<input type="hidden" name="id_new" value="'.$id.'" />';
     
    			echo '&nbsp;&nbsp;<input type="submit" value="Poster le commentaire" />';
    		?></form><br /><?php
    		echo '</div>';
    	}
    	else {
    		echo '<strong>Erreur:</strong><br />Une erreur est survenue lors de l\'exécution du script.<br />Veuillez recommencez dans quelques minutes.';
    	}
    }
     
     
     
    elseif( isset($_POST['id_new']) AND is_numeric($_POST['id_new']) AND isset($_POST['Auteur']) AND isset($_POST['Message']) AND isset($_POST['id_new']) AND $_POST['Auteur'] != '' AND $_POST['Message'] != '' AND strlen($_POST['Auteur']) >= 3 AND strlen($_POST['Message']) > 10) {
    	// Voir  en haut le code d'insertion dans la BD
    	// Ici, on affiche un texte qui dit que le commentaire est envoyé au cas ou l'actualisation de la page n'est pas lieu ou qu'il soit lent à charger.
    	echo '<strong>Succés :</strong><br />Le commentaire a bien été posté.<br /><a href="index.php?id='.$idn.'">Revenir à la nouveauté</a>.';
    }
     
     
     
    else {	// On affiche les nouveautés (page principale donc)
     
    	// on a tenté d'envoyer un commentaire mais il est trop court, message d'erreur :
    	if( isset($_POST['Auteur']) AND isset($_POST['Message']) AND (strlen($_POST['Auteur']) <= 2 OR strlen($_POST['Message']) < 2)) {
    		echo '<br />&nbsp;&nbsp;Votre commentaire fais moins de 3 caractères ou votre pseudo fait moins de 3 caractères.<br />Veuillez poster un vrai commentaire !<br /><br />';
    	}
    	else {
    		echo '&nbsp;&nbsp;';
    	}

    Si vous pouvez m'éclairer, ça m'avancerai pas mal ^^ je vous remercie !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est plus un problème de logique que de PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    elseif(!isset($_POST['captcha']) || $_POST['captcha'] != $_SESSION['captcha']){
         // captcha pas bon
    }
    elseif( isset($_POST['id_new']) AND is_numeric($_POST['id_new']) AND isset($_POST['Auteur']) AND isset($_POST['Message']) AND isset($_POST['id_new']) AND $_POST['Auteur'] != '' AND $_POST['Message'] != '' AND strlen($_POST['Auteur']) >= 3 AND strlen($_POST['Message']) > 10) {
        .......
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    nop ça marche pas, je peux répondre en ignorant le captcha et en plus dans mon index avec mes news ( pas ou ya mes commentaires ) il m'affiche le code qu'il y a entre le elseif

    sinon j'ai test ça, ça devrait marcher mais non^^

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    	<form action="index.php" method="POST">
    			<?php
    			echo '&nbsp;&nbsp;<input type="text" name="Auteur" id="Auteur" value="" /> <span class="Small"><label for="Auteur">Pseudo (requis)</label></span><br />';
    			echo '&nbsp;&nbsp;<textarea type="text" class="Postcomment" name="Message" id="Message" rows="4" cols="70"></textarea><br />';
    			echo '<h3>Quel est ce chiffe? </h3>
    <img src="captcha.php" /> &nbsp;
    <input type="text" name="captcha" style="width:70px"/>';
    			?>&nbsp;
    <br />
    <?php
    			echo '<input type="hidden" name="id_new" value="'.$id.'" />';
     
    			echo '&nbsp;&nbsp;<input type="submit" value="Poster le commentaire" />';
    		?></form><br /><?php
    		echo '</div>';
    	}
    	else {
    		echo '<strong>Erreur:</strong><br />Une erreur est survenue lors de l\'exécution du script.<br />Veuillez recommencez dans quelques minutes.';
    	}
    }
     
    elseif( isset($_POST['id_new']) AND is_numeric($_POST['id_new']) AND isset($_POST['Auteur']) AND isset($_POST['Message']) AND isset($_POST['id_new']) AND isset($_POST['captcha']) AND $_POST['Auteur'] != '' AND $_POST['Message'] != '' AND strlen($_POST['Auteur']) >= 3 AND strlen($_POST['Message']) > 10) OR $_POST['captcha'] == $_SESSION['captcha'] {
    	// Voir  en haut le code d'insertion dans la BD
    	// Ici, on affiche un texte qui dit que le commentaire est envoyé au cas ou l'actualisation de la page n'est pas lieu ou qu'il soit lent à charger.
    	echo '<strong>Succés :</strong><br />Le commentaire a bien été posté.<br /><a href="index.php?id='.$idn.'">Revenir à la nouveauté</a>.';
    }
     
    else {	// On affiche les nouveautés (page principale donc)
     
    	// on a tenté d'envoyer un commentaire mais il est trop court, message d'erreur :
    	if( isset($_POST['Auteur']) AND isset($_POST['Message']) AND (strlen($_POST['Auteur']) AND isset($_POST['captcha']) <= 2 OR strlen($_POST['Message']) < 2)) OR $_POST['captcha'] != $_SESSION['captcha'] {
    		echo '<br />&nbsp;&nbsp;Votre commentaire fais moins de 3 caractères ou votre pseudo fait moins de 3 caractères.<br />Veuillez poster un vrai commentaire !<br /><br />';
    	}
    	else {
    		echo '&nbsp;&nbsp;';
    	}

    enfaite faut rajouter un isset pour dire qu'il existe et après on crée l'égalité ou l'inégalité c'est ça ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    et en plus dans mon index avec mes news ( pas ou ya mes commentaires ) il m'affiche le code qu'il y a entre le elseif
    Je n'ai pas du tout compris ce que tu voulais dire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Par défaut
    j'ai simplement mis un bout du code, celui qui fait référence au formulaire pour les commentaires, sinon la page entière c'est ma page index soit les news (et dedans il y a un lien pour les commentaires qui me dirigent vers ce bout de code avec tous les commentaires + le formulaire pour faire un commentaire)

    donc, avec ton code, quand je suis dans les commentaires d'une new ça marche sauf que je peux poster un commentaire sans tenir compte du captcha, mais si je suis dans à l'endroit où ya les news il m'affiche ce que je mets à la place de ça "// captcha pas bon"

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Montre nous tes codes plutôt parce que tes explications n'ont ni queue ni tête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/03/2011, 21h45
  2. Réponses: 16
    Dernier message: 02/04/2010, 21h14
  3. [XL-2003] Prblème avec les if , else end if
    Par doudou8mc dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/11/2009, 13h10
  4. Problème avec les "else if"
    Par ookki dans le forum C++
    Réponses: 5
    Dernier message: 22/06/2008, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo