2010-07-01 3 views
1

RequestDispatcher envoie essentiellement une requête à une autre ressource, c'est-à-dire qu'elle ne redirige pas la page vers une page (ressource). Ainsi, l'historique du navigateur n'est pas mis à jour et les paramètres disponibles dans request sont toujours disponibles sur une autre page, car nous ne créons pas de nouvelle requête à l'aide de la redirection.Quel est l'équivalent de RequestDispatcher # forward() de Java en PHP?

Qu'est-ce qui est équivalent en PHP? Et aussi quelle fonction est utilisée pour rediriger une page?

Merci à l'avance :)

Répondre

1

Il n'y a pas d'équivalent direct.

include et la famille sont similaires, mais diffèrent par plusieurs aspects:

  • L'état actuel du script est conservé (toutes les variables globales, la fonction et la définition de classe, etc.)
  • Un chemin de fichier

Probablement la chose la plus similaire est une sous-requête Apache interne (voir virtual), mais cela n'a rien à voir avec PHP lui-même. Lorsque PHP est appelé, la requête a déjà été "envoyée". Bien sûr, vous pouvez, si vous le souhaitez, faire une «logique de répartition des demandes» virtuelle avec PHP, ce qui signifie envoyer toutes les requêtes à un script initial qui décide alors de ce qu'il faut inclure/exécuter. C'est ce que font plusieurs frameworks.

Pour rediriger une page, vous envoyez manuellement un en-tête:

header("{$_SERVER['SERVER_PROTOCOL']} $code"); //code can be 301, 302, 303, 307 
header("Location: $url"); 
0

Concepts et Redirect en avant comme en Java, peut être réalisable en PHP aussi.

Redirect (URL dans les changements de la barre d'adresse) - header("Location: redirect.php");

Forward (URL inchangé à barre d'adresse) - include forward.php ;

je l'espère, avec cette gérable Son autres logiques de programmation & connus.

Questions connexes