gpt4 book ai didi

javascript - Ajax php post 未进行身份验证

转载 作者:可可西里 更新时间:2023-10-31 23:50:47 24 4
gpt4 key购买 nike

我有一个示例脚本可以验证我的用户访问该页面。我的问题是,当我发布值时,js 文件确实反射(reflect)了数据已被序列化,但是当它被发布到 php 文件以检查数据库记录是否存在时,用户仍然可以访问该页面,无论登录信息是否正确或错误。出于某种原因,它似乎不采用我的 `$_POST['pass'] 和我的 $_POST['user_email'] 值。但是,如果我在 php 文件中手动输入用户电子邮件和密码来替换变量,它将起作用。

HTML 格式

<form class="login" id="login-form" name="login-form" method="post">
<p class="title">LOGIN</p>
<input type="text" placeholder="Email" id="user_email" name="user_email" autofocus/>
<i class="fa fa-user"></i>
<input type="password" placeholder="Password" id="pass" name="pass" />
<i class="fa fa-key"></i>
<button>
<i class="spinner" style="outline:none;"></i>
<span class="state">Log in</span>
</button>
</form>

我的 js 文件发布值。我添加了 console.log 只是为了测试脚本接收了哪些值

$('document').ready(function()
{
var working = false;
$('.login').on('submit', function(e) {
e.preventDefault();
if(working)return
working = true;
var $this = $(this),
$state = $this.find('button > .state');
$this.addClass('loading');
$state.html('Authenticating');

var data = $("#login-form").serialize();
console.log(data);

$.ajax({

type : 'POST',
url : 'login_process.php',
data : data,
success : function(response) {
console.log(response);
if(response=="ok"){
setTimeout(function() {
$this.addClass('ok');
$state.html('Welcome');

setTimeout(function() {
$state.html('Log in');
$this.removeClass('ok loading');
working = false;
}, 4000);

setTimeout(function() {
window.location.href = "/Home.aspx";
}, 4000);
}, 3000);
//$("#btn-login").html('<img src="btn-ajax-loader.gif" /> &nbsp; Signing In ...');
//setTimeout(' window.location.href = "home.php"; ',4000);
} else {
console.log('ERROR IN LOGINING IN');
}
}
});
return false;
});
});

PHP 文件 'login_process'

<?php
session_start();
require_once 'dbconfig.php';
if(isset($_POST['pass']))
{
$user_email = urldecode(trim($_POST['user_email']));
$user_password =trim($_POST['pass']);
//$password = md5($user_password);
$password = $user_password;
try {

$stmt = $db_con->prepare("SELECT * FROM tbl_users WHERE user_email=:email");
$stmt->execute(array(":email"=>$user_email));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$count = $stmt->rowCount();

if($row['user_password']==$password){
echo "ok"; // log in
$_SESSION['user_session'] = $row['user_id'];
}
else{
echo "email or password does not exist."; // wrong details
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}
?>

最佳答案

您缺少数据类型 make with dataType : 'json' 就在数据之后,您可以通过 json_encode() ti 调试结果以 json 返回结果

关于javascript - Ajax php post 未进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com