Php mail de confirmation d'inscription

Résolu/Fermé
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 - 12 janv. 2008 à 13:35
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 - 14 janv. 2008 à 14:51
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
A voir également:

10 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
12 janv. 2008 à 15:48
salut,

128 caractères tu prévois très large !
avec un :
$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&eacute;j&agrave;.</p>'
	}
	else // pas d'enregistrement
	{
		// traitement
	}
}
else // erreur d'exécution
{
	echo '<p>Erreur d\'ex&eacute;cution de la requ&ecirc;te.</p>'
}

?>
et hop un p'tit tuto !
un autre plus orienté PHP.
3
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 2
12 janv. 2008 à 16:46
merci bien dalida

exactement ce que je cherchai et voulais savoir

merci beaucoup
1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
12 janv. 2008 à 17:02
content d'avoir pu t'aider, je coche "résolu".

et bon courage pour la suite !
-;o)
0
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 2
13 janv. 2008 à 17:25
désolé en faite mon probleme n'est pas tout a fait resolu

je ne comprend pas pourquoi mais il n'accepte pas la requete num_rows

je test la requete pour bien comprendre :

$requete="select * FROM utilisateur where lien=$chaine" ;
$resultat=mysql_query($requete);
$nbrequete=mysql_num_rows($resultat);
echo $nbrequete;

erreur retourner a la ligne : $nbrequete=mysql_num_rows($resultat);

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ....

je ne comprend pas ce qui ne va pas ? pouvez vous m'expliquer ce qu'il manque ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
13 janv. 2008 à 17:57
salut,

supplied argument is not a valid MySQL result
ça veut dire que $resultat ne contient pas le retour de ta requête.
donc la requête s'est mal exécutée.

c'est pour gérer ce cas que j'avais mis un test sur '$resultat'. car quand il y a un erreur de requête, 'mysql_query()' retourne 'false'.
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&eacute;j&agrave;.</p>';
	}
	else // pas d'enregistrement
	{
		// traitement
	}
}
else // erreur d'exécution
{
	echo '<p>Erreur d\'ex&eacute;cution de la requ&ecirc;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&eacute;j&agrave;.</p>';
	}
	else // pas d'enregistrement
	{
		// traitement
	}
}
else // erreur d'exécution
{
	echo "<p>$requete</p>";
}

et j'avais oublié des points virgules…
(ô_O)'
0
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 2
13 janv. 2008 à 18:15
ok , merci mais en faite j'ai commencé par testé avec ta solution en corrigant les ;

le probleme c'est que je l'ai mis dans un while pour qu'il creer une chaine jusqu'a ce qu'il ne la trouve pas dans la base de donnée

et il tombe en boucle dans l'erreur d'execution

la requete est donc mauvaise

je ne vois pas du tout ce qui cloche

j'ai une table dans ma base de donnée qui s'appel utilisateur avec un champ lien qui doit contenir la chaine

donc pour verifier que la chaine n'est pas dans la table la requete est ?

et je n'ai pas compris ce que tu me disai de faire :

"tu devrais nommer les champs à retourner"

voila excuse moi de t'embeter avec tout ca mais je rame quelques peu ...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
13 janv. 2008 à 18:53
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" 
0
R4f Messages postés 441 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
13 janv. 2008 à 20:09
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
0
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 2
14 janv. 2008 à 13:54
ok merci je vais test tout ca
0
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 2
14 janv. 2008 à 14:51
ca marche nikel !

c'etait juste les '''''

un grand merci a vous 2 ^^ pour m'avoir repondu
je coche resolu
0