【发布时间】:2011-09-12 02:40:24
【问题描述】:
所以这是记录的代码和我设置的地方
<?php
session_start();
$_SESSION['user'] = "kjkj";
$_SESSION['pass'] = "";
$error = $user = $pass = "";
if (isset($_POST['user'])) {
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
if ($user == "" || $pass == "") {
$error = "Not all fields were entered<br />";
} else {
$query = "SELECT store,c_pass FROM store
WHERE store='$user' AND c_pass='$pass'";
if (mysql_num_rows(queryMysql($query)) == 0) {
$error = "Username/Password invalid<br />";
} else {
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
$str = $_SESSION['user'] . ", You are now logged in. Please
<a href='scheduler.php'>click here</a>.";
die($str);
}
}
} ?>
它会在查询之后打印出正确的商店名称。但是当我尝试在像这样的另一个 php 文件中使用它时
if (!isset($_SESSION['user']) ) {
die("<p><h1>Please Login</h1></p>");
} else {
echo "<p><form id ='addemp' method=\"post\" action=\"addUser.php\">
Name<input type=\"text\" name=\"emp\" />
\"". $_SESSION['user'] . "\">
<input type=\"submit\" value=\"AddUser\" />
</form></p>";
}
这是一个空字符串。不为空,只是空字符串。我尝试了所有在互联网上可以找到的解决方案,但都没有奏效。我不知道为什么这不起作用。 任何帮助将不胜感激,谢谢。
【问题讨论】:
-
你把 session_start() 放到你的第二个文件里了吗?
-
尝试在 $_SESSION 上运行 var_dump 以查看代码中不同点的样子。据我所知,切换文件不应该吹走会话数据
-
start_session() 也被添加到第二个文件中
-
我建议阅读有关用户管理的教程,例如tutorialized.com/view/tutorial/PHP-Membership-System/67102 您现在获得它的方式非常脆弱,容易出现错误和安全漏洞。 OWASP 也是你的朋友。 owasp.org/index.php/Category:OWASP_PHP_Project
-
你应该只运行一次 session_start()
标签: php session-variables