Probléme de lecture $_GET[]

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

J'ai un problème avec une page PHP :

- Sur ma premiere page est affciher la liste des messages enregisté dans la base de donnée. Pour chaque message, je peux procédé a une reponse que j'ai donc codé comme ceux ci :

<td><a href="repondre.php?email=<?php echo $donnees2['email'] ?>" style="font-weight:bold" >Repondre</a></td>


Ce lien conduit donc à ma page repondre.php. Lorsque je clique, j'ai bien l'email qui est dans l'URL

Voici le code de la page repondre.php :

<?php
include('connectionbdd.php');
session_start();
 
if ($_SESSION['email']!='admin') {
header('Location: connection.php');
}
 
if(isset($_POST['bouton']))
{
    $email=$_GET['email'];
 
if(isset($email)) {
 
$req = $bdd->prepare("INSERT INTO clientneileb (email, message, reponse) VALUES ('NeiLeb Design', :message, :email )");
$req -> execute(array(
    'email' =>$email,
    'message' =>$_POST['message']));
 
if($req) {
 header('Location: admin.php');
}
}
}
?>
 
<div id="conteneur">
 
<h1>Répondre</h1>
 
 
 
<form method='POST' action='repondre.php' >
<p><br><br><br>Message :<br>
<input class='champ' type='text' name='message' required height="300px" >
<br><br>
<input type='submit' name='bouton' value='Valider' class='boutonenvoyer'>
</p>
</form>



Je veux donc inserer 'Neileb Design' dans email, le message rempli dans le formulaire dans 'message' et dans 'reponse' je veux faire rentrer le $_GET['email'].

Cela m'affiche aucune erreur et aucune ligne n'est rentré dans la base de donné.

Merci d'avance de votre aide.
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Essayes ça :

<?php
//Affichage des erreurs php
error_reporting(E_ALL);

//Démarrage des sessions
session_start();

//Connexion à la BDD
include('connectionbdd.php');


if ($_SESSION['email']!='admin') {
 header('Location: connection.php');
}
 
 //récupératoin "propre des variables
 $email = !empty($_GET['email']) ? $_GET['email'] : (isset($_POST['email'] ? $_POST['email'] : '');
 $message = isset($_POST['message']) ? $_POST['message']: '';
 
if(isset($_POST['bouton'])){
  if($email) {
   $sql = "INSERT INTO clientneileb (email, message, reponse) 
                 VALUES ('NeiLeb Design', :message, :email )";
   $a_datas = array(
              ':email' =>$email,
              ':message' =>$message);
   
 try{      
   $req = $bdd->prepare($sql);
    $res = $req->execute($a_datas);
  if($res){
      header('Location: admin.php');
    }
  }catch(Exception $e)
   // En cas d'erreur dans l'execution de la requete
  echo "Erreur ! ". $e->getMessage();
  echo "<br> Requete :<br>".$sql;
  echo "a_datas =<br><pre>";
  print_r($a_datas);
  echo "</pre>";
 }
 }
}

?>
<! -- Debut du code HTML -->
<div id="conteneur">
 <h1>Répondre</h1>
 <form method='POST' action='' >
   <input type="hidden" name="email" value="<?php echo $email;?>">
  <p><br><br><br>Message :<br>
   <input class='champ' type='text' name='message' required height="300px" >
   <br><br>
   <input type='submit' name='bouton' value='Valider' class='boutonenvoyer'>
  </p>
 </form>


Cordialement, 
Jordane                                                                 
1
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

En validant le formulaire de la page repondre.php, tu peux remarquer dans l'URL que le paramètre email n'est plus présent, tu ne peux donc pas le récupérer via les paramètres GET.

Une solution simple est d'ajouter l'adresse mail dans un input de type hidden afin que celle-ci soit envoyée lors de la validation du formulaire, par exemple :
<form method='POST' action='' >
  <p><br><br><br>Message :<br>
   <input class='champ' type='text' name='message' required height="300px" >
   <br><br>
   <input type='hidden' name='email' value="<?php echo htmlspecialchars($_GET['email']); ?>"
   <input type='submit' name='bouton' value='Valider' class='boutonenvoyer'>
  </p>
 </form>


Ainsi en cliquant sur le lien repondre.php?email=toto@exemple.com, l'adresse mail toto@exemple.com est renseignée dans le champ hidden. Lors de la validation du ce formulaire, on pourra alors récupérer cette adresse via $_POST['email'] puisque le formulaire utilise la méthode post :
$email=$_POST['email'];


Une autre solution est de faire transiter ce mail via une variable de session.

Bonne journée
1
Utilisateur anonyme
 
Oui ! J'avais pas pensé à utiliser cette façon ! Merci beaucoup, ça marche nickel !
0