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

Javascript 如果未设置会话,则PHP标头重定向不起作用,javascript,php,Javascript,Php,我试图检查用户是否没有登录cart.php,如果没有,请将其重定向到login.php 这不起作用,所以我试着把它放在一个elseif语句中。如果他们已登录并在购物车页面上,请将他们重定向到购物车页面,如果他们未登录,请将他们重定向到登录页面 它可以重定向,但如果我登录,它仍然会重定向到login.php 此外,我不知道为什么JS警报都不起作用 if (isset($_SESSION['username'])){ header("Location: http://localhost/te

我试图检查用户是否没有登录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>';
}
if(isset($\u会话['username'])){
标题(“位置:http://localhost/techiteasy/cart.php");
}
如果(!isset($\u会话['username']),则为else{
标题(“位置:http://localhost/techiteasy/login.php");
回声';
回显“警报”(“请登录/注册”);
回声';
}
在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;
     }}
if(isset($\u SESSION['username']){header(“位置:http://localhost/techiteasy/cart.php"); 
}
否则{
如果(!isset($\u会话['username'])){
echo“警报(“使用有效用户登录并通过”);
标题(“位置:http://localhost/techiteasy/login.php");
出口
}}
对于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;
     }}
if(isset($\u SESSION['username']){header(“位置:http://localhost/techiteasy/cart.php,对,301”);
}
否则{
如果(!isset($_会话['username']){
echo“警报(“使用有效用户登录并通过”);
标题(“位置:http://localhost/techiteasy/login.php,对,301”);
出口
}}

您只需按如下方式使用即可。不需要再次检查阴性条件。如果有其他情况,只需使用

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>';
}
if(isset($\u会话['username'])){
标题(“位置:http://localhost/techiteasy/cart.php");
}
否则{
标题(“位置:http://localhost/techiteasy/login.php");
回声';
回显“警报”(“请登录/注册”);
回声';
}

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

你需要从一个页面转到另一个页面

通常我使用一个短时间(2-5秒)的cookie,新页面将调用check检查cookie是否已设置,如果已设置,则显示警报并取消设置cookie

在代码中,您可以看到我只放了一个if语句(没有else或elseif),因为当脚本触发头位置时,下一个代码将不会运行,新页面将加载

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']);
}
if(isset($\u COOKIE['notlogged'])&&&$\u COOKIE['notlogged']==true){
回声';
回显“警报”(“请登录/注册”);
回声';
取消设置($_COOKIE['notlogged']);
}
试试这个;)


您也不能设置过期时间,这只是为了避免错误,但每次都要提醒取消设置,否则用户只记录而不从购物车中通过会查看警报。

使用
header()后,您不能有输出
重定向在
else中似乎也没有太多意义,如果
一个简单的
else
就足够了,在我看来,在第二种情况下,您将重定向到
login.php
。这有什么问题?一旦执行
标题('Location:…')
,您就向浏览器发送了转到另一页的指令。因此,当当前页面不再出现在浏览器上时,您在此之后的任何回显都将显示在以太中。我已尝试简化不起作用的代码。只有一个头--if(!isset($_SESSION['username']){header(“Location:);}