我在让我的登录脚本正常工作时遇到问题。当我在会话代码 (if/else) 块注释掉的情况下运行它时,我的 checkLogin() 函数似乎可以正常工作。无论我做什么,代码总是将用户发送到登录页面。
session_start();
require_once('config/class.Config.php');
if( isset($_POST['login-email'] )&& isset($_POST['login-pass']))
{
if ( checkLogin($_POST['login-email'], $_POST['login-pass']) == true)
{
$_SESSION['email'] = $_POST['login-email'];
header( "Location: members.php" );
} else {
header( "Location: login.php" );
}
} else {
header( "Location: login.php" );
}
//Uncomment line below to test checkLogin by itself - comment out if/else block above.
//$test = checkLogin($_POST['login-email'], $_POST['login-password']);
var_dump($test);
function checkLogin($email, $password)
{
$password = sha1($password);
//echo $password;
$DBH = Config::getPDOconnection();
$query = "SELECT * FROM users WHERE email=:email AND password=:password ";
$STH = $DBH->prepare($query);
$STH->bindParam(':email', $email);
$STH->bindParam(':password', $password);
$STH->execute();
if($STH->rowCount() == 1) {
return true;
} else {
return false;
}
}
任何帮助表示赞赏。
解决方案
在这个块中:
if ( checkLogin($_POST['login-email'], $_POST['login-pass']) == true)
{
$_SESSION['email'] = $_POST['login-email'];
header( "Location: members.php" );
} else {
header( "Location: login.php" );
}
$_POST['login-pass'] 应该是 $_POST['login-password']
我是个白痴。