使用elseif $ _SERVER重定向URL ['PHP_SELF']

时间:2013-10-30 15:32:58

标签: php redirect header http-redirect

我有一个主页面,用户可以根据传递给它的变量显示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个字符,但我不确定这是最有效的方法。

5 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

你应该这样使用:

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

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

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

答案 2 :(得分:1)

在您的mypage.php中,您可以查看类似的内容

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

但是,我认为,不是使用get变量重定向到同一页面,为什么不设置默认情况下要显示的页面,如果没有设置page变量。

答案 3 :(得分: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 []变量。

答案 4 :(得分: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);
    }
}