我在检查 session 、访问页面时遇到一些问题,我需要激活 session 。
登录流程:
//Connect to mysql server
require "reservation/connect.php";
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$login = clean($_POST['user']);
$password = clean($_POST['password']);
//Create query
$qry="SELECT * FROM user WHERE username='$login' AND password='$password'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) > 0) {
//Login Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['user_id'];
$_SESSION['SESS_FIRST_NAME'] = $member['position'];
session_write_close();
//if ($level="admin"){
header("location: admin/dashboard.php");
exit();
}else {
//Login failed
header("location: index.php");
exit();
}
}else {
die("Query failed");
}
?>
身份验证:
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
header("location: index.php");
exit();
}
?>
即使我从表单登录,页面也不会加载并将我重定向回索引!我做错了什么?我把“require_once('../auth.php');”在页面上,但它仍然无法正常工作。
最佳答案
这是因为它进入了语句的 else
部分,这意味着 $result
为 0 或 false。
所以原因是查询一定失败了..所以像这样添加mysql_error()
..
$result=mysql_query($qry) or die(mysql_error());
要知道确切的原因..
此(mysql_*
) 扩展自 PHP 5.5.0
起已弃用,并将在将来删除。相反,应使用 MySQLi
或 PDO_MySQL
扩展。切换到 PreparedStatements
可以更好地抵御 SQL 注入(inject)攻击!
关于php - 登录和 session PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581073/