在我的这个索引页面中,我发现代码时出错,所以我打印出查询以查看错误是否存在,奇怪的是我得到了查询的ID和密码而不是用户名。
这是打印输出:
SELECT * FROM admin WHERE id='3' AND username='' AND password='alan' LIMIT 1You data dont exist in the database
其中username字段为空应为Alan
这是我的PHP:
<?php
session_start();
if (!isset($_SESSION["manager"])){
header("location: admin_login.php");
exit();
}
$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);
$manager = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["username"]);
$password = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["password"]);
include"db_connection.php";
$q = "SELECT * FROM admin WHERE id='$managerID' AND username='$manager' AND password='$password' LIMIT 1";
$sql = mysql_query($q);
echo $q;
$existCount=mysql_num_rows($sql);
if ($existCount ==0){
//header ("location: index.php");
echo "You data dont exist in the database";
exit();
}
?>
答案 0 :(得分:1)
使用以下内容,我能够成功回显所有三个会话变量。
因此,我的印象是username
会话变量未设置(来自之前的表单/ HTML),和/或表单输入元素未命名或包含拼写错误。
由于您未在(原始)问题中提供有关您如何使用它(来自表格或其他)的其他信息,因此我将提交以下内容作为成功的测试。
我从代码中遗漏了第一个条件语句,并填写了我自己的会话变量。
<?php
session_start();
$_SESSION["id"] = "3";
$_SESSION["username"] = "FRED";
$_SESSION["password"] = "12345";
$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);
$manager = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["username"]);
$password = preg_replace('#[^A-Za-z0-9]#i','',$_SESSION["password"]);
echo $_SESSION["id"];
echo "<br>";
echo $_SESSION["username"];
echo "<br>";
echo $_SESSION["password"];
哪个回声:
3
FRED
12345
我正在质疑这一行,因为没有其他的参考:
if (!isset($_SESSION["manager"]))
因为它似乎与“经理”这个词有关
$managerID = preg_replace('#[^0-9]#i','',$_SESSION["id"]);
您可能打算使用:
if (!isset($_SESSION["id"]))
或:
$managerID = preg_replace('#[^0-9]#i','',$_SESSION["manager"]);