Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话变量未结转_Php_Session - Fatal编程技术网

PHP会话变量未结转

PHP会话变量未结转,php,session,Php,Session,我正在使用PHP会话变量,但问题是会话变量没有传递。我使用Firebug进行了检查,发现根本没有创建会话变量。 print\r($\u会话)在页面返回index.php后返回空数组,但在刷新前正确显示。 logincheck.php: <?php session_start(); error_reporting(-1); if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true) { $username

我正在使用PHP会话变量,但问题是会话变量没有传递。我使用Firebug进行了检查,发现根本没有创建会话变量。
print\r($\u会话)在页面返回index.php后返回空数组,但在刷新前正确显示。
logincheck.php:

<?php
session_start();
error_reporting(-1);
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true)
{
$username=$_SESSION['username'];
?>
<!DOCTYPE html>
<html>
<head>
    <title>Smart Shopping Cart System</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css">
    <style type="text/css">
    .show-grid{
        background:#E0E0E0;
        }</style>
</head>
<body>
<?php
include "connection.php"
?>


//      ** Some Content**
</body>
</html>
<?php
}
else
{

    ?>
    <html>
<head>
    <title>Log In | SmartCart</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css">
</head>
<body>

    <div class="navbar navbar-default">
        <div class="container">
            <div class="navbar-brand">
                SmartCart
            </div>

        </div>
    </div>

    <div class="container">
        <br />
        <div class="row">
            <div class="col-md-4">
            </div>
            <div class="col-md-4">
                <form role="form" method="post" name="login" action="test.php">
                    <div class="form-group">
                        <label for="username">Operator Username</label>
                        <input type="username" class="form-control" name="username" placeholder="Enter your username">
                    </div>
                    <div class="form-group">
                        <label for="pass">Password</label>
                        <input type="password" class="form-control" name="pass" placeholder="Password">
                    </div>


                    <button type="submit" class="btn btn-default" name="sub">Submit</button>
                </form>
            </div>
            <div class="col-md-3">
            </div>
        </div>
    </div>

</body></html>
    <?php

}
?>

智能购物车系统
.显示网格{
背景:#e0;
}
//**一些内容**
登录|智能购物车
智能车

操作员用户名 密码 提交
test.php

<?php
session_start();
error_reporting(-1);
?>
<html><head><title>Redirecting...</title>
</head>
<body>
Redirecting....
<?php 
include "connection.php";

if(isset($_POST['sub']))
{
    $u_name=$_POST['username'];
    $password=mysql_escape_string($_POST['pass']);
    $password=mysql_escape_string($password);
    $w="select * from operators where operator_username = '$u_name' AND operator_pass = '$password'";
    $b=mysql_query($w) or die(mysql_error()."in query $w");
    $num_rows = mysql_num_rows($b);
    if($num_rows > 0)
    {

        $_SESSION['logged_in']=true;
        $_SESSION['username']=$_POST['username'];
        print_r($_SESSION);
       echo '<meta http-equiv="refresh" content="0; url=index.php">';
    }
    else
    {
         echo "<script>
          alert('Your username or password is incorrect. Please try again'); window.location = 'index.php'; </script>";
    }
}

?>
</body></html>

重定向。。。
重定向。。。。
找出区别:

登录检查:

if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true)
                    ^^^^^^^^^
测试:


其中一项与另一项不一样……

我认为test.php页面上的分数不足 在
$\u会话中['loggedin']=true
将此更改为
$\u会话['logged\u in']=true

当您在中使用此

if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true)

会话部分没有错误。错误可能在数据库访问部分。请检查数据库连接。您可以通过注释查询部分来检查会话,它工作正常。

检查两个脚本中的
session\u id()
。如果您得到不同的值,那么您的会话cookie设置几乎肯定是错误的,并且您得到的是不同的/空会话。session_id()是相同的。我使用Firebug.check out$\u SESSION[“loggedin”]=true;另外,您的登录页面很弱,如果($num\u rows==1),则应该是
if($num\u rows==0)
而不是
if($num\u rows==0)
这样做会导致问题。请检查。我编辑了代码,粘贴到这里时出错了。我会纠正它的。但这并不是导致错误的原因<代码>打印(美元会话)在页面返回index.php后返回空数组,但在刷新前正确显示。然后在php.ini级别启用调试输出。在脚本中执行error_level没有意义,尤其是在会话_start()调用之后。您可能会遇到“headers ready sent”(标题已发送)问题,并且永远看不到它,因为您要等到太晚才打开报告。哦,而且您很容易受到sql注入攻击。您正在对密码进行双重编码,并且从不费心转义用户名。确保您的查询实际上工作正常,并首先设置会话变量。它工作正常。如上所述,
print\r($\u会话)在刷新之前返回预期的数组。是的,但这意味着什么都没有。您可以随时为$\u会话分配任何您想要的内容,即使您从未实际启动该会话。如果该脚本中的
session\u start()
失败(例如,您应该检查其返回值),则您将不会有活动会话,但仍然可以将任何需要的内容填充到会话数组中。当脚本退出时,它将丢失。这是一个错误,尽管更改它并没有改变任何东西。会话变量没有被转移(或者没有首先创建)。会话部分没有错误。错误可能在数据库访问部分检查数据库连接。你可以通过评论查询部分来检查你的会话,它工作得很好。该死!我的connection.php中有session_destroy()。我不知道为什么我会写那个。非常感谢。你能在你的回答中包括这个评论吗?
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true)