首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP会话不创建

PHP会话不创建
EN

Stack Overflow用户
提问于 2012-07-25 08:58:21
回答 3查看 3.6K关注 0票数 2

我在注册会话时遇到了问题,它总是有效的,但在一次,它就没有了。我使用PHPVersion5.2,阅读了一些关于将session_register("");更改为$_SESSION('') = $$blabla;的内容,所以我这样做了,但这也不起作用。

这是我的密码:

代码语言:javascript
运行
复制
<?
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();
?>
EN

回答 3

Stack Overflow用户

发布于 2012-07-25 09:02:44

您尚未启动会话:使用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()
票数 4
EN

Stack Overflow用户

发布于 2012-07-25 09:01:22

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

票数 1
EN

Stack Overflow用户

发布于 2012-07-25 09:11:33

使用脚本顶部的session_start()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11646108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档