PHP / Ajax:成功登录后如何启动 session(其余代码有效)
PHP / Ajax: How to initiate session after successful login (rest of code working)
我是 PHP 的新手,希望有人能帮助我解决以下问题。
我正在设置一个登录页面,我在其中使用按钮上的 onclick 事件来验证用户输入的电子邮件和密码 ("pass")(检查电子邮件是否存在以及密码是否匹配).
到目前为止一切都按预期工作,但我无法弄清楚以下内容:
我在我的 header 文件中启动了一个 session,如下所示。现在,当我验证用户的电子邮件和密码 ("password correct
") 我想将两个变量传递给此 session 以便在其他页面上我可以看到用户已经登录在。因此,我想将变量“login
”作为“loggedIn
”传递,将用户的电子邮件地址作为“username
”传递。
有人能告诉我如何在这里实现这一点吗?
当我已经验证了用户时,我可以在 ajax.php 页面上执行此操作吗?
session 如何在我的 header 中启动:
session_start();
用于验证用户的 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 的输入验证用户的部分:
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 {...}
在 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;
在任何其他 php 页面上:-
<?php
session_start();
echo "<pre/>";print_r($_SESSION['User']);
// rest code
?>
我是 PHP 的新手,希望有人能帮助我解决以下问题。
我正在设置一个登录页面,我在其中使用按钮上的 onclick 事件来验证用户输入的电子邮件和密码 ("pass")(检查电子邮件是否存在以及密码是否匹配).
到目前为止一切都按预期工作,但我无法弄清楚以下内容:
我在我的 header 文件中启动了一个 session,如下所示。现在,当我验证用户的电子邮件和密码 ("password correct
") 我想将两个变量传递给此 session 以便在其他页面上我可以看到用户已经登录在。因此,我想将变量“login
”作为“loggedIn
”传递,将用户的电子邮件地址作为“username
”传递。
有人能告诉我如何在这里实现这一点吗? 当我已经验证了用户时,我可以在 ajax.php 页面上执行此操作吗?
session 如何在我的 header 中启动:
session_start();
用于验证用户的 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 的输入验证用户的部分:
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 {...}
在 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;
在任何其他 php 页面上:-
<?php
session_start();
echo "<pre/>";print_r($_SESSION['User']);
// rest code
?>