2012-11-29 64 views
0

我已經寫了這個小的PHP頁面,應該通過在URL中放置的值重定向用戶。但腳本似乎不起作用。我錯過了什麼?爲什麼PHP總是重定向到同一頁面?

<?php 
if ($choice=="stb") 
    $redirect="http://www.webpage1.com/"; 

    elseif ($choice=="player") 
     $redirect="http://www.alternativewebpage.com/"; 

    else 
     $redirect="http://www.world-tvpro.com/"; 

header('Location: '.$redirect) ; 
?> 

如果頁面保存在我的服務器的運行script.php我將執行這樣的:http://mypage.com/script.php?choice=stb ..然後所預期的那樣被重定向到www.webpage1.com,但我得到重定向到http://www.world-tvpro.com/不管我寫的。

+4

你在哪裏定義'$ choice'? – andrewsi

+0

嘗試$ _GET ['choice]而不是$ choice –

+0

@andrewsi選擇是一種幻覺。 – NullUserException

回答

0

您需要使用$_GET['choice'](或isset($_GET['choice']) ? $_GET['choice'] : null)。

+0

我沒有看到腳本將如何與$ _GET放在一起?我將如何做重定向和if/else語句?請,你能說清楚嗎?如果可能,也許修改腳本? – hrdy

+0

正如你所說,你正在從url中選擇(blahblah.com?choice = 132)',這樣就可以通過'$ _GET ['choice']' –

+0

Eureka!我懂了。謝謝。 – hrdy

1

您取決於稱爲register_globals的功能,這很危險。而不是讓查詢字符串參數在腳本設置全局變量,使用超全局$_GET

if (isset($_GET['choice']) && $_GET['choice'] === 'stb') { 

例如。

0

這似乎對我有用,有時不會在您的語句周圍使用{}可能會導致問題。

<?php 
if ($_GET['choice'] == "stb") 
{ 
    $redirect="http://www.webpage1.com/"; 
} elseif ($_GET['choice'] == "player") { 
    $redirect="http://www.alternativewebpage.com/"; 
} else { 
    $redirect="http://www.world-tvpro.com/"; 
} 
header('Location: '.$redirect); 
?> 

此外,$ _GET ['choice']是如何從url查詢字符串中獲取變量。

0

PHP使用一系列超級全局陣列將信息從客戶端傳遞到服務器。它們分別是:

$_GET, $_POST, $_COOKIE and $_REQUEST 

在你的情況,因爲你的傳遞值在URL中,你應該使用$ _GET檢索選擇的查詢參數:

$choice = $_GET['choice']; 

注:也可以檢索使用$ _REQUEST作爲請求是一個超級全局數組,包含$ _GET,$ _POST和$ _COOKIE的所有值。

你會簡單地做上面一樣只是要求:

$choice = $_REQUEST['choice']; 

希望這有助於。

0

如果您在整個IF聲明之上添加:$choice = isset($_GET['choice']) ? $_GET['choice'] : false;,那麼代碼應該沒問題。

而且,當IF語句是罰款,一個case語句可以很好地工作,以及:

$choice = isset($_GET['choice']) ? $_GET['choice'] : false; 
switch($choice){ 
    case "stb": 
     $redirect = 'http://www.webpage1.com/'; break; 
    case "player": 
     $redirect = 'http://www.alternativewebpage.com/'; break; 
    default: 
     $redirect = 'http://www.world-tvpro.com/'; 
} 
header("Location: ".$redirect); 
exit;