8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je vous sollicite une nouvelle fois concernant un petit problème PHP,
j'ai sur mon site une page d'inscription très basique avec nom, prenom, ville, email, mot de passe,
pseudo, homme/femme/garçon/fille.

ma page de traitement php fonctionne parfaitement, mes données sont bien enregistrées dans ma base, mais j'aimerai y ajouter une petite fonctionnalité avec php mail()

en gros j'aimerai que lorsqu'on rempli le formulaire, si on choisit homme, à la validation un mail spécial homme soit envoyé au nouvel inscrit,
et si on choisit femme, un mail spécial femme soit envoyé à la nouvelle inscrite..
et de même en choisissant garçon ou fille.

Voici mon code PHP pour être un peu plus clair


  <?php
  function Verif_magicquotes ($chaine)
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
}

// Initialisation du message de réponse
$message = null;


// Si le formulaire est envoyé
if (isset($_POST['pseudo']))
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
   	$ville = (isset($_POST['ville']) && trim($_POST['ville']) != '')? Verif_magicquotes($_POST['ville']) : null;
	$email = (isset($_POST['email']) && trim($_POST['email']) != '')? Verif_magicquotes($_POST['email']) : null;
	$prenom = (isset($_POST['prenom']) && trim($_POST['prenom']) != '')? Verif_magicquotes($_POST['prenom']) : null;
	$sexe = (isset($_POST['sexe']) && trim($_POST['sexe']) != '')? Verif_magicquotes($_POST['sexe']) : null;
	$nomfamille = (isset($_POST['nomfamille']) && trim($_POST['nomfamille']) != '')? Verif_magicquotes($_POST['nomfamille']) : null;
	$passverif = (isset($_POST['passverif']) && trim($_POST['passverif']) != '')? Verif_magicquotes($_POST['passverif']) : null;
	
    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass,$ville,$email,$prenom,$sexe,$nomfamille,$passverif))
    {
    	if($pass==$passverif){
    	
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "";
         $database = "";
         $username = "";
         $password = "";
   
   
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         // Connexion à la base
         mysql_select_db($database, $connection);
   
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
   
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
         $nom = mysql_real_escape_string($pseudo);
         $pass = mysql_real_escape_string($pass);
         $ville = mysql_real_escape_string($ville);
        $email = mysql_real_escape_string($email);
           $prenom = mysql_real_escape_string($prenom);
           $sexe = mysql_real_escape_string($sexe);
           $nomfamille = mysql_real_escape_string($nomfamille);
           $cle = md5(microtime(TRUE)*100000);
			$ip = $_SERVER['REMOTE_ADDR'];
   
   
         // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
         $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'";
   
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
   
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec);
   

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat;
         if (isset($resultat['nb']) && $resultat['nb'] == 0)
         // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer
         {
             // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
             $insertion = "INSERT INTO membres(Nom,Prenom,Ville,Email,Pseudo,Pass,Sexe,Date_Enregistrement,Ip,Cle) VALUES('".$nomfamille."', '".$prenom."','".$ville."','".$email."','".$pseudo."','".$pass."','".$sexe."', NOW(),'".$ip."','".$cle."')";
         
             // Exécution de la requête d'insertion
             $inser_exec = mysql_query($insertion) or die(mysql_error());
       
             if ($inser_exec === true)
             {
             
             	$form = true;
    			echo '<script type="text/javascript">'
 . 'alert("Merci pour votre Inscription\nVous allez recevoir la confirmation\nPar mail dans quelques instants");'
 . 'window.location.replace("index.html");'
 . '</script>';
               ?>
   <meta charset="UTF-8">
<meta http-equiv="refresh" content="0;URL=.php">
<?
                
                
             }    
         }
         else
         {   // Le pseudo est déjà utilisé
         $form = true;
             echo '<script type="text/javascript">'
 . 'alert("Cet Email exite déjà");'
 . 'window.location.replace("index.html");'
 . '</script>';
         }
    }
    else
    {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
    $form = true;
         echo '<script type="text/javascript">'
 . 'alert("Les Mots de Passe ne sont pas identique");'
 . 'window.location.replace("index.html");'
 . '</script>';
         
    }
if($form)
{
	//On affiche un message sil y a lieu
	if(isset($message))
	{
		echo '<div class="message">'.$message.'</div>';
	}
	}}}

?>
     


Un grand merci par avance pour votre aide.
Modifié par budfoxob (13 Sep 2014 - 21:07)
Salut,

quel est le soucis du coup? Qu'est ce qui te bloque? On ne va pas faire le code Smiley langue
Sais-tu comment utiliser la fonction mail?
En soit rien de compliqué, tu dois faire une condition en fonction du choix du sexe, et construire le texte désiré, puis tu envois.
Bonjour Floreo et merci pour ton retour,

Alors en fait je sais comment utiliser la fonction mail, je l'ai d'ailleurs utilisée
pour le renvoi de mot de passe , qui fonctionne parfaitement,
mais la je suis un peu larguer, je ne sais pas comment et ou l'intégrer dans ce code.

Merci pour ton aide.
Tu as juste à la placer au moment où tu considères que le formulaire est valide, un peu comme pour ton enregistrement en base, vois-tu mieux?
Et bien oui c'est ce que je pensais ,
Du coup j'ai tenté un truc juste après
If ($inser_exec === true)
{$ form = true;

Mais ça ne fonctionne pas, peut être que je me suis planté dans le code mail, pourtant j'ai repris le code que j'avais pour le renvoi MDP !

J'ai tenté un truc du genre


If ($inser_exec === true) 
{$ form = true;

  If ($_POST['sexe'] ='homme') {
   $a_qui_j_envoie = $_POST['email'];
                //sujet
    $subject = utf8_decode($subject);
               $subject = mb_encode_mimeheader($subject,"UTF-8");
                $subject = "Inscription";
                //message   
                $msg  = "Bonjour ".$result['prenom']."<br/><br/>";
                
                //permet de savoir qui envoie le mail et d'y répondre
                $mailheaders = 'From: <support@domaine.com>' . "\r\n";
                $mailheaders .= "MIME-version: 1.0\n";
                $mailheaders .= "Content-type: text/html; charset= UTF-8\n";
                //on envoie l'email
                mail($a_qui_j_envoie, $subject, $msg, $mailheaders);
}

elseif { 
If ($_POST['sexe'] ='femme') {
......
}

 

Modifié par budfoxob (13 Sep 2014 - 19:45)
Regarde bien, tes conditions sont fausses pour ton test sur le sexe, tu utilises le signe "=" alors qu'une condition d'égalité nécessite "==" ou "===". Aussi, bien que ça fonctionne, tu as mis une majuscule au if, c'est "peu propre". Autre chose, tes données $_POST ne sont pas protégées, utilise plutôt $sexe.
Ah génial ,
Quel étourdi pour " == " ,

Donc tu penses qu'il est préférable que je mette
if($sexe == 'homme') {
?

Pour les majuscules des if, après vérification de mon code c'est bien en minuscule, ça doit être le site ici qui fait cette mise en forme !

Je vais tester tout ça,
Vraiment merci pour ton aide Smiley smile
Floreo,

J'ai suivi tes conseils,
mis "== "
Et j'ai changé "$_POST" par "$sexe"

Et ça fonctionne parfaitement, je reçois bien le mail à l'inscription en fonction du sexe,
Donc un grand merci à toi, pour ton aide et ta rapidité !

Affaire classée Smiley smile