• STATISTIQUES
  • Il y a eu un total de 0 membres et 10999 visiteurs sur le site dans les dernières 24h pour un total de 10 999 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [FR] Developpez.net
    Un forum communautaire qui se veut pour les développeurs en générale. Avec presque 500 000 membr...
    Programmation

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] Sécurisation formulaire envoi de mail
03-10-2012, 16h16 (Modification du message : 19-11-2012, 18h37 par InstinctHack.)
Message : #1
kaizo Hors ligne
Membre
*



Messages : 45
Sujets : 6
Points: 22
Inscription : Sep 2012
[Php] Sécurisation formulaire envoi de mail
Salut a tous !

J'ai sur mon site un formulaire d'envoi par mail en php avec captcha, et je voudrais savoir simplement si il est suffisamment sécurisé, alors je vous donne le code, merci à ceux qui prendront le temps de le regarder Shy

d'abord le formulaire:

Code :
<form id="contact" method="post" action="mail.php">
    <fieldset><legend>coordonn&eacute;es</legend>
        <p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" maxlength="20" size="20"/></p>
        <p><label for="prenom">Pr&eacute;nom :</label><input type="text" id="prenom" name="prenom" tabindex="1" maxlength="20" size="20" /></p>
        <p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>
    </fieldset>

    <fieldset><legend>message :</legend>
        <p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
        <p><label for="message">Message :<br/></label><textarea id="message" name="message" tabindex="4" cols="50" rows="10"></textarea></p>
        <label for="code"> somme des deux nombres dans la case </label>  
        <img title="cap" src="captcha.php" alt="Cap" />  
        <input id="captcha"  name="captcha" type="text" maxlength="2" size="3"/>
    </fieldset>

    <div style="text-align:center;"><input class="bouton"  type="submit" name="envoi" value="Envoyer" /></div>
</form>


ensuite le script d'envoi mail.php (récupérer sur un site a l'origine, je sais plus où, et modifier ensuite) :

Code PHP :
$destinataire 'blabla@blabla.fr';

    
// copie ? (envoie une copie au visiteur)
    
$copie 'oui'

    
// Messages de confirmation du mail
    
$message_envoye "Votre message a &eacute;t&eacute; envoy&eacute; !";
    
$message_non_envoye "L'envoi du mail a &eacute;chou&eacute;, veuillez r&eacute;essayer SVP.<br/><a href=contact.php >Cliquez ici pour r&eacute;essayer</a>";

    
// Messages d'erreur du formulaire
    
$message_erreur_formulaire "Vous devez d'abord <a href=\"contact.php\">envoyer le formulaire</a>.";
    
$message_formulaire_invalide "V&eacute;rifiez .";
    
$message_captcha "R&eacute;sultat faux ! <br/>  ";
    
/*
        ********************************************************************************************
        FIN DE LA CONFIGURATION
        ********************************************************************************************
    */
    

    // on teste si le formulaire a été soumis
    
if (!isset($_POST['envoi']))
    {
        
// formulaire non envoyé
        
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
    }
    
//captcha
    
else if(isset($_POST['captcha'])) // Si on a validé le formulaire.
            
                
if($_SESSION['resultat_captcha'] != $_POST['captcha'])
                { 
// Si le résultat est faux.
                    
echo '<p class="mil">'.$message_captcha.'<br/> <a href="javascript:history.go(-1);">Retour au formulaire</a> </p>'."\n";
                }
                
    
    else
    {
        
/*
         * cette fonction sert à nettoyer et enregistrer un texte
         */
        
function Rec($text)
        {
            
$text trim($text); // delete white spaces after & before text
            
if (=== get_magic_quotes_gpc())
            {
                
$stripslashes create_function('$txt''return stripslashes($txt);');
            }
            else
            {
                
$stripslashes create_function('$txt''return $txt;');
            }

            
// magic quotes ? anti xss
            
$text $stripslashes($text);
            
$text htmlspecialchars($textENT_QUOTES); 
            
$text nl2br($text);
            return 
$text;
        };

        
/*
         * vérification syntaxe email
         */
        
function IsEmail($email)
        {
            
$pattern "#^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$#";
            return (
preg_match($pattern,$email)) ? true false;
        };

        
// formulaire envoyé, on récupère tous les champs.
        
$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
        
$prenom  = (isset($_POST['prenom']))  ? Rec($_POST['prenom'])  : '';
        
        
$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
        
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
        
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';


        
// On va vérifier les variables et l'email ...
        
$email = (IsEmail($email)) ? $email '';

        if ((
$nom != '') && ($email != '') && ($objet != '') && ($message != ''))
        {
            
// les 4 variables sont remplies, on génère puis envoie le mail
            
$headers 'From: '.$nom.' <'.$email.'>' "\r\n";

            
// envoyer une copie au visiteur ?
            
if ($copie == 'oui')
            {
                
$cible $destinataire.','.$email;
            }
            else
            {
                
$cible $destinataire;
            };

            
// Remplacement de certains caractères spéciaux
            
$message str_replace("'","'",$message);
            
$message str_replace("’","'",$message);
            
$message str_replace("&quot;",'"',$message);
            
$message str_replace('<br>','',$message);
            
$message str_replace('<br />','',$message);
            
$message str_replace("&lt;","<",$message);
            
$message str_replace("&gt;",">",$message);
            
$message str_replace("&amp;","&",$message);

            


            
// Envoi du mail
            
if (mail($cible$objet$message$headers))
            {
            
            
            
                echo 
'<p class="mil">'.$message_envoye.'<br/><a href=index.php>Cliquez ici pour revenir &agrave; l\'accueil</a></p>'."\n";
            }
            else
            {
                echo 
'<p class="mil">'.$message_non_envoye.'</p>'."\n";
            };
        }
        else
        {
            
// une des 3 variables (ou plus) est vide ...
            
echo '<p class="mil">'.$message_formulaire_invalide.' <br/><a href="javascript:history.go(-1);">Retour au formulaire</a></p>'."\n";
        
        };
        
        
        
    }; 
// fin du if (!isset($_POST['envoi']))
    
    

?>

et enfin le captcha :

Code PHP :
<?php
session_start
(); // On ouvre une session, car on va en utiliser plus loin.
header ("Content-type: image/png"); // On indique le format de l'image.
$image imagecreate(80,20); // On indique les dimensions de l'image.
$fond imagecolorallocate($image255255255); // On renseigne ici la couleur de fond.
$couleur_texte imagecolorallocate($image44143228); // On indique la couleur du texte.

$nbre1 rand(1,10);
$nbre2 rand(1,10);
// On crée nos deux nombres avec chacun un chiffre aléatoire associé.

$_SESSION['resultat_captcha'] = $nbre1 $nbre2// Le résultat numérique de l'addition.
$_SESSION['addition'] = $nbre1.' + '$nbre2// L'addition sous forme textuelle.

imagestring($image622$_SESSION['addition'], $couleur_texte);
// Enfin on insère le texte avec la couleur précisée dans l'image.

imagepng($image); // On génère l'image.
imagedestroy($image); // On libère la mémoire associée à l'image.
?>

Voilà, merci encore aux bonnes âmes
"Qui mange une noix de coco, fait confiance à son anus!"

+1 (0) -1 (0) Répondre


Messages dans ce sujet
[Php] Sécurisation formulaire envoi de mail - par kaizo - 03-10-2012, 16h16

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [PHP-APP - AIDE] Envoi de fichierr à une page web sakiir 9 489 06-06-2013, 17h43
Dernier message: supersnail
  [Python] MOD pour BOT Envoi photo cam par mail thxer 3 240 18-02-2013, 13h58
Dernier message: thxer

Atteindre :


Utilisateur(s) parcourant ce sujet : 4 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut