IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Mot de passe oublié, envoi automatiquement d'un nouveau par mail


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut [Mail] Mot de passe oublié, envoi automatiquement d'un nouveau par mail
    EDIT= En fait je viens de voir que c'est ma logique en elle même qui n'est pas correcte

    Je boucle, mes messages d'erreur s'affichent autant de fois qu'il y a d'enregistrements.

    J'ai pas de bonne logique au secours
    <?
    $pseudo
    =$_POST['pseudo'];
    $mail=$_POST['mail'];

    $ident="select * from dh_users";
    $identification= mysql_query($ident);
    $nb=mysql_num_rows($identification);

    $i=0;

    while (
    $i<$nb)
    {


    $utilisateur=mysql_result($identification,$i,'pseudo');
    $password =mysql_result($identification,$i,'password');


    // ------------------TEST SI L ADRESSE EMAIL A UN FORMAT VALABLE ------------------------


    $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // caractères autorisés avant l'arobase
    $domain = '([a-z]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)

    $regex = '^' . $atom . '+' . // Une ou plusieurs fois les caractères autorisés avant l'arobase
    '(\.' . $atom . '+)*' . // Suivis par zéro point ou plus
    // séparés par des caractères autorisés avant l'arobase
    '@' . // Suivis d'un arobase
    '(' . $domain . '{1,63}\.)+' . // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
    // séparés par des points
    $domain . '{2,63}$'; // Suivi de 2 à 63 caractères autorisés pour le nom de domaine

    // test de l'adresse e-mail
    if (eregi($regex, $email))
    {

    if ((
    $utilisateur==$pseudo)||($password==$mail))
    {
    echo
    "Un Email va vous être envoyé avec un nouveau mot de passe, veuillez consulter vos mails à l'adresse que vous avez fourni lors de votre inscription";
    //--------------------------------------------- GENERE UN NOUVEAU MOT DE PASSE ---------------------------------


    // La fonction 'srand' initialise le générateur de nombres aléatoires
    srand ((double) microtime() * 1000000);
    // initialise avec les microsecondes depuis la dernière seconde entière

    $nb_car_pass = rand(6, 8);
    // ici on fait un randomize pour choisir aléatoirement le nombre de caractère du mot de passe

    $tableau_car = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", 1, 2, 3, 4, 5, 6, 7, 8, 9);
    // On crée un tableau contenant les lettres et chiffres que l'on souhaite intégrer dans le mot de passe...plus on en met, plus la protection sera efficace et la génération plus diversifiées.


    for ($i = 0; $i< $nb_car_pass; $i++){ //une petite boucle pour concaténer les caractères entre eux...
    $password .= $tableau_car[rand(0, count($tableau_car) - 1)];}
    // on fait un autre random pour choisir au hasard le caractère dans le tableau







    // ----------------------------------------- ENVOIS DU NOUVEAU MOT DE PASSE PAR EMAIL ------------------------------------


    $destinataire='$mail';


    $from = "From: www.biofinesse.com\n";
    $from .= "MIME-version: 1.0\n";
    $from .= "Content-type: text/html; charset= iso-8859-1\n";


    $titre= 'Votre nouveau mot de passe';

    $contenu= '
    <html><head></head><body>
    Vous recevez cet e-mail parce que vous avez demandé à ce qu\'un nouveau mot de passe vous soit envoyé pour votre compte sur www.biofinesse.com .
    <br><br>Votre nouveau mot de passe :<b>'
    .$password.'</b>
    <br><br>Si vous désirez changer de mot de passe, ou choisir votre mot de passe vous même, merci de nous contacter à travers le site, ou à l\'adresse suivante info@biofinesse .com
    </body>
    </html>'
    ;

    mail($destinataire,$titre,$contenu,$from);



    }
    else
    {
    echo
    "Mot de passe incorrect";
    }
    }
    else
    {
    echo
    "L'adresse e-mail $email n'est pas valide";
    }
    $i++;
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Le but étant que si les personnes ont oublié leur mot de passe, un nouveau généré automatiquement est envoyé à l'adresse email qu'ils ont fourni lors de linscription

  2. #2
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Essai d'utiliser cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     function password_generator($size , $with_numbers , $with_tiny_letters , $with_capital_letters){
    		 $pass_g = "";
    		 $sizeof_lchar = 0;
    		 $letter = "";
    		 $letter_tiny = "abcdefghijklmnopqrstuvwxyz";
    		 $letter_capital = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    		 $letter_number = "0123456789";
     
    		 if($with_tiny_letters == true){
    		 	$sizeof_lchar += 26;
    		 	if (isset($letter)) $letter .= $letter_tiny;
    		  	else $letter = $letter_tiny;
    		 }
     
    		 if($with_capital_letters == true){
    		 	$sizeof_lchar += 26;
    		  	if (isset($letter)) $letter .= $letter_capital;
    		  	else $letter = $letter_capital;
    		 }
     
    		 if($with_numbers == true){
    		 	$sizeof_lchar += 10;
    		 	if (isset($letter)) $letter .= $letter_number;
    		  	else $letter = $letter_number;
    		 }
     
    		 if($sizeof_lchar > 0){
    		 	srand((double)microtime()*date("YmdGis"));
    		 	for($cnt = 0; $cnt < $size; $cnt++){
    		 		$char_select = rand(0, $sizeof_lchar - 1);
    		 		$pass_g .= $letter[$char_select];
    		  	}
    		 }
    		 return $pass_g;
    	}

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    C'est pas la génération de pass qui bloque mais ma logique, ma boucle et cies =)

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Personne n'a d'autres suggestions?! =)

  5. #5
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Si c'est un problème dans tes boucles, peux-tu nous préciser les messages d'erreur qui s'affichent avec éventuellement les numéros de ligne incriminées.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    J'ai pas de message d'erreur la est tout le problème lol. Ca vient de ma logique

    En modifiant quelques peu mon code, c'est à dire ceci :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?
    $pseudo=$_POST['pseudo'];
    $email=$_POST['mail'];
    
    
    
    $ident="select * from dh_users where pseudo = '$pseudo' and password='$email'";
    $identification= mysql_query($ident); 
    
                if (isset ($identification))
                {
        
                // ------------------TEST SI L ADRESSE EMAIL A UN FORMAT VALABLE ------------------------
            
            
                            $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]';    // caractères autorisés avant l'arobase
                            $domain = '([a-z]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
                                                                        
                            $regex = '^' . $atom . '+' .    // Une ou plusieurs fois les caractères autorisés avant l'arobase
                            '(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                                            // séparés par des caractères autorisés avant l'arobase
                            '@' .                           // Suivis d'un arobase
                            '(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                                            // séparés par des points
                            $domain . '{2,63}$';            // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
                                        
                            // test de l'adresse e-mail
                            if (eregi($regex, $email)) 
                            {
                                
    
                                                    echo "Un Email va vous être envoyé avec un nouveau mot de passe, veuillez consulter vos mails à l'adresse que vous avez fourni lors de votre inscription";
                                                    echo "<br><br><i>Vous allez être rediriger automatiquement vers la page de commandes</i><br><br>";
                                                    echo "<META HTTP-EQUIV='refresh' CONTENT='3; URL=Commandes/boncomm.php'>";
                                                    echo "Si la redirection ne fonctionne pas, cliquez <a href='Commandes/boncomm.php'>ici</a>";
                                                    
                                                    //--------------------------------------------- GENERE UN NOUVEAU MOT DE PASSE ---------------------------------
                                                    
                                                    
                                                                    // La fonction 'srand' initialise le générateur de nombres aléatoires
                                                                        srand ((double) microtime() * 1000000); 
                                                                        // initialise avec les microsecondes depuis la dernière seconde entière
                                                                        
                                                                        $nb_car_pass = rand(6, 8); 
                                                                        // ici on fait un randomize pour choisir aléatoirement le nombre de caractère du mot de passe
                                                                        
                                                                        $tableau_car = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", 1, 2, 3, 4, 5, 6, 7, 8, 9);
                                                                        // On crée un tableau contenant les lettres et chiffres que l'on souhaite intégrer dans le mot de passe...plus on en met, plus la protection sera efficace et la génération plus diversifiées.
                                                                        
                                                                        
                                                                        for ($i = 0; $i< $nb_car_pass; $i++){ //une petite boucle pour concaténer les caractères entre eux...
                                                                                $password .= $tableau_car[rand(0, count($tableau_car) - 1)];} 
                                                                                    // on fait un autre random pour choisir au hasard le caractère dans le tableau
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                    // ----------------------------------------- ENVOIS DU NOUVEAU MOT DE PASSE PAR EMAIL ------------------------------------
                                                    
                                                            
                                                            $destinataire='$email';
                                                            
                                                            
                                                            $from  = "From: www.biofinesse.com\n";
                                                            $from .= "MIME-version: 1.0\n";
                                                            $from .= "Content-type: text/html; charset= iso-8859-1\n"; 
                                                        
                                                        
                                                            $titre= 'Votre nouveau mot de passe';
                                                            
                                                            $contenu= '
                                                                        <html><head></head><body>
                                                                        Vous recevez cet e-mail parce que vous avez demandé à ce qu\'un nouveau mot de passe vous soit envoyé pour votre compte sur www.biofinesse.com .
                                                                        <br><br>Votre nouveau mot de passe :<b>'.$password.'</b>
                                                                        <br><br>Si vous désirez changer de mot de passe, ou choisir votre mot de passe vous même, merci de nous contacter à travers le site, ou à l\'adresse suivante info@biofinesse .com
                                                                         </body>                       
                                                                        </html>';
                                        
                                                            mail($destinataire,$titre,$contenu,$from);
                                                
                                                    
                                                    // + update
                                                
                            }
                            else 
                            {
                                echo "L'adresse e-mail <b>$email</b> n'est pas valide<br><br>";
                                echo "Cliquez <b><a href='perte_pass.php'>ici</a></b> pour réessayer<br>";
                                echo "Cliquez <b><a href='actu_bio.php'>ici</a></b> pour retourner à l'Index<br>";
                            }
                            
                            }
                            else
                            {
                            echo "Vous avez spécifié un nom d'utilisateur incorrect ou inactif ou mail invalide";
                            }
    
                                
    
    
    
    
    
    ?>
    Le point positif c'est que je boucle plus, donc plus de message qui s'affiche autant de fois qu'il y a d'enregistrement, mais point négatif, maintenant pour lui tout est bon. Même quand le pseudo ou mot de passe n'est pas correct =)

    J'vais finir par m'arracher les cheveux, en plus je suis sur que mon erreur est bête..

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/04/2013, 15h09
  2. Réponses: 5
    Dernier message: 24/02/2012, 20h50
  3. [XL-2003] envoi automatique d'un tableau par mail
    Par mael86 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/12/2009, 12h49
  4. envoie automatique d'un pdf par mail via redmon
    Par ipeteivince dans le forum Windows
    Réponses: 2
    Dernier message: 29/08/2006, 19h01
  5. mot de passe oublié
    Par sami1881 dans le forum Sécurité
    Réponses: 5
    Dernier message: 25/11/2005, 00h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo