PHP会话存在——请求的页面加载时间很短——然后返回到索引


PHP session is present --- requested page loads yet briefly --- and goes back to index

好的,所以我真的不确定如何解释这个问题,但现在是:

我有一个登录名,如果输入与数据库中的数据对应,就会被检查。如果是,我会创建一个$_SESSION["login"]。用户现在已经登录。

创建此会话时不会出现问题。下面是我用来检查会话是否存在的代码:

session_start();
if(!isset($_SESSION["login"])){
    $_SESSION["denied"]= "You need to be logged in to access this page";
    header("location:index.php");
}

现在,当我转到我的页面"cart"(位于我的index.php页面上的链接)时,我将上面的代码放在页面的开头,因为你需要登录才能查看这个页面。然而,我可以看到浏览器加载了那个页面,但什么也没发生。就好像在很小的一秒钟里,我在我的页面"购物车"上,但它…

有人能帮我做这个吗。PHP对我来说大多是个谜。

谢谢!

好的,这是代码的更新。这部分是我放在我的"cart.php "中的内容

<?php 
session_start();
include("inc/database.php");

if(!isset($_SESSION["login"])){
    $_SESSION["denied"]= "You need to be logged in to access this page";
    header("location: index.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
    <head>
    <title>Cart</title>
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="http://code.jquery.com/jquery-1.7.2.js"></script>

</head>
<body>
  testing if the page shows correctly
</body>
</html>

这是我登录检查的代码

<?php
session_start();
include("inc/database.php");
include("inc/clean.php");
if(isset($_POST['login'])){
    $username2=clean($_POST['username2']);
    $password2=clean($_POST['password2']);
    $query=("SELECT *  
            FROM signup
            WHERE username='$username2' 
            AND password='$password2';");
    $result=mysql_query($query);
    $count=mysql_num_rows($result);
    $query2=("SELECT id
              FROM signup
              WHERE username='$username2';");
    $result2=mysql_query($query2);
    while(list($id)=mysql_fetch_row($result2)){
            echo($id);
    }

    if($count == 1){
        $_SESSION["username"] = $username2;
        header('location:index.php');
    }else{
    $_SESSION["error"] = "error";
    header('location:index.php');
}
}
?>

我认为问题出在头指令上,这是正确的:

 header("location: index.php");

可能您的代码达到了此指令,但重定向失败。

当然,检查php日志,看看是否报告了错误。。。