Salut à tous,

Je viens de me mettre à la programmation PHP, essentiellement par nécessité, mais j'y trouve bcp de plaisir pour l'instant.

Je dispose d'un script de paiement, qui gère l'accès à une zone membre, le profil des membres etc... Assez complet et efficace.

J'ai voulu rajouter une fonctionnalité à ce script : permettre à un membre ayant perdu son mot de passe de pouvoir le récupérer. Pour cela, il se rend sur une page contenant un formulaire, entre son email, et ses identifiants lui sont renvoyé sur son adresse mail.

Après 2 petites heures de programmation, j'ai un truc qui marche a peu près. Par contre je ne sais pas ce qu'il vaut en terme de "codage" et d'optimisation du code J'ai fait un usage excessif des variables je pense, essentiellement parce que je maitrise mal la syntaxe " et ', et que cela me provoquait des parse error à la chaine .

En fait mon script va piocher les infos dans la BDD de mon script de gestion des paiements et des acces. Il n'y a pas d'interaction entre les 2 scripts. Les identifiants apparaissent en clair dans la BDD, l'accès à la zone membre étant protégé par un htaccess / htpasswd.

Mon problème et mes questions avant d'afficher mon code :
J'ai voulu rajouter une fonctionnalité à mon script me permettant d'afficher un message d'erreur si le mail entré ne correspondait à aucun mail existant dans la BDD. J'ai ajouté une condition (if / else).

Au début j'ai voulu utiliser la fonction is_null que j'ai trouvée dans le manuel de PHP (très bien fait soit dit en passant). Puis j'ai essayé la fonction empty, et enfin j'ai essayé de comparer le email entré dans le formulaire avec le email extrait de la recherche dans la BDD (voir le script). Aucun des 3 ne marche, mais c'est peu être du à une erreur de code autre part.

Laquelle de ces fonctions dois je employer ? Comment faire ma condition proprement ? Y a t'il des optimisations / erreurs à corriger dans mon code ?

Voici mon code (modifié pour les besoins de la publication sur un forum :


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
<?php
//Vérification de la validation du formulaire + remplissage du champs email
if (isset($_POST['email']) && !empty($_POST['email'])) 
{
//Conditions remplies, connexion à la BDD
$mail=$_POST['email'];
mysql_connect("localhost", "XXXXX", "XXXXX"); // Connexion à MySQL
mysql_select_db("XXXXXXXXX"); // Sélection de la base 
 
// Requête sur la BDD = table membre
$requete_membres = "SELECT ID, prenom, nom, email FROM membre WHERE email='$mail'";
$membres = mysql_query($requete_membres) or exit(mysql_error());
$membres2 = mysql_fetch_array($membres) or exit(mysql_error());
$destinataire = $membres2['email'];
 
if ($mail != $destinataire)
{
echo "Désolé, le email que vous avez entré ne figure pas dans notre base de données.";
mysql_close(); // Déconnexion de MySQL 
}
else
{
// creation de la variable ID pour faire une recherche inter-table
$id = $membres2['ID'];
 
//Requête sur la BDD = table htpasswd
$requete_htpasswd = "SELECT login, pass FROM htpasswd WHERE clientID=$id";
$htpasswd = mysql_query($requete_htpasswd) or exit(mysql_error());
$identifiants = mysql_fetch_array($htpasswd) or exit(mysql_error());
 
// creation de variables en pagaille
$prenom = $membres2['prenom'];
$nom = $membres2['nom'];
$login = $identifiants['login'];
$pass = $identifiants['pass'];
$expediteur = "monmail@monsite.com";
$reponse = $expediteur;
 
// Création d'une variable contenant le email en HTML
$mailhtml="<html><body>"."<p>Bonjour $prenom $nom,</p>"."<p>Conformément à votre demande, nous vous renvoyons vos identifiants"."<br><b>Votre login est :</b> $login<br>"."<b>Votre mot de passe est :</b> $pass</p>"."<p>N'oubliez pas de respecter les majuscules et les minuscules des identifiants !";
 
// Envoi du email
mail($destinataire,"Vos identifiants",$mailhtml,"From: $expediteur\r\nReply-To: $reponse\r\nContent-Type: text/html; charset=\"iso-8859-1\"\r\n");
 
// Message de confirmation de l'envoi du mail
echo "<p><center>Un mail contenant vos identifiants de connexion à été envoyé à votre adresse email.<br>Vérifiez IMPERATIVEMENT votre dossier SPAM avant de recommencer une demande d'identifiants</center></p>";
 
mysql_close(); // Déconnexion de MySQL 
}
}
else // si champs email non rempli, echec et message d'erreur
{
echo "<p><center>Erreur, vous devez entrer une adresse correcte.<br></p></center>";
}
?>
Merci au(x) courageux qui prendront le temps de se pencher sur mon cas.