Hat PHP ein Gegenstück zu RequestDispatcher.forward von Java?

9

In Java kann ich eine wirklich grundlegende JSP index.jsp so schreiben:

<% request.getRequestDispatcher("/home.action").forward(request, response); %>

Dies hat zur Folge, dass ein Benutzer, der index.jsp anfordert (oder nur das enthaltende Verzeichnis, wenn index.jsp ein Standarddokument für das Verzeichnis ist) home.action ohne eine Browserumleitung, dh die [Weiterleitung] (< a href="http://java.sun.com/javaee/5/docs/api/javax/servlet/RequestDispatcher.html#forward(javax.servlet.ServletRequest,%20javax.servlet.ServletResponse))"> Ссылка passiert auf der Serverseite.

Kann ich etwas ähnliches mit PHP machen? Ich vermute, dass es möglich ist, Apache für diesen Fall zu konfigurieren, aber da ich möglicherweise keinen Zugriff auf die entsprechende Apache-Konfiguration habe, wäre ich an einer Lösung interessiert, die nur auf PHP basiert.

    
Walter Rumsby 11.01.2009, 21:39
quelle

7 Antworten

0

Wenn Sie sich Sorgen über die CURL-Verfügbarkeit machen, können Sie file_get_contents() und Streams verwenden. Einrichten einer Funktion wie:

%Vor%

Damit wird nur ein GET eingerichtet, aber Sie können auch einen Beitrag mit file_get_contents() erstellen.

    
null 12.01.2009, 08:13
quelle
1

Der Trick bei Request.Forward besteht darin, dass Sie eine saubere, neue Anfrage für die gewünschte Aktion erhalten. Daher haben Sie keine Residuen von der aktuellen Anfrage und zum Beispiel keine Probleme mit Skripten, die auf dem Java-Äquivalent von $ _SERVER ['REQUEST_URI'] beruhen, was etwas ist.

Sie könnten einfach eine CURL-Klasse einfügen und eine einfache Funktion schreiben, um dies zu tun:

%Vor%

Speichern Sie das einfach in class.CURLHandler.php und Sie können dies tun:

Natürlich ist die Verwendung von $ _REQUEST nicht wirklich sicher (Sie sollten $ _SERVER ['REQUEST_METHOD']) überprüfen, aber Sie bekommen den Punkt.

%Vor%

Natürlich ist CURL nicht überall installiert , aber wir haben native PHP curl Emulatoren dafür.

Dies gibt Ihnen sogar noch mehr Flexibilität als Request.Forward, da Sie die Ausgabe auch abfangen und nachbearbeiten können.

    
SchizoDuckie 11.01.2009 22:39
quelle
1

Ich glaube, eine der nächsten analogen Methoden wäre die Verwendung der Funktion virtual () beim Ausführen von PHP als Apache-Modul.

  

virtual () ist eine ähnliche Apache-spezifische Funktion    im   mod_include. Es führt einen Apache aus   Unteranfrage.

    
Zoredache 11.01.2009 23:26
quelle
1

Wenn Sie eine MVC verwenden, wie es das Zend Framework bietet, können Sie die Controller-Aktion ändern oder sogar zwischen den Controller-Aktionen wechseln. Die Methode ist _forward als hier beschrieben .

    
OIS 12.01.2009 00:45
quelle
1

Versuchen Sie es.

%Vor%

auf der eingebundenen Seite wird die Variable $vars als Java-Request-Attribut funktionieren

    
Rafael Ide 09.03.2012 04:11
quelle
0

Konzepte Redirect und Forward wie in Java, kann auch in PHP erreichbar sein.

Redirect :: header("Location: redirect.php"); - (URL in der Adressleiste ändert sich)

Vorwärts :: include forward.php ; - (URL unverändert in der Adressleiste)

Es ist mit diesem & amp; andere Programmierlogiken

    
Dinesh 03.11.2014 22:36
quelle
-3

Sie können wie:

verwenden %Vor%

Der Exit muss nur für den Fall, dass eine HTML-Ausgabe vorher gesendet wurde, der Header () wird nicht funktionieren, also müssen Sie einen neuen Header vor any Ausgabe an den Browser senden.

    
Deniss Kozlovs 11.01.2009 21:51
quelle

Tags und Links