2016-10-09 2 views
1

Ich versuche, Benutzer auf der Grundlage der Abfragezeichenfolge in einer PHP-Datei umzuleiten. Ich habe eine PHP-Datei go.php und klebte folgenden Code,PHP Jump Redirect

<?php 
if ($v = 'AAAAA') {$link = 'https://example1.com/';} 
if ($v = 'BBBBB') {$link = 'https://exapmle2.com/';} 

header('Location: $link') ; 
exit(); 
?> 

Ich dachte, ich in der Lage sein wird, Benutzer example1.com mit mydomain.com/go.php?v=AAAAA umleiten Aber es funktioniert nicht . Das Skript leitet Benutzer zu mydomain.com/$link Kann mir jemand helfen, dies zu erreichen? Ich benutze Nginx als Webserver mit PHP 7.

Vielen Dank im Voraus.

Antwort

1

Sie sollten

wie diese etwas tun
$v = $_GET['V']; 
if ($v == 'AAAAA'){ 
    $link = 'https://example1.com/'; 
}elseif ($v == 'BBBBB') { 
    $link = 'https://exapmle2.com/'; 
}else{ 
    $link = false; //you could output an error or put a default redirect in here instead. Then you wouldn't need the second if condition (with a default redirection) 
} 

if($link){ 
    header("Location: $link") ; 
    exit(); 
} 

ein paar Dinge zu beachten:

  • Sie verwenden die Zuordnung = nicht Vergleich == in Ihrem if-Zustand. Im Original werden beide Bedingungen mit dem Endwert von $link übergeben, der der letzte ist (obwohl er in den ersten gesetzt wird, der zweite ersetzt ihn), die $v Variable wird ebenfalls auf BBBBB gesetzt, was auch immer Sie wollen .

  • Variable Interpolation (automatisches Einfügen des Werts) funktioniert nur, wenn doppelte Anführungszeichen und keine einfachen Anführungszeichen verwendet werden. " $link " vs ' $link ' der erste wird in den Wert von $link die zweite wird buchstäblich $ Link als Zeichenfolge.

  • Sie haben keinen Standardwert, wenn $v keiner der Bedingungen entspricht, was passiert?

  • Sie sollten einen ifelseif verwenden, da $v nicht gleich sein kann. In dem Fall, dass es gleich der ersten Bedingung ist, wird der Rest übersprungen, leistungsmäßig ist es besser, aber so etwas ist nicht so wichtig, es ist einfach bestmöglich und lesbarer.

+0

Als Sie sehr viel, das löste mein Problem –

+0

cool, ich habe es nicht einmal getestet. Aber Code dieses kurze Ich kann in meinem Kopf laufen ... – ArtisticPhoenix

0

Wenn Sie möchten Benutzervariablen innerhalb Header Funktion bitte doppelte Anführungszeichen verwenden header("Location: $link") ;

auch sicher, dass Sie den Wert der URL-Parameter werden immer mit $v = $_GET['v'];

+0

Danke für die schnelle Antwort. Ich bin neu, ich verstehe nicht $ v = $ _GET ['v']; Teil, wo geht es hin? –

+0

Erste Zeile der PHP-Datei. –

+0

Hinzugefügt nach