Problème de reidrection

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 : Problème de reidrection

Re: Problème de reidrection

par Leon@rd » 06 juil. 2011, 09:59

Ah oui effectivement !
Ça y est, ça marche, merci beaucoup pour ton aide !

Re: Problème de reidrection

par Ryle » 05 juil. 2011, 22:12

Et sans l'apostrophe en trop après $_POST['billet'] ? ;)

Re: Problème de reidrection

par Leon@rd » 05 juil. 2011, 22:03

Merci pour les précisions !
J' ai donc tapé :
header('Location: commentaires.php?billet=' .$_POST['billet']');
Mais il y a toujours un problème: en plus de ne pas me redirigé, le commentaire n'est même pus inséré ...

Re: Problème de reidrection

par Ryle » 05 juil. 2011, 21:30

La fonction header() est une fonction php... il n'est donc pas nécessaire d'ouvrir / fermer les balises php puisque tu es déjà à l'intérieur de ces balises. De même, le echo n'a pas d'intérêt puisque l'objectif n'est pas d'afficher quelque chose à l'écran mais de générer une chaine de caractères en concaténant des chaines et des variables :
header('Location: commentaires.php?billet=' . $_POST['billet']);

Re: Problème de reidrection

par Leon@rd » 05 juil. 2011, 21:24

Je rajoute quelques précisions:
Dans ma page d'accueil, j'ai un lien en dessous de chaque billet qui permet de consulter ces commentaires:
<a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a>
Du coup, lorsqu'on consulte les commentaires d'un billet, on a une adresse du genre "commentaires.php&billet=id du billet". Dans mon formulaire, j'ai donc mis un bouton cahé qui envoi cette donnée au fichier commentaires_post.php :
<input type="hidden" name="billet" value="<?php echo $_GET['billet']; ?>" />
Normalement, je devrais donc pouvoir récupérer cette variable avec $_POST['billet'].
Ce que je ne comprend pas c'est pourquoi la redirection ne marche pas ?
header('Location: commentaires.php?billet=<?php echo $_POST[\'billet\'] ?>')

Re: Problème de reidrection

par Leon@rd » 04 juil. 2011, 16:09

Exactement !
Au lieu d'avoir "commentaires.php&billet=2" dans l'URL (si le commentaire porte sur le billet n°2), je me retrouve avec "commentaires.php?billet=<?php echo $_POST['billet'] ?>", ce qui ne correspond à aucun billet du blog.
En fait il faudrait que le numéro du billet dans l'URL corresponde à celui que le visiteur a commenté.

Leon@rd.

Re: Problème de reidrection

par Mazarini » 04 juil. 2011, 15:58

Bonjour,

Quel problème te pose la redirection ?

Ne serait ce pas la presence de "commentaires.php?billet=<?php echo $_POST['billet'] ?>" dans l'url ?

Problème de reidrection

par Leon@rd » 04 juil. 2011, 14:52

Bonjour à tous !
Je suis en train d'apprendre le PHP et je suis en train de m'entrainer en faisant un blog où l'on peu posté des commentaires.
J'ai donc une page d'accueil index.php qui affiche les dernières nouvelles du blog, une page commentaires.php qui affiche les commentaires d'un billet du blog et qui contient un formulaire pour en ajouter un, et un fichier commentaires_post.php qui insère le commentaire et redirige vers le billet et ses commentaires que consultait le visiteur. C'est justement la redirection qui me pose problème.

Voilà le formulaire d'envoi de commentaires:
<form method="post" action="commentaires_post.php">
<fieldset>
<legend>Ajouter votre commentaire</legend>
<p><label for="pseudo">Votre pseudo :</label><br/>
<input type ="text" name="pseudo" id="pseudo" tabindex="10" size="15" maxlength="12"/></p>
<p><label for="commentaire">Votre commentaire :</label><br/>
<textarea name="commentaire" id="commentaire" accesskey="C" tabindex="20" rows="10" cols="35"></textarea></p>
</fieldset>
<p><input type="submit" value="Envoyer" /><input type="hidden" name="billet" value="<?php echo $_GET['billet']; ?>" /></p>
</form>
Et le fichier commentaires_post.php :
<?php
//connexion bdd
try
{
	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$bdd= new PDO('mysql:host=localhost;dbname=...', 'root', '...',  $pdo_options);
	
	//insertion du message
	$req= $bdd->prepare('INSERT INTO commentaires (auteur, commentaire, date_commentaire, id_billet) VALUES(?, ?, NOW(), ?)');
	$req->execute(array($_POST['pseudo'], $_POST['commentaire'], $_POST['billet']));
	
	//redirection
	header('Location: commentaires.php?billet=<?php echo $_POST[\'billet\'] ?>');
}
catch(Exception $e)
{
	die('Erreur : ' .$e->getMessage());
}
?>
Leon@rd