如何处理表格递交?

时间:2012-08-03 作者:Pooja

我刚接触wordpress,因此面临一些问题。

The use case scenario is as follows:

<用户将显示一张申请表,申请在其学校成立俱乐部club_details 在db中,用户会看到一些消息(例如:感谢提交。您的应用程序将发送给管理员审批。)否则会向用户显示相应的错误消息

I have done the following:

<我已经使用Wordpress HTML编辑器创建了一个申请表/页面validation.js) 具有验证代码的club-functions.php) 它有一个功能storeInDB() 将应用程序详细信息存储在数据库的自定义表中club.php) 在Wordpress管理面板上向管理员显示应用程序详细信息我被困在以下地方:如何处理表单提交。我应该将调用javascript的validate函数并稍后调用storeInDB() 作用

请就如何实现这一目标向我提供一些建议,这种方法好吗?提前非常感谢。

2 个回复
SO网友:ifdion

您应该使用wp_ajax 或者wp_ajax_nopriv 作用

首先,您应该将admin ajax url作为提交表单中的action属性值。

<form id="" action="<?php echo admin_url(\'admin-ajax.php\'); ?>" method="post" class="form" >
这样,表单将提交给管理员ajax。默认情况下为php(无JavaScript)。您可以使用JavaScript使其使用AJAX工作。

接下来是将使用提交的数据的函数。在表单中,放置wp_nonce_field 和一个名为action的隐藏输入。我的行动价值是add_transfer.

<?php wp_nonce_field(\'add_transfer\',\'security-code-here\'); ?>
<input name="action" value="add_transfer" type="hidden">
您可以将处理此表单的函数放入函数中。php或插件文件中。您可以使用wp_ajax_ + 如果这是仅针对登录用户的表单,则为操作名称。对于未登录的用户,请使用wp_ajax_nopriv + 改为操作名称。

add_action(\'wp_ajax_add_transfer\', \'process_add_transfer\');

function process_add_transfer() {
    if ( empty($_POST) || !wp_verify_nonce($_POST[\'security-code-here\'],\'add_transfer\') ) {
        echo \'You targeted the right function, but sorry, your nonce did not verify.\';
        die();
    } else {
        // do your function here 
        wp_redirect($redirect_url_for_non_ajax_request);
    }
}

SO网友:pcarvalho

首先,让我告诉您javascript验证在客户端工作。因此,如果用户禁用js,您将遇到问题。

因此,您还应该验证服务器端的输入值。

记住这一点:

可以从表单所在的页面直接调用js代码。onsubmit属性是调用它的常用方式。

example

<form onSubmit="validateForms()" method="post" action="domain.com/club-contacts">
    <label for="app_email">Application</label>
    <input type="text" name="app_email" id="app_email" value="" />
    <input type="hidden" name="app_application" value="1" />
    <input type="submit" name="app_form_send" value="Send" />
</form>
第页。php也可以是您的自定义模板页或单个模板页。php。在本例中,99是要向用户指示其是否已批准或有错误的特定页面的ID。

if ( get_the_ID() == \'99\' ) {
  // lets validate the input
  if( !empty($_POST[\'app_application\']) && $_POST[\'app_application\'] == "1"  ) {
   if(!empty($_POST[\'app_email\'])) {
    // check the codex for [Data_Validation][1]
    }
  }
}

结束

相关推荐

Help with forms and nonces

我正在尝试创建一个用于(面向公众的)表单的nonce。下面是我的代码:function my_form() { if (isset($_POST[\'submit\'])) { $name = $_POST[\'name\']; $description = $_POST[\'description\']; $output_form = false; if (wp_verify_nonce($_P