2012-01-27 63 views
1

突然我的网站管理面板不再工作,我已经厌倦许多方式来编辑它,所有都是faild。由于会话管理面板不工作

请告诉我哪里有错误应该是

数据库

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 =开(如果关闭也不起作用)

+1

尝试将session_start()放入您的validate.php – OptimusCrime 2012-01-27 15:09:05

回答

0

你试图比较一个加密的密码到一个非加密的密码数据库。确保数据库中的传递也是加密的。

1

当您检查密码是否与数据库中的密码相同时,您使用sha1函数对其进行散列处理,而数据库中的值未经散列处理。

更新与查询

UPDATE egadmin SET password = SHA1(password);