Rechercher : dans
Par :

Php mail de confirmation d'inscription

Dernière réponse le 14 jan 2008 à 14:51:39 leod, le 12 jan 2008 à 13:35:32 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « php mail de confirmation d'inscription » dans :
[CCM] Je ne reçois pas le mail de confirmation VoirSi vous vous êtes inscrit à CommentCaMarche mais ne recevez pas l'e-mail de confirmation (pour valider votre inscription), lisez ceci : 1. L'adresse e-mail que vous avez fournie est d'AOL 2. Autres cas 3. Pour recevoir à nouveau l'e...
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
Faire une newsletter VoirFaire une newsletter Une newsletter est une lettre d'information envoyée périodiquement par mail à des abonnés. Composée de texte, illustrations, liens renvoyant vers votre site, son contenu peut être par exemple une sélection de produits, un...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

Dalida, le 12 jan 2008 à 15:48:57
  • +2

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.

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

2

leod, le 12 jan 2008 à 16:46:32

Merci bien dalida

exactement ce que je cherchai et voulais savoir

merci beaucoup

Répondre à leod

3

Dalida, le 12 jan 2008 à 17:02:35

Content d'avoir pu t'aider, je coche "résolu".

et bon courage pour la suite !
-;o)

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

4

leod, le 13 jan 2008 à 17:25:15

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 ?

Répondre à leod

5

Dalida, le 13 jan 2008 à 17:57:07

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)'

[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

6

leod, le 13 jan 2008 à 18:15:59

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 ...

Répondre à leod

7

Dalida, le 13 jan 2008 à 18:53:42

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.

Répondre à Dalida

8

R4f, le 13 jan 2008 à 20:09:24

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

Répondre à R4f

9

leod, le 14 jan 2008 à 13:54:27

Ok merci je vais test tout ca

Répondre à leod

10

 leod, le 14 jan 2008 à 14:51:39

Ca marche nikel !

c'etait juste les '''''

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

Répondre à leod
Collection CommentÇaMarche.net