阿贾克斯& PHP登录表单,验证问题。多重麻烦

时间:2013-07-15 14:34:04

标签: php jquery html ajax forms

我正在尝试使用ajax和jquery将我的登录表单转换为下拉列表。到目前为止,除了ajax和错误验证之外,我已经完成了所有工作。

目前我遇到的主要问题是没有输入字段,例如密码。登录框显示“此字段是必需的”,这很好,如果我再次单击提交,输入字段将消失并且消息仍然存在。除非我刷新页面,否则我无法继续登录。

另一个主要问题是从php获取错误消息。如果我输入了错误的密码,则不会显示该消息。表格提交,消失,就是这样。当我再次选择登录时,我可以看到之前应该显示的错误消息。

另一方面:正确的登录组合非常有效。

感谢任何帮助。

PHP和函数都粘贴在下面。

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();
    }
}
}

编辑:再次检查,现在如果我将任何字段留空或者如果它们不正确则不会显示错误。除非提供正确的详细信息,否则上述第二种情况是不变的。

0 个答案:

没有答案