Probléme de lecture $_GET[]

Résolu/Fermé
Utilisateur anonyme - Modifié par neileb le 29/12/2015 à 16:09
 Utilisateur anonyme - 31 déc. 2015 à 00:06
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
Modifié par jordane45 le 29/12/2015 à 19:14
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
29 déc. 2015 à 17:09
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
31 déc. 2015 à 00:06
Oui ! J'avais pas pensé à utiliser cette façon ! Merci beaucoup, ça marche nickel !
0