这是我网站的文件夹结构:
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
以下是两种情况:
$_SESSION['login']
等于1
:我的脚本将我重定向到此路径:localhost/myweb
$_SESSION['login']
不等于1
:我的脚本会将我重定向到此路径:localhost
第一种情况很好,我的意思是它按预期工作。但第二种情况是错误的,我的意思是它没有按预期工作。在第二种情况下,它应该将我重定向到此路径:localhost/myweb/login?arg=value
,而不是localhost
。那我怎么解决呢? 注意:所有页面都通过index.php。此外,index()
函数默认情况下也不需要在网址中提及。
我有一个解决方案:我可以使用:
header("Refresh:0");
而不是:
header('location: ../login?arg=value');
但是只有一个小问题:传递参数。那么如何同时使用header("Refresh:0");
和?arg=value
?
答案 0 :(得分:1)
您可以使用:
header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
https://secure.php.net/manual/en/reserved.variables.server.php