如何将页面重定向到自身?

时间:2016-07-17 21:42:54

标签: php routing

这是我网站的文件夹结构:

myweb/
    index.php
    files/
        autoloader.php
        login.php

这是我的剧本:

// login.php

class login{

    public function __construct () {
        function signed(){
            header('Location: ../');
            exit;
        }
    }

    public function index(){

        echo isset($_SESSION['error_message']) ? $_SESSION['error_message'] : null;

        if ( $_SESSION['login'] == 1 ) {
            signed();
        }

        $_SESSION['login'] = 1;

        if ( $_SESSION['login'] == 1 ) {
            $_SESSION['error_message'] = 'something is wrong';
            header('location: ../login?arg=value');
        }
    }
}

当我加载此路径时:

localhost/myweb/login

以下是两种情况:

  1. $_SESSION['login']等于1:我的脚本将我重定向到此路径:localhost/myweb
  2. $_SESSION['login']不等于1:我的脚本会将我重定向到此路径:localhost 第一种情况很好,我的意思是它按预期工作。但第二种情况是错误的,我的意思是它没有按预期工作。在第二种情况下,它应该将我重定向到此路径:localhost/myweb/login?arg=value,而不是localhost。那我怎么解决呢?
  3. 注意:所有页面都通过index.php。此外,index()函数默认情况下也不需要在网址中提及。

    我有一个解决方案:我可以使用:

    header("Refresh:0");
    

    而不是:

    header('location: ../login?arg=value');
    

    但是只有一个小问题:传递参数。那么如何同时使用header("Refresh:0");?arg=value

1 个答案:

答案 0 :(得分:1)

您可以使用:

header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);

https://secure.php.net/manual/en/reserved.variables.server.php