Aller au contenu

créer fonction mot de passe oublié


Sujets conseillés

Posté

Bonjour à tous,

J'aimerai installer sur mon site une fonction qui permettrait à l'internaute de demander l'envoi de son mot de passe par mail grâce à son adresse mail, mais voilà pour le moment je bloque...

Les données de l'internaute sont enregistrée dans ma base sql suite à son inscription.

Voici à quoi ressemble mon code php pour le moment :

<?php require_once('Connections/Connexion*.php'); ?>
<?php
$emailforumiste_RsInfosForum = 'mail';
if (isset($_POST['mail'])) {
$emailforumiste_RsInfosForum = (get_magic_quotes_gpc()) ? $_POST['mail'] : addslashes($_POST['mail']);
}
mysql_select_db($database_Connexion*, $Connexion*);
$query_RsInfosForum = sprintf("SELECT * FROM profil WHERE mail=%s", $emailforumiste_RsInfosForum);
$RsInfosForum = mysql_query($query_RsInfosForum, $ConnexionInscription) or die(mysql_error());
$row_RsInfosForum = mysql_fetch_assoc($RsInfosForum);
$totalRows_RsInfosForum = mysql_num_rows($RsInfosForum);
?>
<?php


$to = 'pass';

$sujet="Votre mot de passe pour l'accès à *.fr ";
$expediteur = "postmaster@*.fr";
$reponse = $expediteur ;

$textmes="Vous recevez ce mail parce que vous avez demandé qu'on vous envoie votre mot de passe.";
$textmes.="Si tel n'est pas le cas, ignorez ce message et excusez notre erreur.";


mail($to , $sujet , $textmes , $expediteur );

?>
<?php
mysql_free_result($RsInfosForum);
?>

Pour le moment, il me récupère seulement la première adresse mail de la base. De plus aucun mail n'ai envoyé, ni au postmaster, ni au destinataire...

Merci d'avance pour votre aide!!!

Posté

Premièrement, ta requête : pourquoi utiliser un joker (Le symbole %) ?

Elle devrait être de la forme :

"SELECT * FROM profil WHERE mail = '$emailforumiste_RsInfosForum'"

Edit : Au temps pour moi, tu utilises sprintf ... Mais dans quel but ? Tu te complexifies pas mal la vie ;)

Personnellemenent, je ferai ainsi :

$query_RsInfosForum = "SELECT pass FROM profil WHERE mail = '$emailforumiste_RsInfosForum'"

Soit dit en passant, il est inutile de tout sélectionner : il faut prendre l'habitude de ne sélectionner que les informations dont tu as besoin.

Ici, par exemple, on n'a besoin que du mot de passe.

Il manque ensuite quelque chose d'important dans ton code : tu effectues bien ta requête, mais tu n'en extraits pas le mot de passe.

Tu parcours bien la première ligne de résultat, mais tu n'en extrais rien.

Comme tu utilises une variable pour compter le nombre de résultats, on va s'en servir.

Dans les conditions actuelles, la variable renvoit 0 ou 1 en fonction de l'absence ou la présence du mail demandé dans la base.

On peut donc envisager un test relativement simple :


if($totalRows_RsInfosForum) {
// On récupère le mot de passe
$pass = $row_RsInfosForum['pass'];
// Tu colles ici le code de l'envoi de mail
}
else {
// Tu affiches un message d'erreur
}

Ensuite, c'est normal que ton mail ne soit pas envoyé, tu ne mets pas d'adresse de destinataire dans ta variable $to ;)

Le mot de passe doit être inclus dans le corps du mail ($textmes).

L'adresse postmaster, c'est l'adresse de réponse du mail envoyé à l'utilisateur.

Si tu veux également envoyer le mail à postmaster, il faudra faire un second envoi.

Soit dit en passant, si jamais le mail est reçu alors qu'il n'est pas demandé, c'est qu'il y a une tentative de fraude. Tu ne dois pas t'en excuser, mais demander de le signaler.

Tu devrais également enregistrer l'heure de la demande et l'IP de connexion pour chacun de ces envois.

Posté

Merci Captain_torche!

Enfin!!! j'ai compris que je devais extraire ma variable après l'avoir appelé, je bloquais là dessus depuis pas mal de temps! Pour le mail, effectivement j'ai vu mon erreur après avoir posté mon message.

Tout fonctionne, c'est ok!

Pour sprintf, c'est que j'apprends le php avec un bouquin et les exemples n'utilisent que ça, donc je ne préfère pas trop m'aventurer pour le moment mais ça viendra si un jour je me sens un peu plus à l'aise avec ce language...

Merci pour tes précieux conseils, et bonne continuation ;)))

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...