0

我已经编写了这个小的 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,但是无论我写什么,我都会被重定向到http://www.world-tvpro.com/ 。

4

5 回答 5

1

您依赖于一个名为 的功能register_globals,这很危险。不要让查询字符串参数在脚本中设置全局变量,而是使用$_GET超全局变量:

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

例如。

于 2012-11-29T20:23:36.427 回答
0

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

于 2012-11-29T20:23:11.880 回答
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 查询字符串中获取变量的方式。

于 2012-11-29T20:23:51.617 回答
0

PHP 使用一系列超级全局数组将信息从客户端传递到服务器。它们如下:

 $_GET, $_POST, $_COOKIE and $_REQUEST

在您的情况下,由于您将 url 中的值作为查询参数传递,您应该使用 $_GET 检索选择:

$choice = $_GET['choice'];

注意:它也可以使用 $_REQUEST 检索,因为 request 是一个超级全局数组,包含 $_GET、$_POST 和 $_COOKIE 的所有值。

您只需使用请求即可执行与上述相同的操作:

$choice = $_REQUEST['choice'];

希望这可以帮助。

于 2012-11-29T20:25:50.600 回答
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;
于 2012-11-29T20:26:00.747 回答