PHP会话/登录脚本问题
我在让我的登录纸条正常工作时遇到问题。当我使用会话代码if/else块注释掉时,我的checkLogin函数似乎工作正常。无论我做什么,代码总是将用户发送到登录页面PHP会话/登录脚本问题,php,Php,我在让我的登录纸条正常工作时遇到问题。当我使用会话代码if/else块注释掉时,我的checkLogin函数似乎工作正常。无论我做什么,代码总是将用户发送到登录页面 session_start(); require_once('config/class.Config.php'); if( isset($_POST['login-email'] )&& isset($_POST['login-pass'])) { if ( checkLogin($_POST['
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" );
}
$\u POST['login-pass']应该是$\u POST['login-password']
我是个白痴。提交后,$\u POST中存储了哪些值?尝试使用以下命令输出阵列:echo;正确的值在帖子中,似乎。。。或者至少是我在表单中输入的值。听起来好像checkLogin返回false。$STH->rowCount的值是多少?那么,rowCount返回1,checkLogin返回true,而您仍然被重定向到login.php?尝试用有意义的echo语句替换头重定向,仅用于故障排除目的。这可能有助于确定你被重定向到哪里。啊,没关系。看起来你发现了一个打字错误!接得好。