我有一个表格here的工作示例。我需要使用Javascript的Jquery表单验证来验证用户是否输入了他/她自己的数据。到目前为止,我已经尝试检查值,但显然这不起作用,因为输入和textarea已经有一个默认值,因此用户可以直接提交而不填写任何内容。
非常感谢任何帮助。
提前致谢!
修改
我正在使用此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" );
}
?>
答案 0 :(得分:3)
用户端表单验证的有效形式是使用jQuery validation plugin,请参阅正确用法示例。
注意:用户总是可以禁用javascript或使用某种机器人发送无效的未检查数据,因此您必须始终编写正确的服务器端验证。
框架通常提供有效的表单验证方式,例如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();' ...>
答案 1 :(得分:0)
您可以尝试使用HTML5必需属性...但是这仅适用于支持它的浏览器。例如:
<label for="name">Name:</label>
<input type="text" name="name" required="required" id="name">
这仅在您使用HTML5文档类型时才有效。
然后,对于实例中的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和恶意代码注入。