formulaire, envoi de mail

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 : formulaire, envoi de mail

Re: formulaire, envoi de mail

par ytzmi » 19 juin 2011, 17:20

bien, étant donné que je suis extrêmement débutante, et que j'ai du mal à comprendre, j'ai "résolu" mon souci.
lorsque le nouveau membre reçoit le mail avec la clé d'activation, je reçois le même mail.

il est certain que cette solution n'est pas la meilleure ni la plus adéquate, car cela m'oblige d'aller dans ma base sql pour avoir les infos.

merci pour vos aides.

Re: formulaire, envoi de mail

par ytzmi » 01 juin 2011, 18:08

bon, j'ai fait plusieurs essais avec ma "comprenette"....
 if ($Flag==1):
    $requete = "SELECT CONCAT (pseudo,password,email) FROM kdo WHERE Cle='$MailCle'";
    $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);
j'ai le message "Erreur : FUNCTION minikdo_flash.CONCAT does not exist"
et il est évident que je ne reçois pas de mail....

ensuite j'ai fait ceci :
 if ($Flag==1):
    $requete = "SELECT pseudo + password + email FROM kdo WHERE Cle='$MailCle'";
    $resultat = mysql_query($requete,$connexion) or die ("Erreur : ".mysql_error());
    mysql_close($connexion);
je reçois le mail sans le pseudo, m d p et email

et j'ai tenté aussi cette version :
 if ($Flag==1):
    $requete = "SELECT pseudo || password || email FROM kdo WHERE Cle='$MailCle'";
    $resultat = mysql_query($requete,$connexion) or die ("Erreur : ".mysql_error());
    mysql_close($connexion);
je reçois le mail "vide".

Voilà où j'en suis #-o

merci

Re: formulaire, envoi de mail

par ytzmi » 01 juin 2011, 17:30

Ne faut-il pas concaténer avec des points (.) ?
Et pourquoi récupères-tu tes informations avec Request ?
bonjour et merci pour ton aide.

déjà pour le php que tu m'as donné, une fois de plus cela ne marche pas.

donc, "concaténer" :?:

je viens d'aller chercher sur divers site pour savoir ce que c'est et je vais tenter de l'appliquer.

:priere:

merci

Re: formulaire, envoi de mail

par Ez3kiel » 31 mai 2011, 09:02

Si je reprend ton code plus haut ...
        // - 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);

?>
 
Surtout cette partie :
       $Texte.="Nom : '$Pseudo'\n";
       $Texte.="mot de passe : '$Password'\n";
       $Texte.="E-Mail : '$Email'\n";
Ne faut-il pas concaténer avec des points (.) ?
Et pourquoi récupères-tu tes informations avec Request ?

Re: formulaire, envoi de mail

par ytzmi » 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

Re: formulaire, envoi de mail

par linesoft » 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:

Re: formulaire, envoi de mail

par ytzmi » 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

Re: formulaire, envoi de mail

par Ryle » 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 :)

Re: formulaire, envoi de mail

par ytzmi » 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

Re: formulaire, envoi de mail

par Ryle » 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) ? ...

Re: formulaire, envoi de mail

par ytzmi » 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

Re: formulaire, envoi de mail

par ytzmi » 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...

Re: formulaire, envoi de mail

par Ryle » 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 :)

Re: formulaire, envoi de mail

par ytzmi » 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.

Re: formulaire, envoi de mail

par Ryle » 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 :)