PHP会话变量未结转
我正在使用PHP会话变量,但问题是会话变量没有传递。我使用Firebug进行了检查,发现根本没有创建会话变量。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
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)