Bonjour,
je travaille en ce moment sur le fait qu'un utilisateur ait perdu son mot de passe et qu'on puisse lui en générer un nouveau et qu'il le reçoive par mail.
Cependant, mon programme contient des erreurs que je n'arrive pas à cerner.
Pourriez-vous s'il vous plait jeter un coup d’œil aux éventuelles erreurs qui pourrait se cacher dans mon code ?
<?php
include_once('include/header.php');
?>
Création du formulaire :
<?php
//if(isset($_GET['err']))
// $msg = "<p class='erreur'>L'email rentré n'est pas valide.</p>";
// elseif(isset($_GET['success']))
// $msg = "<p class='info'>Vous avez reçu votre nouveau mot de passe, veuillez consultez votre boîte mail.</p>";
// else $msg = "";
?>
<p> Vous avez oublié votre mot de passe ? Indiquez votre adresse e-mail et nous vous en renverrons un nouveau :</p>
<form method="post" action="new_pwd.php">
<p>
<p style="text-align: left;"><label for="email">E-mail :</label><input type="text" name="email" id="email" size="35" tabindex=1 placeholder="Veuillez indiquer votre E-mail"></p>
<input type="submit" value="Valider"/>
</p>
</form>
<?php
include("include/footer.php");
?>
Traitement de l'information donnée en formulaire :
<?php
include_once("include/connexion.php");
include_once("include/include_commun.php");
$conn = mysql_connect(BDD_HOST,BDD_USER,BDD_PASSWD) or die('Impossible de se connecter à la base de données : ' . mysql_error());
mysql_select_db(BDD_NAME,$conn) or die('Impossible de sélectionner la base mydbname : ' . mysql_error());
mysql_query("SET NAMES 'utf8'");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>VESPA</title>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="include/design.css" />
<link rel="SHORTCUT ICON" href="include/img/favicon.ico"/>
<?php
if(!empty($_POST['email']))
$email = $_POST['email'];
else
exit("Veuillez renseigner votre adresse email");
$sql = "SELECT email FROM utilisateur WHERE email = '".$email."' ";
$req = mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
if(mysql_num_rows($req) != 1)//si le nombre de lignes retourne par la requete != 1
exit("mail inconnu.");
else
{
$row1 = mysql_fetch_assoc($req);
$retour = mysql_query("SELECT motdepasse FROM utilisateur WHERE email = '".$email."' ");
$row2 = mysql_fetch_assoc($retour); //contient le mot de passe que l'on a perdu (ancien mot de passe)
$new_password=fct_passwd(); //création d'un nouveau mot de passe
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$objet = 'Récupération de votre mot de passe';
if(!mail($row1['email'], $objet, /*$row2['pass']*/$new_password, $headers))
echo 'Probleme lors de l\'envoi du mail';
else
{
//mise à jour de la base de données de l'utilisateur
$req = "UPDATE utilisateur SET motdepasse = md5('".$new_password."') WHERE email = '".$email."' ")
mysql_query($req); //ligne 47
echo 'L\'email contenant votre nouveau mot de passe vous a été envoyé. Veuillez le consulter avant de vous connecter à VESPA';
}
?>
<?php
mysql_close($conn);
?>
Fonction qui crée une nouvelle chaine de caractère aléatoire :
function fct_passwd( $chrs = "")
{
if( $chrs == "" ) $chrs = 8;
$chaine = "";
$list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
mt_srand((double)microtime()*1000000);
$newstring="";
while( strlen( $newstring )< $chrs ) {
$newstring .= $list[mt_rand(0, strlen($list)-1)];
}
return $newstring;
}
Les problèmes rencontrés :
Après avoir rentré mon adresse email, j'obtiens ce message d'erreur :
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\vespa_b1\new_pwd.php on line 47
j'ai également de nombreuses erreurs dans qui s'inscrivent à cause de footer.php en dessous de mon formulaire:
Notice: Undefined variable: conn in C:\wamp\www\vespa_b1\include\footer.php on line 3
Call Stack
Warning: mysql_close() expects parameter 1 to be resource, null given in C:\wamp\www\vespa_b1\include\footer.php on line 3
<?php
mysql_close($conn); //ligne 3
?>
Merci de bien vouloir m'indiquer ce qui ne fonctionne pas. Je comprend bien qu'il se passe quelque chose dans la connexion de la base de données.. Parce qu'en fait normalement toutes les pages du site ne sont accessibles que si on est logué, or la on accède à une page sans être logué.