高效有效的表单验证
Efficient and effective form validation
这里有一个表单的工作示例。我需要使用Jquery表单验证的Javascript来验证用户是否输入了自己的数据。到目前为止,我已经尝试过检查值,但显然这不起作用,因为输入和文本区域已经有了默认值,因此用户可以直接提交,而无需填写任何内容。
任何帮助都将不胜感激。
提前感谢!
编辑
我使用这个php将提交的数据发送到一个电子邮件地址:
<?php
$name = $_POST['name'];
if ($name=="") {
$name="Nothing was returned for this part of the form.";
}
$email = $_POST['email'];
if ($email=="") {
$email="Nothing was returned for this part of the form.";
}
$subject = $_POST['subject'];
if ($subject=="") {
$subject="Nothing was returned for this part of the form.";
}
$comments = $_POST['comments'];
if ($comments=="") {
$comments="Nothing was returned for this part of the form.";
}
$theMessage7="<b>Results from the form at www.site.co.uk/contact.html</b><br /><br />" . "Name: " . $name . "<br />" . "Email: " . $email . "<br />" . "Subject: " . $subject . "<br />" . "Message: " . $comments . "<br />";
$theEmail7="mail@mail.com";
$theSubject7="New form submission";
$theHeaders7="MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: form@bikeinc.co.uk
Subject: New form submission";
$theErrorFile7="www.site.co.uk/12345";
$theThanxFile7="received.html";
if (!(mail($theEmail7, stripslashes($theSubject7), stripslashes($theMessage7), stripslashes($theHeaders7)))) {
header ( "Location: $theErrorFile7" );
}else{
header ( "Location: $theThanxFile7" );
}
?>
用户端表单验证的有效形式是使用jQuery验证插件,请参阅正确使用的示例。
注意:用户ALWAYS可以禁用javascript或使用某种bot发送无效的未检查数据,因此您必须始终编写正确的服务器端验证
框架通常提供有效的表单验证方法,例如Zend_Validator
。
为php应用程序准备方法是很常见的,例如:
public function validate() {
if( !isset( $_POST['name'])){
$this->field = 'name';
$this->msg = 'Invalid user name';
return false;
}
...
return true;
}
并在两个发送脚本中使用它:
if( $form->validate()){
send();
}
在检查脚本中:
$data = array();
if( $form->validate()){
$data['status'] = 'ok';
} else {
$data['status'] = 'failure';
$data['field'] = $form->field;
$data['msg'] = $form->msg;
}
echo json_encode( $data);
结束使用jquery和javascript进行"动态"表单验证:
<input type="text" name="name" value="" onchange="ajaxValidate();" />
function ajaxValidate(){
// Call ajax to check script and put results
}
如果你只是用一种形式来构建一个小项目,你可以实现一些方法,比如:
function is_post( $key); // Shorter than write isset( $_POST[ $key])
function get_post( $key, $defaultValue); // Shorter than isset( $_POST[ $key]) ? $_POST[ $key] : $default
function is_email(...);
...
以及jQuery验证:
function validateForm() {
$('.input').removeClass( 'error');
var status = true;
if( $('input[name=name]').val() == '')){
$('input[name=name]').addClass( 'error');
setMessage( 'Name cannot be empty');
status = false;
}
...
return status;
}
<form onsubmit='return validateForm();' ...>
您可以尝试使用HTML5必需的属性。。。然而,这只适用于支持它的浏览器。例如:
<label for="name">Name:</label>
<input type="text" name="name" required="required" id="name">
不过,只有当您使用HTML5 doctype时,这才会起作用。
然后,对于实例中的PHP验证,HTML5验证由于浏览器不兼容而没有运行。。。或者如果JavaScript由于被禁用/不可用/损坏而无法运行。
// check input
if (empty($_POST['name']))
{
$errors['name'] = 'Please provide your name.';
}
然后,当我在身份验证完成后向用户显示页面时,我会显示错误。
<label for="name">Name:</label>
<input type="text" name="name" required="required" id="name">
<?php if (!empty($errors['name'])): ?><p class="error"><?php echo $errors['name']; ?></p><?php endif; ?>
此外。。。如果要将SQL注入、XSS和恶意代码注入保存在数据库中或显示给其他用户,请记住要保护自己不受其影响。
相关文章:
- JAVASCRIPT验证表单中的日期
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- 如何使用jQuery正确验证表单
- Javascript不会验证表单
- 如何使用javascript验证表单中的数据,然后调用php页面
- 包括来自另一个页面的Boostrap模态;t验证表单
- Javascript验证表单不重定向页面
- 在提交之前验证表单,jQuery发布到javaScript,然后提交到确认页面
- 引导复选框-x 选中时未正确更新 DOM - 如何验证表单
- Jquery 验证表单
- 验证表单中的 jQuery-UI 微调器
- 在 Jquery 中验证表单的输入字段
- 如何验证表单控制数据大小不超过2.5 mb
- 在表单进入Angular中的ng-submit之前验证表单
- Javascript表单验证:表单在错误返回时提交:
- 使用Angular.js验证表单输入的原始状态
- 正在复制验证表单
- 如何在转盘中逐步(3步)验证表单
- 使用javascript验证表单值
- 验证表单按id输入val