Page 1 sur 1

Formulaire de contact session start

Posté : 23 mai 2013, 20:05
par reverb
Bonjour à tous,
J'ai précédemment réussi à créer un espace membre qui inclut l'inscription, la connexion et la déconnexion.
J'aimerais faire en sorte que le pseudo de la personne connecté et son mail, viennent automatiquement s'insérer lorsque le membre accède a ma page "contact".

Voici le code de ma page contact.php actuelle :
<?php session_start(); ?>
<!DOCTYPE HTML>
<html>
<link rel="shortcut icon" title="crobara2bal" type="image/png" href="mafavicon.png" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Vous cherchez à contacter Crobara2bal envoyez nous votre message à partir du formulaire de contact." />
<meta name="keywords" content="contact, contactez-nous, message, formulaire, suggestion, site, objet" />
<title>Contact / Contacter Crobara2bal, ses artistes, webmaster, etc...</title>
<link href="css1.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="container">
<?php include("header.inc.php"); ?>
<?php include("menus.inc.php"); ?>
 <div id="corpscontact">
 <div id="retourselect">
 <a href="contact.php" title="recharger la page"><p class="titre1">Contact</p></a>
 </div>
  <div id="formulairecontact">
  <p class="texte3">Formulaire de contact</p>
<form id="formcontact" method="post" action="contact.php" enctype="multipart/form-data">

 <p class="classconta"><label for="pseudo">Votre pseudo</label> : <br /><input type "text" name="pseudo" id="pseudo" placeholder="20 caractères maximum" size="30" maxlength="20" /></p>
 
 <p class="classconta">
  <label for"email">Votre E-mail : </label><br />
 <input type="email" name="email" id="email" /></p>
 
 <p class="classconta">
       <label for="objet">Objet du message ?</label><br />
       <select name="objet" id="objet">
           <option value="apdsite">A propos du site</option>
           <option value="demandedessin">Demande de Dessin</option>
           <option value="dprofessionelle">Demande professionelle</option>
           <option value="autre">Autre...</option>
       </select>
   </p>
 
 <p class="classconta">
<label for="ameliorer">Votre message : </label><br />
       <textarea name="message" id="message" row="10" clols="50"></textarea></p>
 
 <p class="classconta"><input type="submit" value="Envoyer" /></p>

</form>
<?php
if(isset($_POST['pseudo']))      $pseudo=$_POST['pseudo'];
else      $pseudo="";

if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";

if(isset($_POST['objet']))      $objet=$_POST['objet'];
else      $objet="";

if(isset($_POST['message']))      $message=$_POST['message'];
else      $message="";
if(filter_var($email, FILTER_VALIDATE_EMAIL))
	  echo  '<p class="classechovalide">Email valide !</p>';
    else
      echo  '<p class="classechoerreur">Email non valide !</p>';
	  
if(empty($pseudo) OR empty($email) OR empty($objet) OR empty($message))
    {
    echo '<p class="classechoerreur">Attention, vous devez remplir tous les champs</p>';
    }
	
else     
    {
		
		
       // connexion à la base
require_once("connexioncontact.inc.php");
    
    // on écrit la requête sql
try
{
    // Etape 1: On indique la requête à effectuer et on remplace les valeurs par des marqueurs textuels.
            // Ton champ " id " est en auto increment, pas besoin de le renseigner dans la requête car
            // MySQL va automatiquement lui attribuer une valeur.
    $req = $bdd->prepare('INSERT INTO recu(pseudo, email, objet, message) VALUES(:pseudo,:email,:objet,:message)');
     
    // Etape 2: On indique à PDO se que signifie chaque marqueurs et à quel variable il doit assigner chacun d'eux.
            // Vu que ce sont 4 champs de texte on a pas besoin de renseigner le type de donnée, par défaut
            // il considère ça comme des chaînes de caractères (PDO::PARAM_STR).
    $req->bindValue(':pseudo', $pseudo);
    $req->bindValue(':email', $email);
    $req->bindValue(':objet', $objet);
    $req->bindValue(':message', $message);
     
    // Etape 3: On exécute la requête !
    $req->execute();
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
    // on affiche le résultat pour le visiteur
    echo '<p class="classechovalide">Votre message à bien été envoyé !</p>';
    } 
?>
  </div>
 </div>
<?php include("footer.inc.php"); ?>
</div>
</body>
</html>
Je sais qu'il faut absolument utiliser le session_start avant tout code pour garder en mémoire la connexion du membre.
Mais je ne vois pas comment adapter le reste de monde code.
Un peu d'aide ne serais pas de refus :D.
Merci pour votre attention.
Sincèrement.

Re: Formulaire de contact session start

Posté : 23 mai 2013, 21:21
par moogli
salut,


cela dépend de ce que tu garde en session, mais sur le principe, il te faut récupérer les info à partir de ce que tu met en session pour identifier la personne connecté (l'id ?).

dans ce cas une requete SQL pour récupérer nom + email et tu utilise le value des champs texte.


Une autre solution c'est de ne pas mettre ce champs et de récupérer l'info lors de la validation du formulaire (vu que c'est l'utilisateur courant, si l'email est obligatoire ça ne pose pas de problème).

si le formulaire est prévu pour pour tout le monde tu peux prévoir l'affichage ou non des champs en fonction de si l'on est ou pas connecté.


@+

Re: Formulaire de contact session start

Posté : 07 juin 2013, 12:14
par reverb
Merci moogli :),
j'ai donc opté pour utiliser le $_SESSION
Voici ce que ça donne :
(de cette manière quand le membre est connecté, sont pseudo et sont mail apparaît automatiquement, si le membre n'est pas inscrit, il peut quand même remplir les informations manuellement.)
<?php session_start(); ?>
<label for="pseudo">Votre pseudo</label> : <br /><input type="text" value="<?php if(isset($_SESSION['membre_pseudo'])) echo $_SESSION['membre_pseudo'];?>" name="pseudo" id="pseudo" placeholder="30 caractères maximum" size="30" maxlength="30"  />
 <label for="email">Votre E-mail : </label><br />
 <input type="email" value="<?php if(isset($_SESSION['membre_mail'])) echo $_SESSION['membre_mail'];?>" name="email" id="email" />