我已经写了这个小的php页面,它应该通过url中的值重定向用户。但脚本似乎不起作用。我错过了什么?
<?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,但我被重定向到{{3无论我写什么。
答案 0 :(得分:1)
您依赖于名为register_globals
的功能,这很危险。不要让查询字符串参数在脚本中设置全局变量,而是使用$_GET
超全局:
if ( isset($_GET['choice']) && $_GET['choice'] === 'stb' ) {
例如。
答案 1 :(得分:0)
您需要使用$_GET['choice']
(或isset($_GET['choice']) ? $_GET['choice'] : null
)。
答案 2 :(得分: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查询字符串中获取变量的方式。
答案 3 :(得分:0)
PHP使用一系列超级全局数组将信息从客户端传递到服务器。它们如下:
$_GET, $_POST, $_COOKIE and $_REQUEST
在您的情况下,由于您将url中的值作为查询参数传递,因此您应该使用$ _GET来检索选项:
$choice = $_GET['choice'];
注意:也可以使用$ _REQUEST检索它,因为请求是一个包含$ _GET,$ _POST和$ _COOKIE的所有值的超全局数组。
您只需使用请求执行与上述相同的操作:
$choice = $_REQUEST['choice'];
希望这有帮助。
答案 4 :(得分:0)
如果您在整个$choice = isset($_GET['choice']) ? $_GET['choice'] : false;
语句上方添加IF
,那么代码就可以了。
此外,虽然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;