• Welcome to the Chevereto user community!

    Here users from all over the world gather around to learn the latest about Chevereto and contribute with ideas to improve the software.

    Please keep in mind:

    • 😌 This community is user driven. Be polite with other users.
    • 👉 Is required to purchase a Chevereto license to participate in this community (doesn't apply to Pre-sales).
    • 💸 Purchase a Pro Subscription to get access to active software support and faster ticket response times.

[Résolu] Integration d' un captcha dans la page contact

Status
Not open for further replies.

jfrdavid

Chevereto Member
Bonjour

Je veux intégrer un captcha www.phpcaptcha.orgdans la page contact a première vue
cela a l'air simple j'arrive a le faire fonctionner mais il ne valide pas le code saisie le mail sans va quant meme.

Cela fait 2 jours que je cherche à intégrer mais rien affaire. !

Je joint ce que j'ai déjà fait

PHP:
<?php if(!defined('access') or !access) die('This file cannot be directly accessed.'); ?>
<?php include_theme_header(); ?>

<div id="wrap">
    <div id="top"><a href="<?php show_base_url(); ?>"><img src="<?php show_theme_imgdir(); ?>logo.png" alt="Chevereto" /></a></div>
    <div id="content" class="pages page_contact">
        <h1>Contact us</h1>
        <p>This is an example page for your chevereto site. You can edit this file located in <code>/content/themes/Peafowl/pages/contact.php</code></p>
        <p>As you may see, this example is quite different from others because it features a simple contact form using PHPMailer.</p>
        <p>Please notice that  you need to tweak the code on <code>contact.php</code> before this works.</p>
        
        <?php                
            if ($_POST['name'] and $_POST['email'] and $_POST['message']) {
                $result  = true;
                $name    = $_POST['name'];
                $email   = trim($_POST['email']);
                $message = $_POST['message'];
                
                $to = 'somemail@fakemail.com';
                $subject = 'Contact form example';
            
                $mailbody .= "Name: ".$name."\n";
                $mailbody .= "E-mail: ".$email."\n\n";
                
                $mailbody .= "Message: ".$message."\n\n";
                        
                $mailbody .= "IP: ".getenv("REMOTE_ADDR")."\n";
                $mailbody .= "Browser: ".getenv("HTTP_USER_AGENT")."\n\n";
                
                $use_phpmailer = false; // true: uses php mailer | false: uses the default mail() function
                
                // We are going to check the fields...
                if(check_email_address($email) and check_value($name) and check_value($message)) {
                    // Waht are we using?
                    if($use_smtp) {
                        // Hail PHPMailer!
                        // require_once __PATH_CLASSES__ . 'class.phpmailer.php'; //PHP MAILER IS NOT INCLUDED BY DEFAULT. GET IT ON [url]http://sourceforge.net/projects/phpmailer/[/url]
                        $mail = new phpmailer();
                        $mail->Mailer = "smtp";
                        $mail->Host = ""; // SMTP host
                        $mail->SMTPAuth = true;
                        $mail->Username = "";
                        $mail->Password = "";
                        $mail->Timeout = 30;
                        $mail->From = $email; 
                        $mail->FromName = $name;
                        $mail->AddAddress($to);
                        $mail->Subject = $subject;
                        $mail->Body = $mailbody;
                        $success = $mail->Send();
                    } else {
                        $success = mail($to, $subject, $mailbody); // $to, $subject, $mailbody
                    }
                    
                    
include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
$securimage = new Securimage();    

if ($securimage->check($_POST['captcha_code']) == false) {
  // Le code est incorrect
  // Vous devriez gérer l'erreur afin que le processeur ne continue pas la forme
  // Ou vous pouvez utiliser le code suivant s'il n'ya pas de validation ou que vous ne savez pas comment
  echo "Le code de securite entre est incorrect.<br /><br />";
  echo "S'il vous plait aller <a href='javascript:history.go(-1)'>retour</a> et essayez a nouveau.";
  exit;
}                        
            
            
                    // Succes true...
                    if($success) {
                        $output = 'Form submited, we will contact you soon.';
                        $contact_class = 'contact-ok';
                    } else { // Oh no... errors.
                        $output = 'There was an error sending your request. Please try again later.';
                        $contact_class = 'contact-error';
                    }
                } else { // Invalid values...
                    $output = 'Please fill correct all the form fields.';
                    $contact_class = 'contact-error';
                }
            }
        ?>
        <?php if ($result) : ?>
        <div class="contact-result <?php echo $contact_class; ?>"><?php echo $output; ?></div>
        <?php endif; ?>
        
        
        <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
            <div><label for="name">Name:</label> <input type="text" name="name" id="name" /></div>
            <div><label for="email">E-mail:</label> <input type="text" name="email" id="email" /></div>
            <div><label for="message">Message:</label> <textarea name="message" id="message" ></textarea></div>
   
   
<label for="message">Captchat code :</label> <input type="text" name="captcha_code" size="30" maxlength="6" />                        
<div><img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" /></div>              
<a href="#" onclick="document.getElementById('captcha').src = '/securimage/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a>    
    
    
            <div><input type="submit" value="Send form" class="send-form"/></div>
        </form>
    </div>
</div><!-- wrap -->

<?php include_theme_footer(); ?>

Merci de pouvoir m'expliquer comment procéder et pourquoi le captcha n'est pas actif

Bonsoir
 
Ton code était a 99.9% correct, ta seul erreur c'est que tu fesais le vérification captcha après l'envoye de l'email... ce qui ne sert pas à grand chose...

Voici la version corrigé, j'ai aussi déplacer le include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php'; dans le haut de la page, car pour le normes, il est toujours préférable de mettre les includes de classes php dans le haut...

Je ne peux pas le tester, mais je pense que tout devrais être correct, n'hésite pas à répondre s'il y a un problème.

PHP:
<?php if(!defined('access') or !access) die('This file cannot be directly accessed.'); ?>
<?php 
	include_theme_header(); 
	include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
?>
 
<div id="wrap">
    <div id="top"><a href="<?php show_base_url(); ?>"><img src="<?php show_theme_imgdir(); ?>logo.png" alt="Chevereto" /></a></div>
    <div id="content" class="pages page_contact">
        <h1>Contact us</h1>
        <p>This is an example page for your chevereto site. You can edit this file located in <code>/content/themes/Peafowl/pages/contact.php</code></p>
        <p>As you may see, this example is quite different from others because it features a simple contact form using PHPMailer.</p>
        <p>Please notice that  you need to tweak the code on <code>contact.php</code> before this works.</p>
 
        <?php                
            if ($_POST['name'] and $_POST['email'] and $_POST['message']) 
			{
                $result  = true;
                $name    = $_POST['name'];
                $email   = trim($_POST['email']);
                $message = $_POST['message'];
 
                $to = 'somemail@fakemail.com';
                $subject = 'Contact form example';
 
                $mailbody .= "Name: ".$name."\n";
                $mailbody .= "E-mail: ".$email."\n\n";
 
                $mailbody .= "Message: ".$message."\n\n";
 
                $mailbody .= "IP: ".getenv("REMOTE_ADDR")."\n";
                $mailbody .= "Browser: ".getenv("HTTP_USER_AGENT")."\n\n";
 
                $use_phpmailer = false; // true: uses php mailer | false: uses the default mail() function
 
 				$securimage = new Securimage();    
					 
				if ($securimage->check($_POST['captcha_code']) == false) {
					  // Le code est incorrect
					  // Vous devriez gérer l'erreur afin que le processeur ne continue pas la forme
					  // Ou vous pouvez utiliser le code suivant s'il n'ya pas de validation ou que vous ne savez pas comment
					 echo "Le code de securite entre est incorrect.<br /><br />";
					 echo "S'il vous plait aller <a href='javascript:history.go(-1)'>retour</a> et essayez a nouveau.";
					  exit;
				}  
 
                // We are going to check the fields...
                if(check_email_address($email) and check_value($name) and check_value($message)) {
                    // Waht are we using?
                    if($use_smtp) {
                        // Hail PHPMailer!
                        // require_once __PATH_CLASSES__ . 'class.phpmailer.php'; //PHP MAILER IS NOT INCLUDED BY DEFAULT. GET IT ON [url]http://sourceforge.net/projects/phpmailer/[/url]
                        $mail = new phpmailer();
                        $mail->Mailer = "smtp";
                        $mail->Host = ""; // SMTP host
                        $mail->SMTPAuth = true;
                        $mail->Username = "";
                        $mail->Password = "";
                        $mail->Timeout = 30;
                        $mail->From = $email; 
                        $mail->FromName = $name;
                        $mail->AddAddress($to);
                        $mail->Subject = $subject;
                        $mail->Body = $mailbody;
                        $success = $mail->Send();
                    } else {
                        $success = mail($to, $subject, $mailbody); // $to, $subject, $mailbody
                    }                      
 
 
                    // Succes true...
                    if($success) {
                        $output = 'Form submited, we will contact you soon.';
                        $contact_class = 'contact-ok';
                    } else { // Oh no... errors.
                        $output = 'There was an error sending your request. Please try again later.';
                        $contact_class = 'contact-error';
                    }
                } else { // Invalid values...
                    $output = 'Please fill correct all the form fields.';
                    $contact_class = 'contact-error';
                }
            }
        ?>
        <?php if ($result) : ?>
        <div class="contact-result <?php echo $contact_class; ?>"><?php echo $output; ?></div>
        <?php endif; ?>
 
 
        <form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
            <div><label for="name">Name:</label> <input type="text" name="name" id="name" /></div>
            <div><label for="email">E-mail:</label> <input type="text" name="email" id="email" /></div>
            <div><label for="message">Message:</label> <textarea name="message" id="message" ></textarea></div>
 
 
<label for="message">Captchat code :</label> <input type="text" name="captcha_code" size="30" maxlength="6" />                        
<div><img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" /></div>              
<a href="#" onclick="document.getElementById('captcha').src = '/securimage/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a>    
 
 
            <div><input type="submit" value="Send form" class="send-form"/></div>
        </form>
    </div>
</div><!-- wrap -->
 
<?php include_theme_footer(); ?>
 
Bonsoir Danny.Domb

Je te remercie de m'avoir aider cela fait exactement 2 semaine que je me suis mis au php et crois moi cela n'est pas évident pour moi

Bon cela fonctionne parfaitement aucun problème

65l4ulq


Merci
 
Status
Not open for further replies.
Back
Top