由于会话的原因,管理面板无法工作


Admin panel is not working due to session

突然我的网站管理面板不再工作,我已经厌倦了很多编辑它的方法,但都失败了。

请告诉我错误应该在哪里

数据库

CREATE TABLE `egadmin` (
`AdminID` int(10) NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`password` varchar(50) NOT NULL default '',
PRIMARY KEY  (`AdminID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `egadmin` VALUES (1, 'admin', 'pass');

conn.php[连接文件]

<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "mypass";
$db_name = "dbname";
$connection = mysql_connect($db_host, $db_username, $db_password) or die(mysql_error());
$db = mysql_select_db($db_name, $connection);
?>

index.php[登录表单]

<form action="validate.php" method="post">
ID <input type="text" name="userid" id="userid" />
Password <input type="password" name="password" id="password" />
<input type="submit" name="submit" value="Submit" />
</form>

validate.php[登录表单发送到validate.php]

<?php
require_once("conn.php");
$user = $_POST["userid"];
$pass = sha1($_POST["password"]);
$query = "SELECT * FROM egadmin WHERE username = '$user' AND password = '$pass'";
$result = mysql_query($query);
if (mysql_fetch_row($result)) {
  session_start();
  header("Cache-control: private");
  $_SESSION["access"] = "granted";
  header("Location: secure.php");
} else
  header("Location: index.php");
?>

secure.php[应该是受保护的文件]

<?php
session_start();
header("Cache-control: private");
if ($_SESSION["access"] == "granted")
echo "blah blah blah";
else
header("Location: index.php");
?>

问题

每次我输入正确的登录信息(用户名、密码)时,它都会不断将我重新发送到登录表单(index.php),所以看起来根本无法创建$_SESSION。

任何帮助请如何修复它或为什么错误

注意:PHP版本5.2.17 | register_globals=On(如果关闭也不起作用)

当您检查密码是否与数据库中的密码相同时,您使用sha1函数对其进行哈希处理,而数据库中的值没有进行哈希处理。

使用查询更新数据库

UPDATE egadmin SET password = SHA1(password);

您试图将加密密码与非加密密码进行比较。确保数据库中的通行证也已加密。