php - 不使用会话使用 PHP 和 Ajax 登录另一个页面
问题描述
我正在使用PHP
并使用变量Ajax
登录另一个页面。session
当我单击submit
按钮时,没有任何反应。
HTML
代码如下命名login.php
为:
<?php
require_once "dbconnection.php";
// Initialize the session
session_start();
// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
header("location: index.php");
exit;
}
?>
<div id='info'> </div>
<form method="POST" class="form-signin" name="mylogin" id="mylogin">
<div class="account-logo">
<img src="assets/img/logo-dark.png" alt="">
</div>
<div class="form-group">
<label>Email</label>
<input type="email" id="email" name="email" autofocus="" class="form-control">
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" id="password" class="form-control">
</div>
<div class="form-group text-right">
<a href="forgot-password.php">Forgot your password?</a>
</div>
<div class="form-group text-center">
<input type="button" value="login" id="login" name="login"
class="btn btn-primary account-btn" >
</div>
<div class="text-center register-link">
Don’t have an account? <a href="register.php">Register Now</a>
</div>
</form>
在同一页面Ajax
查询是:
<script>
$(document).ready(function (){
$('#mylogin').validate({
rules: {
password:{
required:true;
},
email:{
required:true;
email:true
}
},
messages: {
password:{
required:"Requered"
},
email:"Requered"
},
submitHandler : subform
})
function subform() {
var email = $('#email').val();
var password = $('#password').val();
var data = {
"email": email,
"password": password
$.ajax({
type: "POST",
url: "auth/logging.php", // Url to which the request is send
data: data,
// Type of request to be send, called as method
beforeSend:function () {
$('#info').fadeOut();
$('#login').html('Sending ....');
},
success: function(resp){
if(resp=="ok"){
$('#login').html('Login');
setTimeout('window.location.href="index.php";',4000);
}else{
$('#info').fadeIn(1000,function(){
$('#info').html("<div class='alert alert-danger'>" +resp+ "</div>");
$('#login').html('Login');
})
}
}
})
}
})
</script>
我logging.php
会是:
<?php
session_start();
require_once "dbconnection.php";
if (isset($_POST['email'])) {
$email = trim($_POST["email"]);
$pass = trim($_POST["password"]);
$password = md5($pass);
$query = $mysqli->prepare("SELECT * FROM users WHERE email=?");
$query->bind_param("d",$email);
$query->execute();
$query->bind_result($id,$user,$myemail,$mypass);
$query->fetch();
if($mypass==$password){
echo 'ok';
$_SESSION['id'] = $id;
$_SESSION['user'] = $user;
}else{
echo 'emai & pass wrog';
}
?>
任何帮助都将不胜感激。
解决方案
它应该s
代替d
. 它代表字符串。
$query->bind_param("s",$email);
此外,您永远不应该使用 MD5 作为密码。利用password_hash()
推荐阅读
- reactjs - 我无法将我的图像文件链接到我的反应文件
- android-sdk-tools - 在 POP OS 20.04 上启动模拟器时 Android Studio 4.0.1 错误“无法找到 adb”
- python - 如何制作具有多个系列和计数的条形图
- c - 使用递归尝试在 c 中创建降序列表时出现问题
- or-tools - 在 Google Or-Tools 上,我们如何在 Vehicles 上设置时间窗口?
- makefile - makefile 调用其他 makefile 的最佳实践
- tensorflow2.0 - 我使用 tensorflow2 识别验证码图像,但发生了一些错误
- javascript - 在鼠标悬停效果中添加2-3张图片
- javascript - 将文件链接到 html 文档时,Javascript 文件不起作用
- javascript - 为什么我的预加载器开始加载不明确?