it-swarm.com.de

So leiten Sie auf dieselbe Seite in weiter PHP

Wie kann ich mit PHP auf dieselbe Seite umleiten?

Zum Beispiel lautet meine Webadresse lokal:

http://localhost/myweb/index.php

Wie kann ich innerhalb meiner Website auf eine andere Seite umleiten?

header("Location: clients.php");

Ich weiß, dass dies möglicherweise falsch ist, aber muss ich das Ganze wirklich einsetzen? Was ist, wenn es später nicht http://localhost/ ist?

Gibt es eine Möglichkeit, so etwas zu tun? Außerdem habe ich eine Menge Code und am Ende, nachdem der Code verarbeitet wurde ... Ich versuche, ihn umzuleiten. Ist das in Ordnung?

27
user710502

Es gibt eine Reihe verschiedener Eigenschaften von $_SERVER ( docs ), die Informationen zur aktuellen Seite zurückgeben. Meine bevorzugte Methode ist jedoch die Verwendung von $_SERVER['HTTP_Host']:

header("Location: " . "http://" . $_SERVER['HTTP_Host'] . $location);

dabei ist $location der Pfad nach der Domäne, beginnend mit /.

11
Nicole

Meine bevorzugte Methode zum erneuten Laden derselben Seite ist $ _SERVER ['PHP_SELF']

header('Location: '.$_SERVER['PHP_SELF']);
die;

Vergiss nicht zu sterben oder nach deiner Kopfzeile zu verlassen ();

Bearbeiten: (Danke @RafaelBarros)

Wenn auch die Abfragezeichenfolge erforderlich ist, verwenden Sie 

header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;

Edit: (Danke @HugoDelsing)

Wenn die htaccess-URL-Manipulation ausgeführt wird, führt der Wert von $ _SERVER ['PHP_SELF'] möglicherweise zur falschen Stelle. In diesem Fall befinden sich die korrekten URL-Daten in $_SERVER['REQUEST_URI'] für Ihre Weiterleitung. Dies kann wie die Antwort von Nabil unten aussehen:

header("Location: http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]");
exit;

Sie können auch $ _SERVER [REQUEST_URI] verwenden, um $_SERVER['PHP_SELF'] gegebenenfalls den korrekten Wert zuzuweisen. Dies kann hilfreich sein, wenn Sie eine Umleitungsfunktion stark verwenden und diese nicht ändern möchten. Stellen Sie einfach den richtigen Wert in Ihrem Request-Handler wie folgt ein:

$_SERVER['PHP_SELF'] = 'https://sample.com/controller/etc';
70
Syntax Error

Ein weiterer eleganter ist 

header("Location: http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]");
exit;
19
Nabil Kadimi

Um wirklich universell zu sein, verwende ich Folgendes:

$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' 
    || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
header('Location: '.$protocol.$_SERVER['HTTP_Host'].$_SERVER['REQUEST_URI']);
exit;

Ich mag $_SERVER['REQUEST_URI'], weil es mod_rewrite und/oder alle GET-Variablen beachtet.

https-Erkennung von https://stackoverflow.com/a/2886224/947370

8
squarecandy
header('Location: '.$_SERVER['PHP_SELF']);  

wird auch funktionieren

1
Mahendra Jella

Ein schneller, einfacher Ansatz, wenn Sie sich nicht um Abfrageparameter kümmern:

header("location: ./");
0
digout

Ich habe gerade versucht, header("Location: "); (ohne irgendeinen Wert) zu verwenden und es wurde auf die aktuelle Seite umgeleitet. 

0
user10141671

Die einfache Zeile unten funktioniert gut:

header("Location: ?");
0
Sergey