2010-11-28 7 views
2

J'utilise le modèle POST/REDIRECT/GET dans mon application. Cependant, j'ai un problème:PRG Problème de motif?

Dans le cas où je veux afficher un message à l'étape GET, je peux le stocker en tant que variable de session à l'étape POST (quand il est décidé quel message doit être affiché), par exemple $_SESSION['message']='mplampla';

En utilisant cette technique, le message devrait être désactivé après avoir été affiché afin de ne pas l'afficher de nouveau par erreur dans d'autres pages. Mais si l'utilisateur retourne à la page GET, le message ne s'affichera pas la deuxième fois car il a été désactivé la première fois. Je ne sais pas comment les autres sites Web gèrent cela ... J'ai vu un site web avec un formulaire d'inscription, qui affiche un message après un enregistrement réussi sous la même URL et fonctionne correctement lorsque vous faites un back/forward.

+0

Je pourrais être malentendu mais si vous avez désactivé la session alors il ne montrera plus parce qu'il n'existe pas ... – martynthewolf

+0

unset après avoir reçu le message – GorillaApe

Répondre

4

Ne pas stocker le message dans $_SESSION. Au lieu de cela, transmettez-le en tant que paramètre à votre page GET.

Par exemple, dans l'étape GET, redirigent l'utilisateur vers

http://localhost/widget.php?edit=1&message=saved

Puis, widget.php faire:

$message = isset($_GET['message']) ? $_GET['message'] : null; 
$output = null; 
switch($message) { 
    case 'completed': // possibly use a constant here, eg MESSAGE_COMPLETED 
     $output = 'Your changes has been saved.'; 
     break; 
    case 'failed': 
     $output = 'ERROR: failed to save changes!'; 
     break; 
} 

// Now present $output to the user anyway you like 

Si l'utilisateur retourne et vers l'avant, le message sera toujours être affiché très bien. Cela évite également les problèmes liés à l'état de la session.

+1

merci yoy pour la suggestion .. Cependant pourriez-vous vérifier comment cela fonctionne ?? https://secure.plaisio.gr/User/register.aspx?ReturnUrl=/Controls/Checkout/Default.aspx il va et vient je ne sais pas comment lors de l'inscription: S – GorillaApe

+0

Μην περιμένεις νά κάνουμε και όλη τη δουλειά μόνοι μας ... :) – Jon

+0

Δε σου ζητησα να γραψεις κωδικα, αν εχεις ιωεια γινεται με το ιδιο url να βγαζει αλλο μηνυμα οπως κανουν στο πλαισιο! – GorillaApe