dophee | Bonjour,
Je suis nulle en php.
J'ai un formulaire de contact qui fonctionne auquel je voudrais ajouter un contrôle.
Que ce soit SolveMedia, Captchme ou recaptcha, les indications semblent les mêmes mais je ne m'en sors pas.
Pas de problème pour afficher le Captcha, mais impossible pour moi de le faire fonctionner.
Formulaire Code :
- <form method="post" action="contact.form.php" name="contactform" id="contactform">
- <fieldset>
- <div class="clear"></div>
- <div class="input_label user"><label>Nom</label></div>
- <input name="name" type="text" id="name" class="name" size="30" value="" />
- <div class="clear"></div>
- <div class="input_label user_email"><label>Email</label></div>
- <input name="email" type="text" id="email" class="email" size="30" value="" />
- <div class="clear"></div>
- <div class="input_label user_subject"><label>Sujet</label></div>
- <input name="subject" type="text" id="subject" class="subject" size="30" value="" />
- <div class="clear"></div>
- <textarea name="comments" cols="40" rows="3" id="comments"></textarea>
- <div class="clear"></div>
- <div class="grid_7 alpha">
- <?php require_once("solvemedialib.php" ); //include the Solve Media library
- echo solvemedia_get_html("j'ai bien ma clé dans l'originale" );
- ?>
- <input type="submit" class="button white contact_submit" id="submit" value="Send your message" />
- </div>
- <div class="clear"></div>
- </fieldset>
-
- </form>
|
contact.form.php
Code :
- // Debut code captcha
- <?php
- require_once("solvemedialib.php" );
- $privkey="mes clés sont ok dans l'originale";
- $hashkey="mes clés sont ok dans l'originale";
- $solvemedia_response = solvemedia_check_answer($privkey,
- $_SERVER["REMOTE_ADDR"],
- $_POST["adcopy_challenge"],
- $_POST["adcopy_response"],
- $hashkey);
- if (!$solvemedia_response->is_valid) {
- //handle incorrect answer
- print "Error: ".$solvemedia_response->error;
- }
- else {
- //process form here
- }
- // Fin code Captcha.
- // Code formulaire qui fonctionne.
- if(!$_POST) exit;
- // Email address verification, do not edit.
- function isEmail($email) {
- return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
- }
- if (!defined("PHP_EOL" )) define("PHP_EOL", "\r\n" );
- $name = $_POST['name'];
- $email = $_POST['email'];
- $subject = $_POST['subject'];
- $comments = $_POST['comments'];
- if(trim($name) == '') {
- echo '<div class="error_message">Attention! Vous devez entrer votre nom.</div>';
- exit();
- } else if(trim($email) == '') {
- echo '<div class="error_message">Attention! Vous devez entrer une adresse mail valide.</div>';
- exit();
- } else if(!isEmail($email)) {
- echo '<div class="error_message">Attention! Vous avez entré une adresse mail invalide, essayez à nouveau.</div>';
- exit();
- }
- if(trim($subject) == '') {
- echo '<div class="error_message">Attention! Indiquez un sujet.</div>';
- exit();
- } else if(trim($comments) == '') {
- echo '<div class="error_message">Attention! Vous devez entrer un message.</div>';
- exit();
- }
- if(get_magic_quotes_gpc()) {
- $comments = stripslashes($comments);
- }
- $address = "admin@hidden.fr";
- $e_subject = 'You\'ve been contacted by ' . $name . '.';
- $e_body = "Formulaire de $name concernant $subject, message ci dessous." . PHP_EOL . PHP_EOL;
- $e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
- $e_reply = "Vous pouvez contacter $name par email, $email ou phone $phone";
- $msg = wordwrap( $e_body . $e_content . $e_reply, 70 );
- $headers = "From: $email" . PHP_EOL;
- $headers .= "Reply-To: $email" . PHP_EOL;
- $headers .= "MIME-Version: 1.0" . PHP_EOL;
- $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
- $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;
- if(mail($address, $e_subject, $msg, $headers)) {
- // Email has sent successfully, echo a success page.
- echo "<fieldset>";
- echo "<div id='success_page'>";
- echo "<h2>Votre message a bien été envoyé.</h2>";
- echo "<p>Merci <span class='text-green'>$name</span>, votre message nous a bien été transmis, nous ferons tout pour vous répondre rapidement.</p>";
- echo "</div>";
- echo "</fieldset>";
- } else {
- echo 'ERROR!';
- }
- ?>
|
Je me doute bien que j'ai fait beaucoup d'erreurs.
Si quelqu'un avait la gentillesse de me les expliquer.
Concrètement, la validation du formulaire n'est toujours pas reliée à la réussite du code antispam. J'ai donné SolveMedia en exemple, je ne suis pas sûre de l'utiliser mais son design me convient.
|