|
|
|
|
Bonjour a tous
je suis nouveau tout juste inscrit donc excusez moi si je ne post pas mon sujet au bon endroit ...
alors voila , je suis en train de réaliser un formulaire d'inscription et je souhaite valider comme tout bon formulaire l'utilisateur qui viens de s'inscrire par un email de confirmation
voici la methode que je compte utiliser :
- creation d'une chaine de 128 caractere de facon aleatoire
- verifier qu'aucun utilisateur ne la possede deja dans ma table "utilisateur" dans ma base de donnée mysql
- envoyer dans le mail de confirmation un lien avec cette chaine de caractere dans l'adresse pour activer l'utilisateur
la chaine est crée sans trop de difficulté
je voudrai connaitre la requete à taper pour verifier que personne ne l'a possede deja
je pense qu'elle se formule de cette facon :
$requete="select * FROM utilisateur where lien=$chaine" ;
$resultat=mysql_query($requete);
mais je ne vois pas comment savoir ce que contient $resultat (donc si la requete a trouvé quelques choses ou pas)
ensuite pas de probleme pour envoyer un mail , mais je voudrai savoir comment on fait pour passer en argument la chaine , que le lien arrive sur un fichier.php (qui contient la requete d'activation) et comment faire pour que ce fichier recupere la chaine passé en argument
voila j'espere avoir été clair dans mes explications ce qui n'est pas evident pour un novice ^^
en l'attente de vos reponse je vous remercie
leod
Configuration: Windows XP Firefox 2.0.0.11
Salut,
$var = md5( uniqid() ); tu obtiens une chaîne de 32 caractères qui doit suffire amplement. et il faut la créer après la vérification de l'utilisateur. pour la suite : <?php
$requete="select * FROM utilisateur where lien=$chaine" ; // tu devrais nommer les champs à retourner
$resultat=mysql_query($requete);
if( $resultat ) //si la requête a bien été exécutée
{
if( mysql_num_rows( $resultat ) === 1 ) //il y a bien un enregistrement dans la table
{
echo '<p>L\'utilisateur existe déjà.</p>'
}
else // pas d'enregistrement
{
// traitement
}
}
else // erreur d'exécution
{
echo '<p>Erreur d\'exécution de la requête.</p>'
}
?> et hop un p'tit tuto ! un autre plus orienté PHP. [ Mathieu ] « On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007. |
Désolé en faite mon probleme n'est pas tout a fait resolu
|
Salut,
if( $resultat ) //si la requête a bien été exécutée
{
if( mysql_num_rows( $resultat ) === 1 ) //il y a bien un enregistrement dans la table
{
echo '<p>L\'utilisateur existe déjà.</p>';
}
else // pas d'enregistrement
{
// traitement
}
}
else // erreur d'exécution
{
echo '<p>Erreur d\'exécution de la requête.</p>';
}
tant que tu es en phase de développement tu peux afficher ta requête au lieu d'un message, ça te permettra de tester la dite requête directement dans ta BDD pour trouver plus facilement l'erreur. if( $resultat ) //si la requête a bien été exécutée
{
if( mysql_num_rows( $resultat ) === 1 ) //il y a bien un enregistrement dans la table
{
echo '<p>L\'utilisateur existe déjà.</p>';
}
else // pas d'enregistrement
{
// traitement
}
}
else // erreur d'exécution
{
echo "<p>$requete</p>";
}
et j'avais oublié des points virgules… (ô_O)' [ Mathieu ] « On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007. |
Ok , merci mais en faite j'ai commencé par testé avec ta solution en corrigant les ;
|
Fais lui afficher la requête et teste la directement dans phpMyAdmin (ou équivalent).
$requete="select * FROM utilisateur where lien=$chaine" ; echo($requete); et quand je dis "nommer les champs" c'est de ne pas utiliser le '*'. $requete="select champ1, champ2 FROM utilisateur where lien=$chaine" [ Mathieu ] « On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007. |
Dans le code indiqué ( $requete="select champ1, champ2 FROM utilisateur where lien=$chaine"), ce qui ne va pas c'est qu'il faut mettre la chaîne entre apostrophes... $requete="select champ1, champ2 FROM utilisateur where lien='$chaine'" Et puis tant qu'à faire (relativement) propre, autant sécuriser un peu : $requete="select champ1, champ2 FROM utilisateur where lien='".mysql_escape_string($chaine)."'" Raph |