0

我有一个主页,用户可以访问该主页显示 MySQL 查询的输出,具体取决于传递给它的变量。所以;

http://website/mypage.php?page=0

但是,我想设置重定向,以便如果有人只是去

http://website/mypage.php

它会去http://website/mypage.php?page=0。我想到了使用下面的代码,它验证当前页面以及验证用户的会话是否已建立;

elseif ($_SERVER['PHP_SELF'] == '/mypage.php' && isset($_SESSION['valid_user']))
{
header('Refresh: 0; URL=/mypage.php?page=0');
}

但是,这看起来太笼统了。有没有办法准确检查 '/mypage.php' 或 '/mypage.php?page=' ?我曾想过使用 strlen 仅检查 /mypage.php 中的 11 个字符,但我不确定这是不是最有效的方法。

4

5 回答 5

2

您可以检查变量 page 是否有值,如果它为空,您可以进行重定向

if($_GET['page'] == ''){
  header('Location: /mypage.php?page=0');
  exit;
}

或者

if(!isset($_GET['page'])){
  header('Location: /mypage.php?page=0');
  exit;
}
于 2013-10-30T15:43:18.640 回答
1

你应该使用这种方式:

header('Location: /mypage.php?page=0');
exit;

否则检查 $_SERVER 变量以获得更严格的匹配。http://php.net/manual/en/reserved.variables.server.php

我想可能你需要$_SERVER['REQUEST_URI']

于 2013-10-30T15:35:14.993 回答
1

在你的mypage.php你可以检查这样的事情

if(!isset($_GET['page'])) {
    header('location: /mypage.php?page=0');
    exit;
}

但是,我认为,与其使用 get 变量重定向到同一页面,不如在没有page设置变量时默认显示您想要显示的页面。

于 2013-10-30T15:37:05.720 回答
1

这是你要找的吗?

if(!isset($_GET['page']) || empty($_GET['page'])) {
    Header('Location: http://website/mypage.php?page=0')
    exit();
}

或者

if(!isset($_GET['page']))
    $_GET['page'] = 0;

我不确定第二种解决方案,您不应该将值归因于 $_GET[] 变量。

于 2013-10-30T15:39:23.353 回答
1
if( !isset($_REQUEST['page']) ) {
    header('Location: /mypage.php?page=0');
    exit(0);
} else {
    if( $_REQUEST['page']=="" ) {
        header('Location: /mypage.php?page=0');
        exit(0);
    }
}
于 2013-10-30T16:17:20.037 回答