formulaire, envoi de mail

Eléphanteau du PHP | 30 Messages

27 mai 2011, 00:08

Bonjour,

je suppose que le sujet a déjà été traité, mais je vous propose le script qui me pose problème.

quand je fais l'inscription, il m'est mis comme message d'erreur "Votre inscription est incomplète. Vous devez vous réinscrire."
hors, lorsque je vais dans mon "phpmyadmin", mon pseudo, mon m d p et mon @ y sont inscrits.

donc, l'inscription se fait mais pas sur le site et je ne reçois pas de mail, ni pour celui qui s'inscrit ni le webmaster. Bon, vous allez me dire "logique que tu ne reçois pas de mail, vu le message d'erreur affiché"

voici le script.

j'ai beau chercher, je ne vois pas l'erreur... mais à trop chercher, je ne vois plus rien.
<?php
include ('protected/login.inc.php');
//include ('protected/ctrl.inc.php');

$Pseudo1=$_POST["pseudo1"];
$Pseudo2=$_POST["pseudo2"];
$Password1=$_POST["password1"];
$Password2=$_POST["password2"];
$Email1=$_POST["mail1"];
$Email2=$_POST["mail2"];

$Message_envoyé="Dans quelques instants tu vas trouver un E-Mail dans ta boîte à lettres<BR> t'indiquant le lien à suivre pour activer ton compte.<BR> La propagation de ce courrier peut prendre quelques minutes";
$Message_non_envoyé="Une erreur indéterminée s'est produite dans la procédure d'inscription. Vérifies ton formulaire.";


// ON VERIFIE LES CHAMPS OBLIGATOIRES
if ($Pseudo1=="") exit("Tu dois choisir un nom");
if ($Pseudo2=="") exit("Tu dois confirmer ton nom");
if ($Password1=="") exit("Tu dois choisir un mot de passe");
if ($Password2=="") exit("Tu dois confirmer ton mot de passe");
if ($Email1=="") exit("L'adresse E-Mail est obligatoire");
if ($Email2=="") exit("Tu dois confirmer ton adresse E-Mail");

//ON VERIFIE LA COHERENCE DE LA SAISIE
if ($Pseudo1!=$Pseudo2) exit ("le Nom et sa confirmation sont différents. INSCRIPTION INVALIDE");
if ($Password1!=$Password2) exit ("le mot de passe et sa confirmation sont différents. INSCRIPTION INVALIDE");
if ($Email1!=$Email2) exit ("l'adresse E-Mail et sa confirmation sont différentes. INSCRIPTION INVALIDE");

//ON RECUPERE L'ENREGISTREMENT
$Id = -1;
$sql = "SELECT * FROM kdo WHERE Pseudo='$Pseudo1' AND Password='$Password1'";
$resultat = mysql_query($sql,$connexion) or die ("Erreur : ".mysql_error());

//SI L'ENREGISTREMENT EXISTE, ON RECUPERE LES VALEURS
$Enregistrements=mysql_num_rows($resultat);
if ($Enregistrements>0):
$row = mysql_fetch_row($resultat);
$Id = $row[0];
$Pseudo = $row[1];
$Password = $row[2];

endif;

//SI LE PSEUDO A DEJA ETE UTILISE, ON ARRETE L'INSCRIPTION
If ($Id!=-1 && $Pseudo==$Pseudo1):
exit("Ce Nom est déjà utilisé, tu dois en choisir un autre.");
endif;

//SI LE MOT DE PASSE A DEJA ETE UTILISE, ON ARRETE L'INSCRIPTION
If ($Id!=-1 && $Password==$Password1):
exit("Ce mot de passe est déjà utilisé, tu dois en choisir un autre.");
endif;

//SI LE COMPTE EXISTE, ON ARRETE L'INSCRIPTION
If ($Id!=-1 && $FlagActivation=='1'):
exit("Ton compte est déjà actif, tu ne peux pas en créer un second avec la même adresse E-mail.");
endif;

//ON MET LE FLAG A 1 OU 2 SELON QUE LE COMPTE EST A ACTIVER OU A CREER
if ($Id==-1):
$Flag=2; //Le compte est à créer
endif;

If ($Id!=-1 && $FlagActivation=='0'):
$Flag=1; //Le compte est à activer
endif;

// GENERATION D'UNE CLE ALEATOIRE. SI LE VISITEUR EST DEJA INSCRIT, ON N'EN TIENDRA PAS COMPTE;
$Clé = md5(microtime(TRUE)*100000);

//SI LE COMPTE EST A CREER, ON ENREGISTRE LES INFORMATIONS DANS LA BASE DE DONNEES
iF ($Flag==2):
$requete = "INSERT INTO kdo (Pseudo, Password, Email, Cle)
VALUES
('$Pseudo1', '$Password1', '$Email1', '$Clé')";
$resultat = mysql_query($requete,$connexion);
//S'il y a une erreur
if ($resultat==false):
exit("Ton inscription n'a pu être effectuée pour une raison inconnue, vérifies ton formulaire.");
endif;
else :
//Le compte est à activer, on le met d'abord à jour dans changer la clé chiffrée et l'adresse E-Mail
$requete = "UPDATE kdo SET pseudo='$Pseudo1', password='$Password1' WHERE id=$Id";
$resultat = mysql_query($requete,$connexion);

//S'il y a une erreur
if ($resultat==false) exit("Ton inscription n'a pu être effectuée pour une raison inconnue, vérifies ton formulaire.");

endif;

//ON RECUPERE LES IDENTIFIANTS DU VISITEUR S'IL EST ENREGISTRE
$sql = "SELECT Pseudo, Password FROM kdo WHERE Email='$Email'";
$resultat = mysql_query($sql,$connexion) or die ("Requête incorrecte");
while ($row = mysql_fetch_array($resultat))
{
$Pseudo = $row['Pseudo'];
$Password=$row['Password'];
}

//SI ON NE TROUVE PAS LES IDENTIFIANTS ON NE VA PAS PLUS LOIN
If ($Pseudo=="" OR $Password==""):
exit("Votre inscription est incomplète. Vous devez vous réinscrire.");
endif;

//TOUT EST BON - PREPARATION DU MESSAGE D'ACTIVATION
$Sujet = "Procédure d'inscription";
$Entete = "webmaster@$SERVER_NAME";
$Destinataire = $Email1;
$Destinataire = "[email protected]";
//$destinataire .= "ytz webmaster<[email protected]>";

//FORMULE DE POLITESSE

$Texte .= "Ravie que ce site ait trouvé un intérêt à tes yeux\n\n";
$Texte .= "Te voilà avec ta propre page.\n\n";
$Texte .= "Ton nom est : $Pseudo\n\n";
$Texte .= "Ton mot de passe est : $Password\n\n";
$Texte .= "Je te conseille de le noter quelque part.\n";
$Texte .= "Ton adresse E-Mail et tes identifiants ne seront pas divulgués. A toi de les transmettre à ceux de ton entourage pour qu'ils puissent venir écrire ou choisir un cadeau.

---------------
Ceci est un mail automatique, Merci de ne pas y répondre.";

$sendmail=mail($Destinataire, $Sujet, $Texte, $Entete) ; // Envoi du mail
if ($sendmail):
echo $Message_envoyé;
else:
echo $Message_non_envoyé;
endif;

//FERMETURE DE LA CONNEXION
mysql_close($connexion);

?>
Si vous estimez que ceci est un doublon des autres messages postés, veuillez m'en excuser

merci


Configuration: Windows 7 / Firefox 4.0.1
Modifié en dernier par ytzmi le 29 mai 2011, 09:44, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

27 mai 2011, 01:14

Je sais pas mais il faut refaire ta gestion des erreurs parce que là tu t'arrête à chacune d'entre elle et tu sort par un exit ce qui n'est pas l'idéal. En refaisant ton système tu trouveras certainement mieux l'erreur dans ton script.

Voilà un exemple de ce que l'on peut faire en enregistrant les erreurs dans un tableau :
$erreurs = array();
//...
if ($Pseudo1=="") $erreurs[] ="Tu dois choisir un nom";
if ($Pseudo2=="") $erreurs[] ="Tu dois confirmer ton nom";
if ($Password1=="") $erreurs[] ="Tu dois choisir un mot de passe";

//etc..

//si tout est ok (pas d'erreurs) tu envoies le mail
if(isset($erreurs) && count($erreurs)==0)
{
// code envoi du mail
}
else if(isset($erreurs))
{
// sinon tu liste toutes les erreurs en listant ton tableau d'erreur
foreach ($erreurs as $value) echo '- '.$value.'<br />';
}


Eléphanteau du PHP | 15 Messages

27 mai 2011, 10:29

Salut,

apparemment si ton erreur c'est : "Votre inscription est incomplète. Vous devez vous réinscrire"
c'est que ça ce passe par ici :

//ON RECUPERE LES IDENTIFIANTS DU VISITEUR S'IL EST ENREGISTRE
$sql = "SELECT Pseudo, Password FROM kdo WHERE Email='$Email'";
$resultat = mysql_query($sql,$connexion) or die ("Requête incorrecte");
while ($row = mysql_fetch_array($resultat))
{
$Pseudo = $row['Pseudo'];
$Password=$row['Password'];
}

//SI ON NE TROUVE PAS LES IDENTIFIANTS ON NE VA PAS PLUS LOIN
If ($Pseudo=="" OR $Password==""):
exit("Votre inscription est incomplète. Vous devez vous réinscrire.");
endif;


Ce qui déclenche l'erreur c'est la condition : If ($Pseudo=="" OR $Password=="")
ce qui veut dire que $pseudo ou $password est vide donc regarde du coté de la requête au dessus :
$sql = "SELECT Pseudo, Password FROM kdo WHERE Email='$Email'";

tu devrais afficher la requête avec un echo $sql par ex et l'essayer directement dans phpmyadmin pour voir si elle fonctionne.
Agence de communication et de formation aux outils du web marketing http://www.linesoft.fr
Plateforme d'emailing - création de newsletter - gestion de campagnes d' email marketing http://www.emailing-express10.fr
Ressources pour webmaster gratuites ,icones,fichiers vectoriels,psd ... http://www.ressource-web.fr

Eléphanteau du PHP | 30 Messages

27 mai 2011, 18:22

bonjour

oui, en effet, je me suis aperçue que j'avais mis l'activation et l'inscription dans le même php.
il était certain que cela ne pouvait pas marcher.

j'ai corrigé, c'est bon

merci à vous deux pour ce premier souci. =D>

mon deuxième problème, c'est pouvoir avoir une copie de l'inscription. :roll:

en faisant simple avec
$Sujet = "Procédure d'inscription";
$Entete = "webmaster@$SERVER_NAME";
$Destinataire = $Email1;
celui qui s'inscrit reçoit sa procédure

mais si je fais :
$Sujet = "Procédure d'inscription";
$Entete = "webmaster@$SERVER_NAME";
$Destinataire = $Email1;
$Destinataire = "[email protected]";
//$Derstinataire .= "ytz webmaster<[email protected]>";
seul, le webmaster reçoit l'inscription et pas le "souscripteur", hors il est plus important que ce soit le souscripteur qui reçoive son inscription

D'autre part, en recevant son inscription en copie, ce n'est pas la solution la plus simple car je serais obligée d'aller dans mon phmyadmin pour voir qui s'est inscrit

je vais encore chercher... :priere:

mais si voyez une meilleure solution, je suis preneuse... :D :lol:
Modifié en dernier par ytzmi le 29 mai 2011, 09:43, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2011, 18:42

C'est sans doute parce que tu remplaces la valeur de $Destinataire avec ton email au lieu de compléter celle-ci :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

28 mai 2011, 00:08

bonjour

j'y ai travaillé toute la soirée et là, j'en peux plus... mais bon, j'avance à petit pas.

je vous redonne mon script car je n'arrive toujours pas à avoir une copie ou les renseignements quand l'activation est faite.

§§§§§§§§§
<?php
  include ('protected/login.inc.php');
  //include ('protected/ctrl.inc.php');

    	function code_check($code="",$BL="")
{
	require "connect.inc.php";
}		
  $Pseudo1=$_POST["pseudo1"];
  $Pseudo2=$_POST["pseudo2"];
  $Password1=$_POST["password1"];
  $Password2=$_POST["password2"];
  $Email1=$_POST["mail1"];
  $Email2=$_POST["mail2"];

  $Message_envoyé="Dans quelques instants tu vas trouver un E-Mail dans ta boîte à lettres<BR> t'indiquant le lien à suivre pour activer ton compte.<BR> La propagation de ce courrier peut prendre quelques minutes";
  $Message_non_envoyé="Une erreur indéterminée s'est produite dans la procédure d'inscription. Vérifies ton formulaire.";


  // ON VERIFIE LES CHAMPS OBLIGATOIRES
  if ($Pseudo1=="") exit("Tu dois choisir un nom");
  if ($Pseudo2=="") exit("Tu dois confirmer ton nom");
  if ($Password1=="") exit("Tu dois choisir un mot de passe");
  if ($Password2=="") exit("Tu dois confirmer ton mot de passe");
  if ($Email1=="") exit("L'adresse E-Mail est obligatoire");
  if ($Email2=="") exit("Tu dois confirmer ton adresse E-Mail");

  //ON VERIFIE LA COHERENCE DE LA SAISIE
  if ($Pseudo1!=$Pseudo2) exit ("le Nom et sa confirmation sont différents. INSCRIPTION INVALIDE");
  if ($Password1!=$Password2) exit ("le mot de passe et sa confirmation sont différents. INSCRIPTION INVALIDE");
  if ($Email1!=$Email2) exit ("l'adresse E-Mail et sa confirmation sont différentes. INSCRIPTION INVALIDE");
  
  //ON RECUPERE L'ENREGISTREMENT
  $Id = -1;
  $sql = "SELECT * FROM kdo WHERE Pseudo='$Pseudo1' AND Password='$Password1'";
  $resultat = mysql_query($sql,$connexion) or die ("Erreur : ".mysql_error());
  
  //SI L'ENREGISTREMENT EXISTE, ON RECUPERE LES VALEURS
  $Enregistrements=mysql_num_rows($resultat);
  if ($Enregistrements>0):  
    $row = mysql_fetch_row($resultat);
    $Id = $row[0];
    $Pseudo = $row[1];
    $Password = $row[2];
    $FlagActivation=$row[5];
    
  endif;

    //SI LE PSEUDO A DEJA ETE UTILISE, ON ARRETE L'INSCRIPTION
  If ($Id!=-1  && $Pseudo==$Pseudo1):
    exit("Ce Nom esr déjà utilisé, tu dois en choisir un autre.");
  endif;

  //SI LE MOT DE PASSE A DEJA ETE UTILISE, ON ARRETE L'INSCRIPTION
  If ($Id!=-1  && $Password==$Password1):
    exit("Ce mot de passe est déjà utilisé, tu dois en choisir un autre.");
  endif;
  
  //SI LE COMPTE EXISTE, ON ARRETE L'INSCRIPTION
  If ($Id!=-1 && $FlagActivation=='1'):
    exit("Ton compte est déjà actif, tu ne peux pas en créer un second avec la même adresse E-mail.");
  endif;

  //ON MET LE FLAG A 1 OU 2 SELON QUE LE COMPTE EST A ACTIVER OU A CREER
  if ($Id==-1):
    $Flag=2; //Le compte est à créer
  endif;
  
  If ($Id!=-1 && $FlagActivation=='0'):
    $Flag=1; //Le compte est à activer
  endif;

  // GENERATION D'UNE CLE ALEATOIRE. SI LE VISITEUR EST DEJA INSCRIT, ON N'EN TIENDRA PAS COMPTE;
  $Clé = md5(microtime(TRUE)*100000);

  //SI LE COMPTE EST A CREER, ON ENREGISTRE LES INFORMATIONS DANS LA BASE DE DONNEES
  iF ($Flag==2):
    $requete = "INSERT INTO kdo (Pseudo, Password, Email, Cle)
                VALUES 
			    ('$Pseudo1', '$Password1', '$Email1', '$Clé')";
	$resultat = mysql_query($requete,$connexion);
    //S'il y a une erreur
    if ($resultat==false):
    	exit("Ton inscription n'a pu être effectuée pour une raison inconnue, vérifies ton formulaire.");
	endif;
  else :
    //Le compte est à activer, on le met d'abord à jour dans changer la clé chiffrée et l'adresse E-Mail
    $requete = "UPDATE kdo SET pseudo='$Pseudo1', password='$Password1' WHERE id=$Id";
    $resultat = mysql_query($requete,$connexion);
  
    //S'il y a une erreur
    if ($resultat==false) exit("Ton inscription n'a pu être effectuée pour une raison inconnue, vérifies ton formulaire.");
	
  endif;

    //TOUT EST BON - PREPARATION DU MESSAGE D'ACTIVATION
	
  $Sujet   = "Procédure d'inscription";
  $Entete = "webmaster@$SERVER_NAME";
  $Destinataire = $Email1;
  	
  //FORMULE DE POLITESSE
  // Salutation
	if(date('G') >= 0 && date('G') < 18) {
	echo 'Bonjour';
	} else {
	echo 'Bonsoir';
	}
  $Texte .= " \n\n";	
  $Texte .= "Ravie que ce site ait trouvé un intérêt à tes yeux\n\n";
  $Texte .= "Te voilà avec ta propre page.\n\n";
  $Texte .= "Ton adresse E-Mail et tes identifiants ne seront pas divulgués. A toi de les transmettre à ceux de ton entourage pour qu'ils puissent venir écrire ou choisir un cadeau.\n\n";
  $Texte .= 'Mais avant tout, il faut activer ton compte. Pour cela, cliques sur le lien ci dessous
ou copier/coller dans ton navigateur internet.

http://kdo.free.fr/activation.php?log='.urlencode($Pseudo1).'&cle='.urlencode($Clé).'&flag='.urlencode($Flag).'

---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';

  $sendmail=mail($Destinataire, $Sujet, $Texte, $Entete) ; // Envoi du mail

// - Le webmaster recoit un mail lorsque l'inscription est validé

    if ($Flag==1):
      {
       $subject="Nouvelle inscription pour Kdo Flash";
       $message="Bonjour,\n\n";
       $message.="Un nouveau membre vient de s'inscrire :\n";
       $message.="Nom : $Pseudo\n";
       $message.="mot de passe : $Password\n";
       $message.="E-Mail : $Email\n";
       $headers="From: webmaster@SERVER_NAME\n";
       @mail($adresse_webmaster, $subject, $message, $headers);
      }
 endif;
 
  if ($sendmail):
    echo $Message_envoyé;
  else:
    echo $Message_non_envoyé;
  endif;

  //FERMETURE DE LA CONNEXION
  mysql_close($connexion);

?>
§§§§§§§§§§§
j'ai eu je ne sais combien d'erreur de syntaxe, mais il semblerai que je les ai corrigé, mais de copie ou d'annonce d'un nouvel inscrit.

puis-je espérer un peu de votre aide et de vos bons yeux ? spv, merci.
Modifié en dernier par ytzmi le 29 mai 2011, 09:42, modifié 2 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 mai 2011, 10:07

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ



Concernant l'envoi du second mail, si celui-ci n'est pas envoyé c'est que :
- soit tu ne rentres pas dans le if() parce que $Flag n'est pas égal à 1
- soit que $adresse_webmaster ne contient pas ton adresse email
- soit que la fonction mail retourne une erreur, mais comme tu as collé un opérateur de silence devant (le @), tu demandes explicitement à php de ne surtout pas t'informer en cas d'erreur pour être sur de ne pas de pouvoir le corriger s'il y a un problème :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

29 mai 2011, 09:50

bonjour

#-o désolée, mais j'ai réparé mon erreur dans mes messages, je les ai mis en "
" 

et Miracle, je reçois enfin le message m'annonçant un nouveau membre.

oui, il manquait l'adresse du webmaster dans mon login.inc.php  #-o 

il se peut que je revienne pour un autre souci toujours à propos de ce mail de confirmation, donc je ne clos pas ce sujet pour le moment, si c'est possible.

en attendant [size=200]grand merci[/size] pour ce problème, je suis plus légère et je vais pouvoir appréhender le reste...

Eléphanteau du PHP | 30 Messages

29 mai 2011, 18:11

re-bonjour

donc, le premier problème est résolu, je reçois un mail m'avisant d'une nouvelle inscription.

mais il est "vide", c'est à dire sans le pseudo, le m d p et l'@.

J'ai fait je ne sais combien d'essai depuis 15h00 et j'en reviens à vous... 8-|

Voici le dernier que j'ai "pondu".

il vient à la suite de demande d'activation du compte.
	// - Le webmaster recoit un mail lorsque l'inscription est validé

    if ($Flag==1):
    $requete = "UPDATE kdo SET Activation='1' WHERE Cle='$MailClé'";
    $resultat = mysql_query($requete,$connexion) or die ("Erreur : ".mysql_error());
    mysql_close($connexion);
    
	 //ON RECUPERE LES IDENTIFIANTS
	 $Pseudo = $_REQUEST['Pseudo'];
	 $Password = $_REQUEST['Password'];
	 $Email = $_REQUEST['Email'];
	 
	 //Envoi du message au webmaster
	 
  	  $Sujet   = "Nouvelle inscription au site Mini Kdo";
	  $Entete = "webmaster@$SERVER_NAME";
	  $Destinataire = $Email;
	
	   $subject="Nouvelle inscription pour Mini Kdo Flash";
       $Texte="Bonjour,\n\n";
       $Texte.="Un nouveau membre vient de s\'inscrire :\n";
       $Texte.="Nom : '$Pseudo'\n";
       $Texte.="mot de passe : '$Password'\n";
       $Texte.="E-Mail : '$Email'\n";
       $headers="From: webmaster@SERVER_NAME\n";
       @mail($adresse_webmaster, $subject, $Texte, $headers);
		
	  //FERMETURE DE LA CONNEXION
	endif;
    mysql_close($connexion);

?>
je suppose que vous avez compris où est mon erreur, mais moi non. :oops:

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 mai 2011, 18:28

Ton problème doit provenir du fait que $_REQUEST['Pseudo'] et les autres sont vides à ce moment là... d'où proviennent les pseudo, pass et email que tu veux envoyer ? sont-ils saisis par l'utilisateurs et envoyés dans le request (dans ce cas, peut être une erreur dans le nom du champ) ? sont-ils présent en base (dans ce cas, c'est pas le request, mais une requête select à faire) ? ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

29 mai 2011, 20:19

Ton problème doit provenir du fait que $_REQUEST['Pseudo'] et les autres sont vides à ce moment là... d'où proviennent les pseudo, pass et email que tu veux envoyer ? sont-ils saisis par l'utilisateurs et envoyés dans le request (dans ce cas, peut être une erreur dans le nom du champ) ? sont-ils présent en base (dans ce cas, c'est pas le request, mais une requête select à faire) ? ...

oulah.... =P~

si j'ai bien compris ma façon de faire,

1 - il y a inscription sur une page formulaire
2 - il reçoit un mail pour activer son inscription
3 - il l'active
4 - dès l'activation, il est redirigé sur le site et en même temps, du fait qu'il a activé, je reçois un mail où devrait être écrit son pseudo, son m d p et son @.

où sont ses renseignements ?
dans ma base sql.

donc, en relisant tes questions, ce serait une requête select .... :oops:
j'écris cela comment ? :priere:

je dois avouer que je fais les choses sans trop savoir ce que je fais et je suis éblouie quand ça marche.
je vais à la "pêche", je prends, j'adapte par rapport à ce que je comprends mais là, je n'ai rien trouvé sur ce sujet.

voilà où j'en suis, je suis nulle de chez débutant. Car pour faire 5 pages (formulaire, identification, inscription, activation et la page index), sans parler de faire ma structure SQL, j'ai mis 2 semaines à raison de 4 à 5 heures par jour. mais, je ne me plains pas, loin de là.
je veux y arriver, mais là, bien souvent, je ne comprends pas ce que l'on me dit, c'est comme une langue étrangère dont je cerne quelques mots et j'essaye de comprendre le reste...

mais on s'en fout de ça, je dois fatiguer, là.

que dois-je faire (hormis d'abandonner) :wink:

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 mai 2011, 22:04

Et ben on va essayer de traduire un peu tout ça :)

$_REQUEST[...] signifie que tu fais appel à une variable qui a été passée par get (url), post (formulaire) ou présente dans un cookie... lorsque l'internaute active son compte et est redirigé, ces informations ne sont pas transmises dans le request (du coup quand tu essayes de les récupérer tu as des valeurs vides)

Si tu veux récupérer les login, mdp et email de l'utilisateur, il faut effectivement que tu ailles chercher ces informations dans ta base de données. En gros, de la même façon que tu authentifies l'utilisateur en allant contrôler l'identifiant et le mot de passe en base, il faut que tu ailles chercher les champs login, mdp et email de l'utilisateur qui vient d'activer son compte (à partir de son id ou tout autre élément qui te permet de savoir quel enregistrement retrouver :))

En gros, quand ton utilisateur reçoit son mail pour activer son compte, il doit avoir un lien avec un identifiant qui te permet lorsqu'il accède à ton site, de savoir quel utilisateur est en train d'activer son compte. Cet identifiant doit également te permettre de faire une requête qui te retournera les informations de cet utilisateur afin de pouvoir les inclure dans ton mail...

En espérant que ce soit un peu plus clair :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

29 mai 2011, 23:33

Et ben on va essayer de traduire un peu tout ça :)

En gros, quand ton utilisateur reçoit son mail pour activer son compte, il doit avoir un lien avec un identifiant qui te permet lorsqu'il accède à ton site, de savoir quel utilisateur est en train d'activer son compte. Cet identifiant doit également te permettre de faire une requête qui te retournera les informations de cet utilisateur afin de pouvoir les inclure dans ton mail...

En espérant que ce soit un peu plus clair :)
Etre un peu plus clair avec moi, y a du boulot ! #-o

bon, si je reprends le mail que reçoit le nouveau membre, je pense que le lien qui relie l'utilisateur au compte à activer doit être....


http://kdo.free.fr/activation.php?log=y ... 4bd&flag=2

le pseudo et la clé... c a d : ytzmi et la clé.

c'est ça ?

donc, j'ai écrit ceci :
 if ($Flag==1):
    
    $requete = "SELECT pseudo,password,email FROM kdo WHERE Pseudo = '$PseudoCle'";
	 $resultat = mysql_query($requete,$connexion) or die ("Erreur : ".mysql_error());

 //Envoi du message au webmaster
	
  	  $Sujet   = "Nouvelle inscription au site Mini Kdo";
	  $Entete = "webmaster@$SERVER_NAME";
	  $Destinataire = $Email;
	
	   $subject="Nouvelle inscription pour Mini Kdo Flash";
       $Texte="Bonjour,\n\n";
       $Texte.="Un nouveau membre vient de s\'inscrire :\n";
       $Texte.="Nom : $pseudo=['pseudo'].\n";
       $Texte.="mot de passe : $password.\n";
       $Texte.="E-Mail : '$email='email'\n";
       $headers="From: webmaster@SERVER_NAME\n";
       @mail($adresse_webmaster, $subject, $Texte, $headers);
	
	  //FERMETURE DE LA CONNEXION
	endif;
    mysql_close($connexion);
(fais pas attention au texte = nom, m d p et email, car je ne sais pas lequel est bon, et je ne reçois rien comme tu t'en doutes)

mais est-ce que au moins le début, la ligne $requete et $resultat sont bons ?
est-ce que je dois rajouter autre chose ?

on va y aller ligne par ligne.... :cry:

merci pour ta patience

Eléphanteau du PHP | 15 Messages

30 mai 2011, 09:58

Bonjour,
je me permet de revenir dans la discutions.
voici comment j’écrirais ton code .

si ca ne te renvoi toujours rien vérifie ta requête dans phpmyadmin et regarde si ta variable $PseudoCle qui est dans le where de la requete à bien les bonnes infos

encore une petite chose : si la variable $PseudoCle est récupérée depuis l'URI n'oublie pas de protéger les caractères non valides en rajoutant mysql_real_escape_string() dans ta requete comme ca :
$requete = "SELECT pseudo,password,email FROM kdo WHERE Pseudo = '".mysql_real_escape_string($PseudoCle)."'";
if ($Flag==1):
   
    $requete = "SELECT pseudo,password,email FROM kdo WHERE Pseudo = '$PseudoCle'";
    $resultat = mysql_query($requete,$connexion) or die ("Erreur : ".mysql_error());

    $info=mysql_fetch_assoc($resultat);

 //Envoi du message au webmaster
       
          $Sujet   = "Nouvelle inscription au site Mini Kdo";
          $Entete = "webmaster@$SERVER_NAME";
          $Destinataire = $Email;
       
           $subject="Nouvelle inscription pour Mini Kdo Flash";
       $Texte="Bonjour,\n\n";
       $Texte.="Un nouveau membre vient de s\'inscrire :\n";
       $Texte.="Nom : ".$info['pseudo']."\n";
       $Texte.="mot de passe : ".$info['password']."\n";
       $Texte.="E-Mail : '.$info['email']."\n";
       $headers="From: webmaster@SERVER_NAME\n";
       @mail($adresse_webmaster, $subject, $Texte, $headers);
       
          //FERMETURE DE LA CONNEXION
        endif;
    mysql_close($connexion);
 
bon courage :wink:
Agence de communication et de formation aux outils du web marketing http://www.linesoft.fr
Plateforme d'emailing - création de newsletter - gestion de campagnes d' email marketing http://www.emailing-express10.fr
Ressources pour webmaster gratuites ,icones,fichiers vectoriels,psd ... http://www.ressource-web.fr

Eléphanteau du PHP | 30 Messages

30 mai 2011, 15:37

bonjour

merci pour ta réponse mais j'abandonne !

j'ai tout essayé dans les limites de mes compétences qui sont très basses.

du moment que je reçois un mail me disant que j'ai un nouveau membre inscrit et bien j'irai dans ma base MySql et je verrais les renseignements.

certes, il aurait été plus intéressant pour moi de les avoir dans le mail.

tant pis, de toutes les façons, il n'y aura pas foule dans la boîte aux lettres.

là, il faut que j'avance et j'ai un autre problème, c'est comment accéder à la page après s'être identifier.
donc, je vais ouvrir un autre "sujet".

mais si d'autres ont des solutions, je reste preneuse.

merci pour votre aide