PHP - 表单提交的数据验证(Wordpress)

时间:2017-03-22 01:01:40

标签: php sql wordpress validation

我的wordpress网站存在问题。我在函数文件中创建了一个带有自定义PHP的自定义HTML表单,以便在提交表单时创建用户并通过电子邮件发送给我。它工作得很好,但有一件事我想要完成:当有人创建用户名时,我希望它在用户名存在的框中右侧放置一个错误标记,如果它已经存在于数据库中。下面是我们当前处理此操作的代码,它当前转到带有错误消息的索引页面,并在5秒内重定向回到表单。我希望在提交表单之前处理验证。

if ( username_exists($user)){
echo'User already exists. Go back and try again';
die();
}
if ( !username_exists( $user )  && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
if( !is_wp_error($user_id) ) {
   //user has been created
   $user = new WP_User( $user_id );
   $user->set_role( 'subscriber' );

   wp_mail( $to, $email_subject, $message, $headers);


   //Redirect
   wp_redirect( 'http://www.dev.smithhonig.com/thank-you' );
   exit;
} else {
   //$user_id is a WP_Error object. Manage the error
}
}


}

1 个答案:

答案 0 :(得分:2)

听起来您需要在用户名输入字段上进行AJAX调用并将其绑定到onkeyup事件。然后它将调用一个看起来像这样的PHP文件,结果将出现在div中,该div将出现在带有成功/失败消息的输入旁边。您可以将输入的文本作为名为" user"。

的url变量传递

您还需要保留已有的代码,因为在用户实际提交时必须重新验证,如果失败,他们将不得不返回。

<?php
      include("Path to where the username_exists function is defined");
      $user = sqlescape($_GET["user"]);

      if ( username_exists($user)){
          echo 'That username has already been claimed.';
      } else {
          echo 'That username is available.';
      }
?>

AJAX调用将在实际表单上(无论您输入的位置如下),看起来像这样:

<script type="text/javascript">
    $( "#input_id_here" ).keyup(function() {
     var requestURL = "Full URL where above PHP file is located?user=" + $(this).val();

    $.ajax({
        url: requestURL,
        context: this,
        type: 'GET',
        success: function(res) 
        { 
            $('#input_error_div_id_here').html(res);    
        }
     });
 });
</script>

您还可以根据AJAX调用中返回的值为您的输入或错误div添加/删除类。 Javascript将在成功部分中添加。