使用表单验证引擎使用AJAX的Wordpress用户名可用性

时间:2010-07-30 13:18:48

标签: jquery ajax validation wordpress forms

那么,

我之前的问题让我使用这个脚本:

http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

由于我完全缺乏知识,我不明白如何在“ajax [ajaxUser]”类中使用“内联AJAX验证”来检查在Wordpress站点中设置新帐户时的用户名可用性。

非常感谢任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

最后能够使它发挥作用。

第1步 - 首先获取HTML表单。在输入用户名必须输入的输入字段中,您必须添加要应用于它的验证规则,在我的情况下:

<input type="text" name="user_login" id="user_login" class="validate[required,length[5,15],ajax[ajaxUser]]" value="Username"/>

“required”因为是必填字段,“length [5,15]”有助于缩小搜索范围,“ajax [ajaxUser]”是我们自定义的正则规则。

第2步 - 要访问使用此dbConnector.php的数据库:

<?php

class DbConnector {

var $theQuery;
var $link;

function DbConnector(){

        // Get the main settings from the array we just loaded
        $host = 'HOST';
        $db = 'DATABASE';
        $user = 'root';
        $pass = 'root';

        // Connect to the database
        $this->link = mysql_connect($host, $user, $pass);
        mysql_select_db($db);
        register_shutdown_function(array(&$this, 'close'));

    }

  //*** Function: query, Purpose: Execute a database query ***
    function query($query) {

        $this->theQuery = $query;
        return mysql_query($query, $this->link);

    }

    //*** Function: fetchArray, Purpose: Get array of query results ***
    function fetchArray($result) {

        return mysql_fetch_array($result);

    }

    //*** Function: close, Purpose: Close the connection ***
    function close() {

        mysql_close($this->link);

    }

}

?>

只需要将值$ host,$ db,$ user和$ pass替换为与您的服务器和数据库对应的值。

步骤3 - 然后创建一个名为validateUser.php的文件,该文件将获取数据库中的值,将它们与输入字段中输入的信息进行比较,并通知验证js的结果。比较

<?php

/* RECEIVE VALUE */
$validateValue=$_POST['validateValue'];
$validateId=$_POST['validateId'];
$validateError=$_POST['validateError'];


    /* RETURN VALUE */
    $arrayToJs = array();
    $arrayToJs[0] = $validateId;
    $arrayToJs[1] = $validateError;

include("dbConnector.php");
$connector = new DbConnector();

$query = "SELECT user_login FROM wp_users WHERE user_login = '$validateValue' LIMIT 1";
$result = $connector->query($query);
$num = mysql_num_rows($result);

if($num == 0){      // validate??
    $arrayToJs[2] = "true";         // RETURN TRUE
    echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';          // RETURN ARRAY WITH success
}else{
    for($x=0;$x<1000000;$x++){
        if($x == 990000){
            $arrayToJs[2] = "false";
            echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';      // RETURN ARRAY WITH ERROR
        }
    }

}

mysql_close();

第4步 - 完全忘记了这一重要步骤。您必须打开文件jquery.validationEngine-en.js并指定自定义正则表达式规则。 搜索此评论:“//在此处添加正则表达式规则,您可以将电话作为示例”并在其下添加新规则:

"ajaxUser":{
    "file":"./wp-content/themes/AtelierMomoni/library/js/validateUser.php",
    "alertTextOk":"* Great! This username is available",    
    "alertTextLoad":"* Loading, please wait",
    "alertText":"* Sorry, this username already been taken"},

就是这样!