Aller au contenu

Norbert_404

Actif
  • Compteur de contenus

    18
  • Inscrit(e) le

  • Dernière visite

Réputation sur la communauté

0 Neutre
  1. Bonjour à tous ! Juste une question : Le mailer en php proposé dans ce sujet permet-il de cacher l'email quand la page est aspirée ? Je me pose cette question car apparemment mon site a été aspiré... PS: j'utilise aussi le captcha proposé par Byc et j'ai ajouté dans le répertoire qui contient le formulaire php un fichier index.html pour éviter d'afficher le contenu de ce même répertoire...
  2. Bonjour, Merci pour vos réponses, je vais tester vos codes... Cependant, aprés un trés long aprés-midi à chercher la combine, j'ai enfin trouvé quelqu echose qui semble marcher à tout les coups : if(empty($_POST['name'])) { $errormessages[] = 'Veuillez saisir votre nom.'; $errorfields[] = 'name'; } else { if(eregi("@", $name)){ $errormessages[] = 'Veuillez saisir uniquement votre nom.'; $errorfields[] = 'name'; } } J'ai ajouté tout simplement un if(eregi("@", $name)) qui détecte la présence d'un @ dans le champ nom. Ainsi l'utilisateur ne peut que rentrer tout ce qu'il sauf un email.... PS: si ja fait ça, c'est pour éviter les injection d'en-têtes... Voila a+
  3. Norbert_404

    Validation champ nom

    Bonjour, J'ai un formulaire de recommandation et je souhaite le sécuriser un maximum contre les injections. Je souhaite ajouter un code qui empeche l'ajout d'un email dans le nom, de même que les \n et les \r Mais je tourne autour du pot... J'arrive pas if(empty($_POST['name'])) { $errormessages[] = 'Please enter your name.'; $errorfields[] = 'name'; } J'ai fais des essais de ce style mais ça ne marche pas: if(empty($_POST['name'])) { $errormessages[] = 'Please enter your name.'; $errorfields[] = 'name'; } else { if(!eregi("@"or"\n"or"\r", $_POST['name'])) { $errormessages[] = 'Please enter a proper name.'; Question supplémentaire : Est-ce nécessaire d'ajouter au fomulaire de recommandation un captcha ? Merci beaucoup !
  4. C'est pas grave ;-) Merci tout de meêm pour ton apport
  5. Yep c'est intéressant en effet ! Merci ;-) Mais bon j'ai un captcha non visuel, peut être je ne suis pas concerné ? A surveiller de prés donc...
  6. Merci beaucoup ! je viens de tester, ça marche. J'ai finalement opter pour une liste déroulante à 2 choix Pour info et si ça peut aider, je vous donne le code : <select name="choix " id="choix "> <option value="<?php echo htmlspecialchars("choix: Yes") ?>" />Red</option> <option value="<?php echo htmlspecialchars("choix : No") ?>"/>Blue</option> </select> if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"].$_POST["choix],$entete)){ Je vais rajouter un retour à la ligne aprés la concaténation pour avoir un message plus lisible : if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"]./n$_POST["choix],$entete)){
  7. Bonjour à tous ! Bonne année 2007 ! Mais je bute sur un point : Comment inclure dans le message de l'email que je reçois la valeur d'une checkbox, bouton radio, etc... ? J'ai l'impression que tout se passe dans le code ci-dessous... (ligne 4) $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n"; $entete .= "Return-Path: ". $email_webmaster . "\n"; $entete .= "MIME-Version: 1.0"; if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"],$entete)){ // mail envoyé e J'ai remplacé $_POST["message"] par $_POST["checkbox"] pour avoir dans mon email la valeur du checkbox par exemple.ça marche nickel. En revanche je ne reçois pas de message puisque le script envoie la valeur du checkbox à la place du message... Donc comment intégrer dans le message la valeur d'une checkbox, liste,... ? Ps: J'ai éssayé de concaténer dans $_POST["message"] la valeur "message" avec "checkbox" pour obtenir ceci : $_POST["message.checkbox"] en espérant que la valeur du checkbox soit incluse dans le message... ça marche pas non plus... Je suis perdu !
  8. Norbert_404

    WAnewsletter

    Bonjour à tous ! Bonne année 2007 ! Moi aussi je suis dans le même cas que vous tous : je cherche un moyen de récupérer l'email depuis un formulaire php vers wanewsletter... J'ai trouvé sur le forum de wanewsletter un topic et le code pour faire cela : http://forum.phpcodeur.net/viewtopic.php?t=3952 Reste à savoir ou mettre ce code : * * Génère le register_key pour l'inscription à la newsletter. * Code de wanewsletter */ function generate_key($num_char = 32, $use_uniqid = true){ if( $use_uniqid == true ){ srand((double) microtime() * 1000000); $rand_str = md5(uniqid(rand())); }else{ $rand_str = md5(microtime()); } return ( $num_char >= 32 ) ? $rand_str : substr($rand_str, 0, $num_char); } /* * Gestion de l'utilisateur dans wanewsletter. */ function setWaUser($pseudo, $mail, $format, $action){ // Selon l'action on manage l'utilisateur ou on le supprime. if ( !get_magic_quotes_gpc() ) { $pseudo = mysql_real_escape_string($pseudo); $mail = mysql_real_escape_string($mail); } if ( $action == "manage" ){ // On vérifie si le mail est déja dans la base. // Au passage on en profite pour récupérer le abo_id qui sera utile pour l'update. $query_user = "SELECT abo_id FROM wa_abonnes WHERE abo_pseudo = '".$pseudo."' AND abo_email = '".$mail."'"; $exe_query_user = mysql_query ( $query_user ); $row_query_user = mysql_fetch_row ( $exe_query_user ); if ( $row_query_user[0] > 0 ){ // Si l'email existe on fait un update des valeurs dans la table wa_abo_liste. $query_up = "UPDATE wa_abo_liste SET format = ".$format.", register_date = ".time()." WHERE abo_id = ".$row_query_user[0]." LIMIT 1"; $exe_query_up = mysql_query ( $query_up ); }else{ // L'email n'existe pas donc on cré l'utilisateur. // tout d'abord dans la table wa_abonnes. $query_abo = "INSERT INTO wa_abonnes (abo_pseudo, abo_email, abo_status) VALUES ('".$pseudo."', '".$mail."', 1)"; $exe_query_abo = mysql_query ( $query_abo ); // Comme le champ abo_id n'est pas auto_incrementé il faut lui attribué le même manuellement. $id_abo = mysql_insert_id (); // et ont insert dans la base wa_abo_liste. $query_liste = "INSERT INTO wa_abo_liste (abo_id, liste_id, format, register_key, register_date, confirmed) VALUES (".$id_abo.", 2, ".$format.", '".generate_key(20)."', ".time().", 1)"; $exe_query_liste = mysql_query ( $query_liste ); } }elseif ( $action == "delete" ){ // L'utilisateur veut etre supprimer. On récupère sont abo_id. $query_user = "SELECT abo_id FROM wa_abonnes WHERE abo_pseudo = '".$pseudo."' AND abo_email = '".$mail."'"; $exe_query_user = mysql_query ( $query_user ); $row_query_user = mysql_fetch_row ( $exe_query_user ); // On commence par la table wa_abo_liste. $query_del_list = "DELETE FROM wa_abo_liste WHERE abo_id = ".$row_query_user[0]." LIMIT 1"; $exe_query_del_list = mysql_query ( $query_del_list ); // Et on termine par la table wa_abonnes. $query_del_abo = "DELETE FROM wa_abonnes WHERE abo_id = ".$row_query_user[0]." LIMIT 1"; $exe_query_del_abo = mysql_query ( $query_del_abo ); } } Voila en espérant faire avancer le schmilbilck...
  9. Meric pour le lien vers alsacréation !!! Pour peaufiner mon formulaire, je souhaite inclure une checkbox ou une boite déroulante avec "oui" (valeur par défaut) et "non" comme valeurs possibles pour donner le choix au visituer de s'inscrire à ma newsletter. Je souhaite récupérer dans l'email son message - ce qui est normal - mais également une valeur comme "newsletter : oui" afin de m'indiquer que la personne souhaite s'inscrire... J'ai trouvé un code php pour cela mais je tourne autour du pot pour le faire fonctionner : <?php if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur if ($etat=="erreur"){ //le formulaire a été soumis avec une erreur echo "<p><strong>".$erreur."</strong></p>\n"; // afficher le message d'erreur } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <p><label for="email_expediteur">Your email :</label><br /> <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php if (!empty($_POST["email_expediteur"])) { // l'adresse email de l'expéditeur a été saisie: la réafficher echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES); } ?>" /> </p> <p><label for="titre">Subject :</label><br /> <input type="text" size="40" name="titre" id="titre" value="<?php if (!empty($_POST["titre"])) { // le titre du message a été saisi: le réafficher echo htmlspecialchars($_POST["titre"],ENT_QUOTES); } ?>" /> </p> <p><label for="message">Your message :</label><br /> <textarea name="message" id="message" cols="40" rows="5"><?php if (isset($_POST["message"])) { // le message a été saisi: le réafficher echo htmlspecialchars($_POST["message"],ENT_QUOTES); } ?></textarea> </p> <p><label for="newsletter">Newsletter :</label> [b]<input type="checkbox" name="newsletter[]" value="yes"><?php if (isset($_POST["newsletter"])){ echo "Choix utilisateur : ",$choix,"<br>"; } ?>[/b] <p>Résultat du calcul:</p> <?php antispam_ins(); ?> <p><input type="submit" name="envoyer" value="Send" /> </p> </form> <?php } else { // le formulaire a été soumis sans erreur, on envoie le mail $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n"; $entete .= "Return-Path: ". $email_webmaster . "\n"; $entete .= "MIME-Version: 1.0"; if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"],"][b],$_POST["newsletter"],[/b]$entete)){ // mail envoyé echo "Your message has just been sent !<br />\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Click here to send another message</a>\n"; } else { // erreur lors de l'envoi du mail echo "Your message couldn't be sent.\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Please, try again.</a>\n"; } } ?>
  10. ça y est ! j'ai fait un essai : ça marche nickel !!! Donc merci à Byc et Alphega !!! Juste une question : comment spécifier dans le php une et une taille particuliére, du verdana par exemple ?
  11. Bon je vous tiens au courant : J'ai pas encore testé le code car mon hébergeur fait face actuellement à de gros problèmes techniques...
  12. Bonsoir ! Oui j'a essayé mais j'obtiens un message d'érreur du type : "Parse error, unexpected...." J'ai compris cette érreur Je vais tester le code que tu viens de me montrer... merci ;-) Oui je sais. J'ai fait exprés de ne pas mettre mmon code entre les balises codes afin d'utiliser le gras pour trouver rapidement le code ajouté... a+ [Edit captain_torche]J'ai moi-même ajouté les balises adéquates, et tu peux constater que la mise en gras est conservée
  13. Wow chouette !!! Merci à byc pour son code !!! Au moins ça résout le probléme d'accéssibilité ! J'utilise pour mes sites le formulaire de contact proposé sur les publications du hub: Un "Mailer" pour votre site web Donc en ajoutant le code de Byc j'obtiendrai ceci : [b]<?php include_once("antispam.php"); ?>[/b] <?php // Dans la ligne qui suit, remplacer webmaster_AT_domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés $email_webmaster = "webmaster_AT_domaine.tld"; // === traitement des données du formulaire ============================================================ if (isset($_POST["envoyer"])){ // le formulaire a été soumis $etat = "erreur"; // Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur // --- mise en forme des champs saisis dans le formulaire lors de sa soumission --- if (isset($_POST["email_expediteur"])) { $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"])); } if (isset($_POST["titre"])) { $_POST["titre"]=trim(stripslashes($_POST["titre"])); } if (isset($_POST["message"])) { $_POST["message"]=trim(stripslashes($_POST["message"])); } // --- test de la validité des champs saisis --- if (empty($_POST["email_expediteur"])) { // il manque l'email de l'expéditeur $erreur="Saisissez votre adresse email..."; } elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){ // l'adresse e-mail n'est pas valide $erreur="Votre adresse e-mail n'est pas valide..."; } elseif (empty($_POST["message"])) { // le message est vide $erreur="Saisissez un message..."; } else { // --- tous les champs sont correctement remplis: on pourra envoyer le mail --- $etat="ok"; } } else { // --- le formulaire n'a pas été soumis --- $etat="attente"; } // === fin de traitement des données du formulaire ======================================================= ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Formulaire de contact</title> </head> <body> <h1>Contacter le webmaster</h1> <?php if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur if ($etat=="erreur"){ //le formulaire a été soumis avec une erreur echo "<p><strong>".$erreur."</strong></p>\n"; // afficher le message d'erreur } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br /> <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php if (!empty($_POST["email_expediteur"])) { // l'adresse email de l'expéditeur a été saisie: la réafficher echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES); } ?>" /> </p> <p><label for="titre">Titre de message (facultatif):</label><br /> <input type="text" size="40" name="titre" id="titre" value="<?php if (!empty($_POST["titre"])) { // le titre du message a été saisi: le réafficher echo htmlspecialchars($_POST["titre"],ENT_QUOTES); } ?>" /> </p> <p><label for="message">Message (obligatoire):</label><br /> <textarea name="message" id="message" cols="40" rows="5"><?php if (isset($_POST["message"])) { // le message a été saisi: le réafficher echo htmlspecialchars($_POST["message"],ENT_QUOTES); } ?></textarea> </p> [b]antispam_ins();[/b] <p><input type="submit" name="envoyer" value="Envoyer" /> </p> [b]<?php if(antispam_check() == false) { echo "Résultat incorrect, veuillez réessayer !"; } else { [...] envoi du mail et/ou insertion du formulaire dans la base de données. } ?>[/b] </form> <?php } else { // le formulaire a été soumis sans erreur, on envoie le mail $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n"; $entete .= "MIME-Version: 1.0"; if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){ // mail envoyé echo "Votre message a été envoyé.<br />\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n"; } else { // erreur lors de l'envoi du mail echo "Un problème s'est produit lors de l'envoi du message.\n"; echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n"; } } ?> </body> </html> et je met antispam.php dans le même répertoire que la page php du formulaire ? J'ai juste ??? PS: Je veux pas me faire passer pour un boulet, je débute dans le php, désolé...
  14. Bon me revoila ! J'ai fait des test d'injection d'en-tête sur formulaire php tout simple en suivant un article : l'injection marche ! (c'est normal) Aprés avoir installé le mailer proposé dans le forum et j'ai suivi de nouveau l'article : ce mailer semble être protégé contre cela... Par contre j'ai utilisé le code mailer + crypto * donnée par alphega au post 4 : rien à faire, ça ne marche pas... J'ai suivit les consignes données par le site cryptograph : pareil, ça ne marche pas... Comment et ou inclure les codes du crypto avec le mailer ??? A+++ *Tant pis pour l'accéssibilité de mon site, je ferai comme ça dans un 1er temps...
  15. Bonjour à tous ! J'ai fait pas mal de recherche sur le net à propos de injection de header eregi("$_POST["email"]", "\n") J'ai l'impression que le code ci-dessus passe en revue l'ensemble de l'email afin de trouvé une éventuel retour. Si oui, donc on serait obliger de rédiger un email sur une seule ligne, non ? Par contre le code suivant ne s'occupe que du champ "From" : if (eregi("\r",$from) || eregi("\n",$from)){ die("Why ?? :("); } Le code est-il bien inséré au bon endroit ? // Si le formulaire a été envoyé $from=$_POST["expediteur"]; if (eregi("\r",$from) || eregi("\n",$from)){ die("Why ?? :("); } $to=$_POST["destinataire"]; // On envoie le mail : Merci
×
×
  • Créer...