mail d'inscription

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : mail d'inscription

par béka » 08 juin 2006, 08:27

une erreur toute bete de ma part, les variables que je passais dans l'URL et celles que je récuppérais dans mon fichier validation.php ne portainet pas le même nom... j'ai honte de moi :oops:

par zeus » 07 juin 2006, 11:26

Et quelle était-elle ?

Ca peut interesser d'autre personne ... ;)

par béka » 07 juin 2006, 11:24

c'est bon j'ai trouvé mon erreur, tout marche bien
merci

par béka » 07 juin 2006, 10:42

quand je fais l'echo voila ce que j'obtiens :
Warning: mysql_fetch_array(): supplied argument is not a valide MySQL result resource in validation.php on line 15
j'ai fait le isset, et les variables ne sont pas passées. Je ne comprends pas pourquoi. Comment passer des variables dans l'URL? je pensais utilsier la bonne syntaxe

par guilt92 » 07 juin 2006, 10:35

$nom_etudiant=$_GET['nom_etudiant']; 
$prenom_etudiant=$_GET['prenom_etudiant']; 
$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='".$prenom_etudiant."' AND nom_etudiant='".$nom_etudiant."'"; 
echo $sql;
//$resultat = mysql_query($sql) or die(mysql_error());
 
Ca te donne quoi ?

Et si tu fais juste au début
if(isset($_GET['nom_etudiant'])&&isset($_GET['prenom_etudiant'])) echo "ok";
else echo "pas ok"; 
?

par béka » 07 juin 2006, 10:28

les variables GET sont bien récupérées puisque j'arrive a bloquer la connexion d'un élève tant que l'admin n'a pas cliqué sur le lien pour valider son inscription : il ne peut pas se connecter tant qu'on n'a pas validé.
Le lien est bon, puisque j'ai bien la page validation.php qui s'affiche lorsque je clique sur le lien du mail (mail envoyer avec la même syntaxe que celui que je souhaite envoyé par la page validation.php).
Le where a été ajouté

par guilt92 » 07 juin 2006, 10:25

Pour éviter ce genre de problème dans le futur, quand tu utilises des variables passées en $_GET ou $_POST je te conseille de vérifier leur existence avec la fonction isset(). Quelque chose du genre :
if(isset($_GET['variable1'])&&isset($_GET['variable2']) //et ainsi de suite
{
//ton code
}
else echo "Erreur de variables";

par zeus » 07 juin 2006, 10:20

Donc, il y a plusieurs problèmes dans ton script :
1/ récupération des variables GET
2/ manière d'identifier l'étudiant
3/ update de l'etudiant

Pour résoudre ces problèmes, je te conseille ça :
1/ Vérifie le lien qui t'envoi vers cette page
2/ Essaye de passer un identifiant
3/ effectivement, il te faut un where dans le update sinon tu le réalise sur toute la table

par béka » 07 juin 2006, 10:12

oui j'ai pris en compte le comment de zeus
avec un
echo $sql;
voila ce que j'obtient
SELECT * FROM etudiant WHERE prenom_etudiant='' AND nom_etudiant=''
Aucune variable n'est passée

par guilt92 » 07 juin 2006, 10:05

j'ai donc fait un
echo $resultat;
et j'obtient le message suivant
Ressource id#4L'inscription a bien été prise en compte
Vous pouvez fermer cette fenêtre
Normal?
Oui, il faudrait plutot faire echo $sql; pour voir ta requête. Et les remarques de Zeus sont à prendre en compte, car si tu as 2 élèves avec le même nom et prénom ton site va bugger...

par béka » 07 juin 2006, 10:05

oui c'est bien ce que je veux faire zeus, dans mon UPDATE je devrais mettre en WHERE?
D'après toi, je devrais utiliser nom, prenom et pass ?

par zeus » 07 juin 2006, 10:03

Rien a voir avec l'envoi de mail, mais la fin de ton script ne correspond surement pas a ce que tu veux faire. Quand je lit
//on insère dans la base
$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='$prenom_etudiant' AND nom_etudiant='$nom_etudiant'";
$resultat = mysql_query($sql);
$query = "UPDATE etudiant SET actif='1'";
$result = mysql_query($query);
echo "L'inscription a bien été prise en compte. <br>Vous pouvez fermer cette fenêtre.";
je me dit que tu doit vouloir rendre actif l'etudiant auxquel tu vient d'envoyer le mail

Or, là, tu sélectionne l'étudiant sans rien faire dans la 1ere requete. Et tu change le champ actif de tous les étudiants de la table :-k

De plus, pourquoi utilises-tu les nom/prenom pour récupérer un enregistrement dans la base ? Ce n'est pas une clause d'unicité suffisante, il vaut mieux utiliser une clé primaire.

par béka » 07 juin 2006, 10:01

mais par contre, l'inscriptiona bien été confirmée et validée. Ca veut dire que l'insertion dans la BDD a lieu

par béka » 07 juin 2006, 10:00

j'ai donc fait un
echo $resultat;
et j'obtient le message suivant
Ressource id#4L'inscription a bien été prise en compte
Vous pouvez fermer cette fenêtre
Normal?

par guilt92 » 07 juin 2006, 09:50

Faut-il décaler l'} du while et le mettre après l'envoi de mail ?
Non car tu ne traites ici qu un seul élève donc une seule adresse email.
Par contre si ta variable est vide il y a peut etre un probleme avec ta requete, rajoute un "or die" et fais un echo de ta requete pr vérifier que les variables sont bonnes.
$nom_etudiant=$_GET['nom_etudiant']; 
$prenom_etudiant=$_GET['prenom_etudiant']; 
$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='$prenom_etudiant' AND nom_etudiant='$nom_etudiant'"; 
$resultat = mysql_query($sql) or die(mysql_error());