2009-01-08 17 views
4

J'ai un formulaire sur une page où l'utilisateur a des entrées pour éditer un fichier XML, l'action pour le formulaire est de l'envoyer à un script PHP séparé où l'édition a lieu après avoir frappé submit. Le script écrira avec succès ou échouera, de toute façon je l'ai rediriger vers la page du formulaire via un en-tête. Existe-t-il un moyen facile de renvoyer un message de confirmation ou d'échec à la page du formulaire? Je peux le faire dans l'URL mais je préfère garder ça propre.PHP passer des messages entre les pages

Répondre

16

La façon dont j'ai vu cela fait (et j'utilise personnellement) est simplement des sessions.

// process something 
if($success) { 
    flash_message('success','Did whatever successfully.'); 
} else { 
    flash_message('error','Oops, something went wrong.'); 
} 
header('Location: whatever.php'); 

Ensuite ailleurs, dans votre fichier de bibliothèque ou d'une fonction ou quel que soit:

function flash_message($type, $message) { 
    // start session if not started 
    $_SESSION['message'] = array('type' => $type, 'message' => $message); 
} 

Puis dans la vue/page vous pouvez faire:

if(isset($_SESSION['message'])) { 
    printf("<div class='message %s'>%s</div>", $_SESSION['message']['type'], 
    $_SESSION['message']['message']); 
    unset($_SESSION['message']); 
} 

C'est assez basique mais vous pourrait l'étendre à partir de là si vous voulez plusieurs messages et ainsi de suite. En bout de ligne, je crois que les séances sont les meilleures pour cela.

2

Je préfère placer le code de gestion de formulaire et le code d'affichage de formulaire dans la même page. Si vous voulez vraiment le séparer, vous pouvez déplacer le code dans un fichier différent et inclure ce fichier dans le fichier de formulaire, mais du côté client, il ressemblera au même fichier PHP.

Ensuite, soumettez toujours au formulaire et faites votre vérification d'erreur en haut avant d'afficher le formulaire. S'il y a un message à afficher, restaurez simplement le formulaire et affichez le message avec les données des utilisateurs afin qu'ils puissent résoudre le problème. Ils peuvent soumettre à nouveau et vous pouvez vérifier les erreurs à nouveau. S'ils réussissent à se soumettre, vous pouvez les rediriger ailleurs ou simplement afficher un message "Succès" à la place.

Questions connexes