Aller au contenu

Norbert_404

Actif
  • Compteur de contenus

    18
  • Inscrit(e) le

  • Dernière visite

Messages postés par Norbert_404

  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... :thumbsup:

    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. 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. Merci beaucoup ! ;):):thumbsup:

    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)){

    Blablabla

    Red

  5. 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 ! :(

  6. 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...

  7. 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";
    }
    }
    ?>

  8. 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 ;-)

    ps: pour les longs codes à mettre sur le forum, tu peux utiliser la balise:

    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

  9. 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é...

  10. 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...

  11. 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 ;)

  12. Bonsoir,

    Merci pour la réponse ;-)

    L'email n'apparait pas dans la source du html mais dans celle du php.

    ah oui, je crois avoir compris:

    donc il y a sur la même page (ex contact.php) une partie du code php contenant l'adresse email,

    <?php include "crypt/functions.php"; ?>
    etc...
    etc...
    // === fin de traitement des données du formulaire =======================================================
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

    et dans le code html il y a le formulaire avec le reste du code.

    Ce qui fait que quand la page est affichée dans un navigateur, la 1ere partie du code "disparaît" aprés avoir été traitée par le serveur.

    Est-ce bien cela ?

    ---

    Je crois avoir trouvé un code anti injection d'en-tête, mais je ne sais vraiment pas ou le mettre dans le code du mailer

    <?php
    $from = $_POST["sender"];
    $from = urldecode($from);
    if (eregi("\r",$from) || eregi("\n",$from)){
    die("Why ?? :(");
    }
    ?>

    a+

  13. Bonjour,

    J'ai une petite question sur le couple Mailer+cryptograph.

    J'ai pris le temps de bien chercher les réponses à mes questions, mais sans succés...

    1. Le code du mailer empeche t-il les attaques par injection d'en-tête ?

    Si non, quel code faudrait-il ajouter ? et ou ?

    2. Concernant ceci :

    $email_webmaster = "webmaster_AT_domaine.tld";

    Si je met mon adresse email - azerty_AT_abc.fr par exemple - qu'est-ce qui peut empêcher qqn de regarder la source du script afin de prélever l'adresse ?

    Voila merci et a+ sur WH :)

×
×
  • Créer...