WordPress:PHP表单验证:似乎不起作用

时间:2011-08-19 18:45:46

标签: php wordpress validation

我正在尝试为用户信息编写一个表单,以跟踪谁从我的网站下载文件。我是PHP的新手,之前从未使用过WordPress,所以请光临我。

我从this website下载了一个PHP表单验证器,我尝试用客户端验证模仿示例3,这是我想出来的(请原谅长度,但我认为有必要理解一切):

<?php
require_once(ABSPATH. '/wp-includes/FormValidator/include/formvalidator.php');

$validation_errors='';
if(isset($_POST['submitButton']))
{// We need to validate only after the form is submitted

    //Setup Server side Validations
    //Please note that the element name is case sensitive 
    $validator = new FormValidator();
    $validator->addValidation("firstname","req","Please fill in your First Name");
    $validator->addValidation("firstname","alpha","Only letters a-z/A-Z are allowed for your First Name");
    $validator->addValidation("lasttname","req","Please fill in your Last Name");
    $validator->addValidation("lastname","alpha","Only letters a-z/A-Z are allowed for your Last Name");

    //Then validate the form
    if($validator->ValidateForm())
    {
        //If the validations succeeded, proceed with form processing
        addUserDataToDB();
    }
    else
    {
        //Validations failed. Display Errors.
        $error_hash = $validator->GetErrors();
        foreach($error_hash as $inpname => $inp_err)
        {
           $validation_errors .= "<p>$inpname : $inp_err</p>\n";
        }        
    }
}//if

$first_name  = isset($_POST['firstname'])?$_POST['firstname']:'';
$last_name = isset($_POST['lastname'])?$_POST['lastname']:'';
?>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
      <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
      <title>Whitepaper Download User Info</title>
      <style type="text/css">
        .error
        {
           font-family: Verdana, Arial, sans-serif; 
           font-size: 0.7em;
           color: #900;
           background-color : #ffff00;
        }
      </style>
<script type='text/javascript' src='<?php echo ABSPATH.'/wp-includes/FormValidator/scripts/gen_validatorv31.js' ?>'>
</script>
    </head>
<body>

<form id="DownloadUserDataForm" style="width:100%;">
    <fieldset>
        <div style="width:100%;">
            <p><b>Input Fields with (*) are Required.</b> <br/><p>

            <div>
                <span class='error'><?php echo $validation_errors; ?></span>
            </div>

            <div style="width:100%;">
                <div style="display:inline-block; float:left; width:48%; margin-right:5px;">
                    <b>First Name *:</b> <input type="text" name="firstname" style="width:82%;" maxlength="50" <?php if (isset($errors)) { echo 'value="'.htmlentities($_POST['first_name']).'"'; }?>
                      /> <br />
                      <span id='firstname_errorloc' class='error'></span>
                </div>
                <div style="display:inline-block; float:left; width:48%;">
                    <b>Last Name *:</b> <input type="text" name="lastname" maxlength="50" style="display:inline-block; width:82%;" <?php if (isset($errors)) { echo 'value="'.htmlentities($_POST['last_name']).'"'; } ?> /><br/>
                    <span id='lastname_errorloc' class='error'></span>
                </div>
            </div>
            <br />
            <div class="clear:both;">
                <p><input type="submit" name="submitButton" value="Submit" style="clear:both;" /></p>
            </div>
        </div>
    </fieldset>
</form>

</body>
</html>
<?php
//Function for Processing Data
function addUserDataToDB() 
{
    global $wpdb;

    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];

    $rows_affected = $wpdb->insert( 'wp_downloadUserData', array( 'time' => current_time('mysql'), 'firstname' => $firstname, 
        'lastname' => $lastname ) );

    //Redirect to download page
    wp_redirect('Whitepaper.htm');
    exit();
}

?>

<!-- client-side Form Validations:
Uses the form validation script from JavaScript-coder.com
See: http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
-->
<script type='text/javascript'>
    console.log("javascript ran");
    var frmvalidator  = new Validator("DownloadUserDataForm");
    frmvalidator.EnableOnPageErrorDisplay();
    frmvalidator.EnableMsgsTogether();
    frmvalidator.addValidation("firstname","req","Please fill in your First Name");
    frmvalidator.addValidation("firstname","alpha","Only letters a-z/A-Z are allowed for your First Name");
    frmvalidator.addValidation("lasttname","req","Please fill in your Last Name");
    frmvalidator.addValidation("lastname","alpha","Only letters a-z/A-Z are allowed for your Last Name");
</script>

所有发生的事情都是页面刷新,没有错误或验证,而且它似乎没有写入$wpdb,因为我有一个查询db表的管理页面,它出现空(它也没有't wp_redirect()喜欢它。由于某些原因,即使地址看起来正确,它也找不到javascript文件。

修改:以下是来自javascript的错误:

  

GET   HTTP:///home/public_html/wp-includes/FormValidator/scripts/gen_validatorv31.js   404(未找到)

1 个答案:

答案 0 :(得分:0)

对于您的javascript错误,请尝试更改此行:

<script type='text/javascript' src='<?php echo ABSPATH.'/wp-includes/FormValidator/scripts/gen_validatorv31.js' ?>'>

<script type="text/javascript" src="<?php echo ABSPATH; ?>/wp-includes/FormValidator/scripts/gen_validatorv31.js"></script>