PHP/Ajax:成功登录后如何启动会话(其余代码正常工作)
我是PHP新手,希望有人能在以下方面帮助我 我正在设置一个登录页面,在该页面中,我使用按钮上的onclick事件来验证用户输入的电子邮件和密码(“pass”)(检查电子邮件是否存在以及密码是否匹配) 到目前为止,一切都按预期进行,但我无法理解以下几点: 我在头文件中启动一个会话,如下所示。现在,当我验证用户的电子邮件和密码(“PHP/Ajax:成功登录后如何启动会话(其余代码正常工作),php,ajax,session,session-variables,session-cookies,Php,Ajax,Session,Session Variables,Session Cookies,我是PHP新手,希望有人能在以下方面帮助我 我正在设置一个登录页面,在该页面中,我使用按钮上的onclick事件来验证用户输入的电子邮件和密码(“pass”)(检查电子邮件是否存在以及密码是否匹配) 到目前为止,一切都按预期进行,但我无法理解以下几点: 我在头文件中启动一个会话,如下所示。现在,当我验证用户的电子邮件和密码(“密码正确””)时,我想将两个变量传递到此会话,以便在其他页面上可以看到用户已登录。因此,我希望将变量“login”作为“loggedIn”传递,并将用户的电子邮件地址作为“
密码正确”
”)时,我想将两个变量传递到此会话,以便在其他页面上可以看到用户已登录。因此,我希望将变量“login
”作为“loggedIn
”传递,并将用户的电子邮件地址作为“username
”传递
有人能告诉我,我是如何在这里意识到这一点的吗?
当我已经验证了用户后,我可以在ajax.php页面上执行此操作吗
如何在我的标题中启动会话:
session_start();
case "loginUser":
// login user
$email = $_POST["email"];
$pass = $_POST["pass"];
$stmt = $conn->prepare("SELECT pw FROM Users WHERE email = ? LIMIT 1");
$stmt->bind_param('s', $email);
$stmt->execute();
$result = $stmt->get_result();
if(!$result || !$result->num_rows){
echo "Email has not been registered yet";
}else{
$passHashed = $result->fetch_assoc();
if(password_verify($pass, $passHashed["pw"])){
echo "Password correct";
}else{
echo "Password incorrect";
}
}
break;
验证用户的Ajax调用(在jQuery中):
$.ajax({
type: "post",
url: "ajax.php",
cache: "false",
data: {
node: 'loginUser',
email: email,
pass: pass
},
success: function(data){
if(data == 'Password correct'){
// redirect to index page
window.location.href = baseURL + '/index.php?lang=' + selectedLang
}else{
alert(data);
}
},
error: function(){
}
});
ajax.php页面上用来自ajax的输入验证用户的部分:
session_start();
case "loginUser":
// login user
$email = $_POST["email"];
$pass = $_POST["pass"];
$stmt = $conn->prepare("SELECT pw FROM Users WHERE email = ? LIMIT 1");
$stmt->bind_param('s', $email);
$stmt->execute();
$result = $stmt->get_result();
if(!$result || !$result->num_rows){
echo "Email has not been registered yet";
}else{
$passHashed = $result->fetch_assoc();
if(password_verify($pass, $passHashed["pw"])){
echo "Password correct";
}else{
echo "Password incorrect";
}
}
break;
在此,非常感谢您的帮助 您是否尝试在语句之后设置会话变量
$passHashed = $result->fetch_assoc();
if(password_verify($pass, $passHashed["pw"])){
echo "Password correct";
//set session loggedIn = variable login
$_SESSION["loggedIn"]= true;
//set user to
$_SESSION["username"]= $email;
} else {...}
您是否尝试在语句之后设置会话变量
$passHashed = $result->fetch_assoc();
if(password_verify($pass, $passHashed["pw"])){
echo "Password correct";
//set session loggedIn = variable login
$_SESSION["loggedIn"]= true;
//set user to
$_SESSION["username"]= $email;
} else {...}
在
ajax.php上执行以下操作:-
<?php
session_start(); // this must be first line
case "loginUser":
// login user
$email = $_POST["email"];
$pass = $_POST["pass"];
$stmt = $conn->prepare("SELECT pw FROM Users WHERE email = ? LIMIT 1");
$stmt->bind_param('s', $email);
$stmt->execute();
$result = $stmt->get_result();
if(!$result || !$result->num_rows){
echo "Email has not been registered yet";
}else{
$passHashed = $result->fetch_assoc();
if(password_verify($pass, $passHashed["pw"])){
$_SESSION['User']['login'] = 'loggedIn'; // assignment
$_SESSION['User']['username'] = $email; // assignment
echo "Password correct";
}else{
echo "Password incorrect";
}
}
break;
ajax.php上的执行以下操作:-
<?php
session_start(); // this must be first line
case "loginUser":
// login user
$email = $_POST["email"];
$pass = $_POST["pass"];
$stmt = $conn->prepare("SELECT pw FROM Users WHERE email = ? LIMIT 1");
$stmt->bind_param('s', $email);
$stmt->execute();
$result = $stmt->get_result();
if(!$result || !$result->num_rows){
echo "Email has not been registered yet";
}else{
$passHashed = $result->fetch_assoc();
if(password_verify($pass, $passHashed["pw"])){
$_SESSION['User']['login'] = 'loggedIn'; // assignment
$_SESSION['User']['username'] = $email; // assignment
echo "Password correct";
}else{
echo "Password incorrect";
}
}
break;
非常感谢,没有。我以前从未使用过会话,所以我有点被困在这里。那么我可以直接在ajax.php页面上完成吗?@TaneMahuta没问题!你可以在这里查看详细的文档:这里有很多例子。你提供的链接和信息非常好,肯定有很大帮助。阿南特的回答更详细一点,似乎很适合我的需要,所以我会接受他的回答,但投你的赞成票,希望没问题。再次感谢你的帮助!非常感谢,不,我没有。我以前从未使用过会话,所以我有点被困在这里。那么我可以直接在ajax.php页面上完成吗?@TaneMahuta没问题!你可以在这里查看详细的文档:这里有很多例子。你提供的链接和信息非常好,肯定有很大帮助。阿南特的回答更详细一点,似乎很适合我的需要,所以我会接受他的回答,但投你的赞成票,希望没问题。再次感谢你的帮助!这太棒了-非常感谢!我喜欢用户的方法。很抱歉,我只看到一件事:关于您使用的pre标签,是否之前不需要打开标签?抱歉,如果这是一个初学者问题。这太棒了-非常感谢!我喜欢用户的方法。很抱歉,我只看到一件事:关于您使用的pre标签,是否之前不需要打开标签?抱歉,如果这是一个初学者的问题。