如果未设置会话,则PHP标头重定向不起作用

时间:2019-04-11 12:06:11

标签: javascript php

我正在尝试检查用户是否尚未登录cart.php,是否没有将其重定向到login.php。

这不起作用,因此我尝试将其放在elseif语句中。如果它们已登录并在购物车页面上,请将其重定向到购物车页面,如果没有将其重定向到登录页面。

从某种意义上说,它可以重定向,但如果我登录,它仍会重定向到login.php。

我也不知道为什么所有的JS警报都不起作用。

if (isset($_SESSION['username'])){
    header("Location: http://localhost/techiteasy/cart.php");
}
else if (!isset($_SESSION['username'])){
    header("Location: http://localhost/techiteasy/login.php");
    echo '<script language="javascript">';
    echo 'alert("Please Login/Register")';
    echo '</script>';
}

3 个答案:

答案 0 :(得分:0)

您可以像下面这样简单地使用。无需再次检查阴性条件。只需使用if-else。

if (isset($_SESSION['username'])){
    header("Location: http://localhost/techiteasy/cart.php");
}
else{
    header("Location: http://localhost/techiteasy/login.php");
    echo '<script language="javascript">';
    echo 'alert("Please Login/Register")';
    echo '</script>';
}

答案 1 :(得分:0)

重定向后,您将无法添加更多代码,新页面将被调用,新页面的脚本将运行。

您需要从一页转移到另一页。

通常,我使用时间较短(2-5秒)的cookie,新页面将调用检查cookie是否已设置,是否显示警报并取消设置cookie的功能。

在代码中,您可以看到我只在脚本触发标头位置时放置了if语句(不包含else或else if),导致下一个代码无法运行,并且将加载新页面。

if (!isset($_SESSION['username'])){
    setcookie('notlogged', true, time() + 3;)

    header("Location: http://localhost/techiteasy/login.php");     
}
header("Location: http://localhost/techiteasy/cart.php");

在login.php中

if (isset($_COOKIE['notlogged']) && $_COOKIE['notlogged'] == true){
    echo '<script language="javascript">';
    echo 'alert("Please Login/Register")';
    echo '</script>';

    unset($_COOKIE['notlogged']);
}

尝试这个;)

您也不能设置过期时间,这只是为了避免错误,但每次都提醒您取消设置时间,否则,用户只有在未从购物车中通过的情况下登录才会显示警报。

答案 2 :(得分:-1)

在PHP5上尝试

    if(isset($_SESSION['username'])){ header("Location: http://localhost/techiteasy/cart.php"); 
    }
    else{
    if(!isset($_SESSION['username'])){
     echo '<script>alert("Login with vaild user and pass");</script>';
header("Location: http://localhost/techiteasy/login.php");
    exit;
     }}

对于PHP7

    if(isset($_SESSION['username'])){ header("Location: http://localhost/techiteasy/cart.php, true, 301"); 
    }
    else{
    if(!isset($_SESSION['username'])){ 
     echo '<script>alert("Login with vaild user and pass");</script>';
header("Location: http://localhost/techiteasy/login.php, true, 301");
    exit;
     }}