php 中的会话变量为空
Session variable was empty in php
login.php
<?php
ob_start();
session_start();
include '../config.php';
if( (isset($_SESSION['can-id']) )) {
header('location: ../home/profile.php');
}
if(isset($_POST['can-login']))
{
$email=$_POST['email'];
$password=$_POST['password'];
$sql="SELECT * FROM `user_credentials` WHERE `email`=:email AND `password`=:password";
$pdoResult=$conn->prepare($sql);
$pdoExec=$pdoResult->execute(array(":email"=>$email,":password"=>$password));
$pdoResult->setFetchMode(PDO::FETCH_ASSOC);
$count=0;
$uid='';
while ($r=$pdoResult->fetch()) {
# code...
$count+=1;
$uid=$r['email'];
}
if ($count==1) {
# code...
$_SESSION['can-id']=$uid;
header('location: ../home/profile.php');
}
else
{
$_SESSION['error']="login failed";
}
}
?>
<html>
....
</html>
profile.php
<?php
ob_start();
session_start();
if (!(isset($_SESSION['can-id']))) {
# code...
header('location: ../login/');
}
else
{
$cid=$_SESSION['can-id'];
}
?>
<h1 ><?php echo $cid;?></h1>
这是我在登录后的代码,页面被重定向到 profile.php 页面,但在个人资料页面中会话变量没有打印 我不知道为什么,但每次登录时都没有出现这个问题它有时会发生,所以我找不到问题所在。有知道的请帮我解决一下。
从您的 login.php 中删除 ob_start()
不要把 session_start() 放在你所有的文件中
e.g login.php, profile.php, etc
而是将此添加到您的 config.php 例如:
<?php
session_start();
//.. config variables here
然后,将 config.php 也包含在您的 profile.php 中。
login.php
<?php
ob_start();
session_start();
include '../config.php';
if( (isset($_SESSION['can-id']) )) {
header('location: ../home/profile.php');
}
if(isset($_POST['can-login']))
{
$email=$_POST['email'];
$password=$_POST['password'];
$sql="SELECT * FROM `user_credentials` WHERE `email`=:email AND `password`=:password";
$pdoResult=$conn->prepare($sql);
$pdoExec=$pdoResult->execute(array(":email"=>$email,":password"=>$password));
$pdoResult->setFetchMode(PDO::FETCH_ASSOC);
$count=0;
$uid='';
while ($r=$pdoResult->fetch()) {
# code...
$count+=1;
$uid=$r['email'];
}
if ($count==1) {
# code...
$_SESSION['can-id']=$uid;
header('location: ../home/profile.php');
}
else
{
$_SESSION['error']="login failed";
}
}
?>
<html>
....
</html>
profile.php
<?php
ob_start();
session_start();
if (!(isset($_SESSION['can-id']))) {
# code...
header('location: ../login/');
}
else
{
$cid=$_SESSION['can-id'];
}
?>
<h1 ><?php echo $cid;?></h1>
这是我在登录后的代码,页面被重定向到 profile.php 页面,但在个人资料页面中会话变量没有打印 我不知道为什么,但每次登录时都没有出现这个问题它有时会发生,所以我找不到问题所在。有知道的请帮我解决一下。
从您的 login.php 中删除 ob_start() 不要把 session_start() 放在你所有的文件中
e.g login.php, profile.php, etc
而是将此添加到您的 config.php 例如:
<?php
session_start();
//.. config variables here
然后,将 config.php 也包含在您的 profile.php 中。