繁体   English   中英

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

[英]Redirecting URL with elseif $_SERVER['PHP_SELF']

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

您可以检查变量页是否具有值,如果该页为空,则可以进行重定向

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

要么

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

您应该使用这种方式:

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

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

我认为您可能需要$_SERVER['REQUEST_URI']

在您的mypage.php您可以检查类似这样的内容

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

但是,我认为,当未设置page变量时,为什么不直接显示要默认显示的页面,而不是使用get变量重定向到同一页面。

这是您要找的东西吗?

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

要么

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

我不确定第二种解决方案,您不应该将value赋予$ _GET []变量。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM