Ajax&;PHP登录表单,存在验证问题。多重麻烦
我正在尝试使用ajax和jquery将我的登录表单转换为下拉列表。到目前为止,除了ajax和错误验证之外,我已经完成了所有工作 目前我遇到的主要问题是没有输入字段,例如密码。登录框显示“此字段是必需的”,这很好,如果我再次单击提交,输入字段将消失,消息将保留。除非刷新页面,否则无法继续登录 另一个主要问题是从php获取错误消息。如果我输入了错误的密码,则不会显示消息。表格提交后就消失了,就这样。当我再次选择login时,我可以看到以前应该显示的错误消息 好的一面是:正确的登录组合可以完美地工作 感谢您的帮助 PHP和函数都粘贴在下面Ajax&;PHP登录表单,存在验证问题。多重麻烦,php,jquery,html,ajax,forms,Php,Jquery,Html,Ajax,Forms,我正在尝试使用ajax和jquery将我的登录表单转换为下拉列表。到目前为止,除了ajax和错误验证之外,我已经完成了所有工作 目前我遇到的主要问题是没有输入字段,例如密码。登录框显示“此字段是必需的”,这很好,如果我再次单击提交,输入字段将消失,消息将保留。除非刷新页面,否则无法继续登录 另一个主要问题是从php获取错误消息。如果我输入了错误的密码,则不会显示消息。表格提交后就消失了,就这样。当我再次选择login时,我可以看到以前应该显示的错误消息 好的一面是:正确的登录组合可以完美地工作
function validLogin(){
$('.error').hide();
var username = $('#username').val();
if(username == ""){
$('label#usernameError').show();
$('input#username').focus();
return false;
}
$('.error').hide();
var password = $('#password').val();
if(password == ""){
$('label#passwordError').show();
$('input#password').focus();
return false;
}
var params = "username="+username+"&password="+password;
var url = "loginProcessAjax.php";
$("#status").show();
$("#status").fadeIn(400).html('<img src="image/loading.gif" />');
$.ajax({
type: 'POST',
url: url,
dataType: 'html',
data: params,
beforeSend: function() {
document.getElementById("status").innerHTML= 'checking...' ;
},
complete: function() {
},
success: function(html) {
$("#status").hide();
document.getElementById("status").innerHTML= html;
if(html=="success"){
window.location = "index.php"
}
}
});
}
<?php
//check fields are filled in
if(empty($_POST) === false){
$username = trim($_POST['username']);
$password = trim($_POST['password']);
//validate fields
if(empty($username) === true || empty($password) === true){
$errors[] = 'Your username and password are needed.';
}else if($users->userExists($username) === false){
$errors[] = 'That username does not exist';
}else if($users->emailActivated($username) === false){
$errors[] = 'You need to activate the account, please check your email.';
}else{
//start login
$login = $users->login($username, $password);
if($login === false){
$errors[] = 'That username or password is invalid';
if(empty($errors) === false){
echo '<p>' .implode('</p<p>', $errors).'</p>';
}
}else{
//destroy old session and create new - prevents session fixation attacks
session_regenerate_id(true);
//all details are correct - the method returns the id to be sotred as a session
$_SESSION['id'] = $login;
//send user to their home page
echo "success";
header('Location: userHome.php');
exit();
}
}
}
函数validLogin(){
$('.error').hide();
var username=$('#username').val();
如果(用户名==“”){
$('label#usernamererror').show();
$('input#username').focus();
返回false;
}
$('.error').hide();
var password=$('#password').val();
如果(密码==“”){
$('label#passwordError').show();
$('input#password').focus();
返回false;
}
var params=“username=“+username+”&password=“+password;
var url=“loginProcessAjax.php”;
$(“#状态”).show();
$(“#status”).fadeIn(400).html(“”);
$.ajax({
键入:“POST”,
url:url,
数据类型:“html”,
数据:params,
beforeSend:function(){
document.getElementById(“status”).innerHTML='checking…';
},
完成:函数(){
},
成功:函数(html){
$(“#状态”).hide();
document.getElementById(“status”).innerHTML=html;
如果(html==“成功”){
window.location=“index.php”
}
}
});
}
什么是内爆(“它显示错误,它们包含在一个数组中。如果数组不是空的,则“清空”、“显示”或“内爆”数组,使错误可见。但是为什么要用sh!t连接元素,这不应该是那样的。应该是。修改、保存、更新,上面的错误仍然存在。感谢您指出我你能把表单和它的容器的html贴出来吗