[RESOLU] Redirection, variable SESSION

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 : [RESOLU] Redirection, variable SESSION

Re: Redirection, variable SESSION

par finipe » 18 févr. 2016, 14:43

Effectivement, je mettais à jour ma commande dans la base de données après cette portion de code.
Du coup, quand il ne restait plus rien dans le panier, la mise à jour n'était plus lue avec le exit, et le dernier article ne disparaissait jamais.

Le "exit" est exigeant ! Merci @rthur.

Re: Redirection, variable SESSION

par @rthur » 18 févr. 2016, 03:03

Fait des tests complémentaires car il n'y a pas de raisons que ça change quelque chose à ce niveau là.

Qu'est-ce que faisait ta page après le header('location...')?

Re: Redirection, variable SESSION

par finipe » 17 févr. 2016, 14:18

Je "dé-résous" ce sujet, parce que depuis que j'ai mis des exit après chaque header location, j'ai des trucs bizarres un peu partout...

Par exemple, dans le code suivant :

Code : Tout sélectionner

// Suppression de la clef unset($_SESSION['panier'][$_ID]); // On réindexe le tableau s'il reste des articles, if(sizeof($_SESSION['panier']) > 0) { $_SESSION['panier'] = array_values($_SESSION['panier']); } // Sinon, on supprime tout else { unset($_SESSION['panier']); } header('Location: panier.php'); exit;
...sans le "exit" pas de problème, mais avec le "exit", il refuse de me supprimer la dernière clef de $_SESSION['panier'].

Eeeeuhhh... #-o

Re: Redirection, variable SESSION

par finipe » 16 févr. 2016, 21:33

Eeeeeh ben, ça m'en a fait des header('location') à rattraper tout ça...
Merci @rthur, je me coucherai moins con ce soir :D

Re: Redirection, variable SESSION

par @rthur » 16 févr. 2016, 09:25

Bonjour,

header("location...") doit toujours être immédiatement suivi d'un exit; pour éviter d'envoyer du code HTML, toujours, aucune exception. :)

Re: Redirection, variable SESSION

par finipe » 16 févr. 2016, 03:13

Je retente ma chance en simplifiant le code (c'est un peu rebutant, faut avouer...)

Code : Tout sélectionner

session_start(); if($_GET['action'] == 1) { $_SESSION['msg_erreur'] = "Un message d'erreur"; header('Location: test.php'); } if(!empty($_SESSION['msg_erreur'])) { echo $_SESSION['msg_erreur']; unset($_SESSION['msg_erreur']); } echo "<a href='test.php?action=1'>LIEN</a>";

Avec ce code, comment se fait-il qu'en cliquant sur mon lien je n'obtienne pas le message d'erreur ? J'ai beau chercher, je pige pas :-k

Redirection, variable SESSION

par finipe » 14 févr. 2016, 04:07

Bonjour à tous,

Pour éviter les refresh malencontreux sur une url pleine de variables GET (et ce même si je fais des tests drastiques sur toutes les variables en question), je voudrais faire une redirection, qui emmène l'utilisateur vers un message de confirmation (ou d'infirmation), qui lui même permet de revenir vers la page de base.

Je me suis donc dit, tout bêtement, qu'avec un script dans ce genre-là, ça devrait fonctionner :

Code : Tout sélectionner

if(conditions pour valider) { // Phase de tests if(conditions) { // Ici, des tas de tests $_SESSION['msg_erreur'] = "Un message d'erreur"; $AJOUT = FALSE; header('Location: mapage.php'); } else { $AJOUT = TRUE; } // Tests ok, on confirme if($AJOUT == TRUE) { // Message de confirmation, puis redirection vers la même page, // avec une URL qui n'est pas farcies de variables GET $_SESSION['ajout_ok'] = TRUE; header('Location: mapage.php'); } } if($_SESSION['ajout_ok'] == TRUE) { echo "Message de confirmation"; $_SESSION['ajout_ok'] = FALSE; } else { if(!empty($_SESSION['msg_erreur'])) { echo $_SESSION['msg_erreur']; $_SESSION['msg_erreur'] = ""; } // ET AFFICHAGE DU CONTENU NORMAL ICI }

Dans mon cerveau moite, ça fonctionnait, sauf que ça fonctionne pas : les messages (que ce soit d'erreur ou de confirmation) ne s'affichent pas : il y a redirection immédiate.

Quelqu'un voit-il mon erreur ?

Merci de votre aide !