PHP Session没有创建

时间:2012-07-25 08:58:22

标签: php session

我在注册会话时遇到了麻烦,它总是有效,但一次又没有,它没有。 我使用 PHP版本5.2 ,阅读有关将session_register("");更改为$_SESSION('') = $$blabla;的内容,因此我这样做了,但这也没有用。

这是我的代码:

<?
ob_start();
$host="localhost"; // Host name

$username="transrpt_transrp"; // Mysql username 

$password="******************"; // Mysql password 

$db_name="transrpt_transrp"; // Database name 

$tbl_name="PlayerData"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword= hash('whirlpool', $_POST['mypassword']);

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE Name='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count!=0){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$resultt = mysql_query("SELECT * FROM PlayerData WHERE Name='$myusername'");
$row = mysql_fetch_array($resultt);
$playerlevel = $row['PlayerLevel'];
$_SESSION['myusername'] = $$myusername;
$_SESSION['mypassword'] = $$mypassword;
$_SESSION['playerlevel'] = $$playerlevel;
header("location:index.php");
}
else {
echo "Wrong username or password";
}

ob_end_flush();
?>

3 个答案:

答案 0 :(得分:3)

您尚未开始会话:使用session_start()

  

$ _ SESSION('')= $$ blabla;

这没有任何意义。就像你试图调用一个函数一样,但是你无法调用$_SESSION

此外,您使用$$myusername$$mypassword代替$myusername$mypassword

  • 您为什么使用stripslashes()mysql_real_escape_string()负责逃避。您是否已启用magic_quotes

  • 由于您不再需要$result,您可以在第二次调用mysql_query()时覆盖它,不需要$resultt

  • 为什么要进行第二次查询?您已从PlayerData

  • 获取了相应的行
  • 您似乎不需要输出缓冲。为什么你有ob_start()ob_end_flush()

答案 1 :(得分:1)

您是否尝试过添加session_start();到PHP文件的开头?

答案 2 :(得分:0)

在脚本顶部使用session_start()