php - 从登录页面重定向的问题
问题描述
我正在学习网络开发课程。目前,我正在建立一个人们可以做笔记的网页。我的注册表工作正常,激活工作,数据库值是用用户名和密码创建的。问题是,当尝试使用激活的用户名和密码登录时,它不会重定向到我的登录页面。我已经尝试了很多东西,只是找不到问题所在。我测试了与数据库的连接,一切似乎都正常。我将代码与我的课程讲师进行了比较,但找不到任何区别。但是,他的作品,我的没有。感谢您的任何建议!
这是我使用 Ajax 调用登录表单的代码
$("#loginform").submit(function (event) {
event.preventDefault();
var datatopost = $(this).serializeArray();
console.log(datatopost);
$.ajax({
url: "login.php",
type: "POST",
data: datatopost,
success: function (data) {
if (data == "success"){
window.location = "mainpageloggedin.php";
}else{
$("#loginmessage").html(data);
}
},
error: function () {
$("#loginmessage").html("<div class='alert alert-danger'>There was an error with the Ajax Call. Please try again later!</div>");`
}
});
});
<?php
session_start();
//Connect to database
include("connections.php");
//Check user inputs
// Define error messages
$missingEmail = '<p><strong>Please enter your email!</strong></p>';
$missingPassword = '<p><strong>Please enter a password!</strong></p>';
if(empty($_POST["loginemail"])){
$errors .= $missingEmail;
}else{
$email = filter_var($_POST["loginemail"], FILTER_SANITIZE_EMAIL);
}
//GET PASSWORDs
if(empty($_POST["loginpassword"])){
$errors .= $missingPassword;
}else{
$password = filter_var($_POST["loginpassword"], FILTER_SANITIZE_STRING);
}
if($errors){
$resultMessage = '<div class="alert alert-danger">' . $errors . '</div>';
echo $resultMessage;
}else{
$email = mysqli_real_escape_string($link, $email);
$password = mysqli_real_escape_string($link, $password);
$password = hash('sha256', $password);
$sql = "SELECT * FROM users WHERE email = '$email' AND password='$password' AND activation='activated'";
$result = mysqli_query($link, $sql);
if(!$result){
echo '<div class="alert alert-danger">Error running the query!</div>';
exit;
}
if($count !== 1){
echo '<div class="alert alert-danger">Wrong username or password</div>';
}
else{
//log the user in: set session variables
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$_SESSION['user_id']=$row['user_id'];
$_SESSION['username']=$row['username'];
$_SESSION['email']=$row['email'];
// header('location: mainpageloggedin.php');
}
}
?>
谢谢
解决方案
使用serialize
而不是serializeArray
提交表单:
$("#loginform").validate({
rules: {
loign_email: {
required: true,
email: true
},
login_password: {
required: true,
},
},
messages: {
login_password: "Please enter a valid password",
loign_email: "Please enter a valid email address",
},
submitHandler: function(form) {
$.ajax({
url: "login.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function (data) {
if (data == "success"){
window.location = "mainpageloggedin.php";
}else{
$("#loginmessage").html(data);
}
},
error: function () {
$("#loginmessage").html("<div class='alert alert-danger'>There was an error with the Ajax Call. Please try again later!</div>");`
}
});
});
推荐阅读
- php - 从 PHP 到 React 的 GET 请求
- javascript - 如何从服务器向其他客户端发送请求并接收客户端的响应,然后在 node.js 中发送数据?
- visual-studio - 将 Web 应用连接到 Visual Studio Application Insights
- c# - 如何使用 PdfSharp 将 DocumentLink 添加到现有 PDF 文件
- python - 如何将 c_int_array 转换为 python 列表?
- botframework - 聊天机器人不工作 - HTTPS 内部服务器错误
- javascript - DOM 元素事件未触发
- rust - 如何使专业化编译成功?
- google-apps-script - 谷歌日历插件:如何实现“全选”复选框?
- c - 为 C 中的可读性分配“分组”