$ _SESSION不存储

时间:2014-06-30 06:39:24

标签: php mysql session

我的登录中的用户验证工作正常,唯一的问题是它不存储PHP SESSION。我已调试它以查看是否存储了任何会话,但它们不是。因为当我将用户发送到目的地页面时。

目标网页会检查if (!isset($_SESSION['username'])) { etc.. } 如果用户已登录或未登录。否则,它会将用户发送回登录页面。这就是出错的地方,它将用户发送回登录页面..并且当然要确认调试在所有内容上都是NULL。

PHP5:

<?php require ('../lib/config.php'); ?>
<?php
ob_start();

if (isset($_POST["username"]) && !empty($_POST["username"]) && isset($_POST["password"]) && !empty($_POST["password"])) {
$tbl_name='users';
$user_name='Username';
$pass_name='Password';
$salt='';

mysql_connect("$cchost", "$ccuser", "$ccpass")or die("cannot connect"); 
mysql_select_db("$ccname")or die("cannot select DB");


$myusername=$_POST['username']; 
$mypassword=$_POST['password'];
$username=str_replace(' ','_', $myusername);
$password=hash('whirlpool', $salt . $mypassword);

$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$sql="SELECT * FROM $tbl_name WHERE $user_name='$username' and $pass_name='$password'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$donator=$row['donator'];
$player=$row['player'];
$count=mysql_num_rows($result);
if ($donator == '1') {
$_SESSION['donator'] = $donator;
}
if ($player == '1') {
$_SESSION['player'] = $player;
}
if($count==1){
$_SESSION['username'] = $username;
header("Location: index_ucp.php");
}
else {
header("Location: login_ucp.php?err=1");
}
}
else {
header("Location: login_ucp.php?err=9");
}
ob_end_flush();
?>

3 个答案:

答案 0 :(得分:2)

确保在您要使用会话的所有网页的开头调用session_start(),或在php.ini中设置session.auto_start = 1;

编辑,而我在这里让我骂你关于哈希密码的方式

一位聪明人曾经告诉我永远不要自己输入密码哈希。我现在将秘密告诉你。从php 5.3开始,php内置了散列和验证密码的功能。这些功能是:

password_hash()password_verify()

password hash接受一个参数,明文字符串为hash。 password verify有两个参数,明文字符串和哈希来测试匹配。容易腻。

//first we define how costly we want this to be for our cpus to calculate this hash.
$options = [
        'cost' => 11,
    ];

$encrypted = password_hash($plainText, PASSWORD_BCRYPT, $options);//BCRYPT hashes look like so $ STRENGTH $. HASH / SALT

//this is useful because you never have to remember the salt or strength for a given password hash

if(password_verify($plainText,$encdata))
{
    //good to go
}else{
    //wrong password!
}

答案 1 :(得分:0)

使用session_start();在ob_start();

之后

答案 2 :(得分:0)

如果

session_start();
在conf.php中使用

。然后应该没有问题。

但是如果没有这样的声明,那么在开始时插入它。

或者包含File havind session_start();代码。