Envoi de mot de passe par email

J’ai un problème avec ce code:

<form action="" name="send" method="post">
<input type="text" name="courriel" value="" />
<input type="submit" name="envoi" value="Remplacer" />
</form>

<?php //début code php
if (isset($_POST['courriel'])){
$connec = mysql_connect("localhost", "xxxx", "zzzzzz" );
mysql_select_db("ghgkldfs_acces" );
// test des variables
    $_SESSION['recuperation']['erreur'] = 'Tous les champs sont obligatoires';
    header('Location:signup.php');  // redirection vers le formulaire
} else {
    $courriel = htmlentities(addslashes( $_POST['courriel']));
$query = "SELECT * FROM users WHERE user_email='$courriel'";
$resultat = mysql_query($query)
or die("L'interrogation a echouée car ". mysql_error() ."." );
mysql_close($connec);
$message='Cher membre,
Suite à votre demande voici vos identifiants de connexion à votre compte
Login de connexion : '.$pseudo.'
Mot de passe : '.$motdepasse.'
   
PS: N\'hésitez pas à faire un tour sur le forum ou sur le chat ;)';
//on envoie le mail
mail($courriel, 'qfdqsfq.kk. Votre mot de passe', $message, "From:sqdqsd@qfdqsfq.kk" );
header('Location:');
}
?>

(script qui envoi le password d’un membre dans sa boite mail)

Le problème, c’est que lors de son execution ça me met “Access denied for user ‘xxxx’@‘localhost’ (using password: NO” .

Cela veut dire que j’ai voulu essayer de me connecter sans mdp. Or je l’ai bien fait pourtant (voir: “zzzz”) . Je ne comprend pas l’erreur.
Edité le 13/06/2010 à 18:59

Ce n’est pas très clair tout ça.

Si tu es en local, et que tu l’envoie sur un autre serveur, c’est que ton problème se situe sur ce serveur… pas chez toi;…

Enfin, bref, le code ne nous apprend rien, c’est plus ta configuration et ce que tu fais exactement qui nous aiderai…

normal qu’il n’y et rien dans form => action ??

Oui, car le code est juste en dessous.

Sinon, ça marche ! (il fallait mettre le mysql connect avant le if ) mais maintenant j’ai une autre erreur:

"Warning: Cannot modify header information - headers already sent by (output started at /home/xxxx/public_html/forgot2.php:6) in /home/xxx/public_html/forgot2.php on line 27 "

Donc ce que j’ai fait, c’est que j’ai supprimé ces 2 “header” du code. Et là… Tout fonctionne ! Ou presque… : Pas d’erreur , mais aucun mail reçu. Je ne comprend pas…

C’est que tu a déjà généré du code html avent de générer ton header

mes ton code html après le php et dans le body de ta page

ça ne marche pas…

J’ai trouvé mieux que mon code:

<?

//Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect to server"); 
mysql_select_db("$db_name")or die("cannot select DB");

// value sent from form 
$email_to=$_POST['email_to'];

// table name 
$tbl_name=url_users; 

// retrieve password from table where e-mail = $email_to(mark@phpeasystep.com) 
$sql="SELECT user_password FROM $tbl_name WHERE user_email='$email_to'";
$result=mysql_query($sql);

// compare if $count =1 row
if($count==1){

$rows=mysql_fetch_array($result);

// keep password in $your_password
$your_pass=$row['user_password'];
// ---------------- SEND MAIL FORM ---------------- 

// send e-mail to ...
$to=$email_to; 

// Your subject 
$subject="Your password here"; 

// From 
$header="from: your name <*****>"; 

// Your message 
$messages= "Your password for login to our website \r\n";
$messages.="Your password is $your_password \r\n";
$messages.="more message... \r\n";

// send email 
$sendmail = mail($to,$subject,$messages,$header); 

}

// else if $count not equal 1 
else {
echo "Not found your email in our database";
}

// if your email succesfully sent 
if($sentmail){
echo "Your Password Has Been Sent To Your Email Address.";
}
else {
echo "Cannot send password to your e-mail address";
}

?>

Seulement là aussi, à chaque fois le message “Cannot send password to your e-mail address” s’affiche. Je ne sais pas pourquoi. Serait-ce possible que mon hébergeur refuse l’envoi d’email par script ?

L’avantage: pas de message d’erreur php/mysql. Mais toujours pas d’email reçu :frowning:

(ps: pas la peine d’essayer le mdp, c’est pas le bon biensur)
Edité le 05/07/2010 à 12:51

Problème réglé ! Il fallait autoriser l’email d’envoi dans mon hebergeur :slight_smile: