Javascript 使用PHP、JS和Ajax验证contactform
我对输入联系人表单的内容的验证有问题 以下是表格:Javascript 使用PHP、JS和Ajax验证contactform,javascript,php,ajax,validation,Javascript,Php,Ajax,Validation,我对输入联系人表单的内容的验证有问题 以下是表格: <script src="http://malsup.github.com/jquery.form.js"></script> <script> $(document).ready(function(){ $('#contact_messenbrinkeu').ajaxForm( function(){ alert("Your message has been send!")
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
$(document).ready(function(){
$('#contact_messenbrinkeu').ajaxForm(
function(){
alert("Your message has been send!");
}
)
})
</script>
</head>
<body>
<section id="page">
<?php include("includes/header.php"); ?>
<section id="articles">
<article id="article1">
<div id="contact-form">
<form id="contact_messenbrinkeu" action="sendform.php" method="post">
<fieldset id="form">
<label for="name">Name*</label><br>
<input type="text" name="name" placeholder="Your Name"title="enter your name" class="alpha required"><br>
<label for="email">E-mail*</label><br>
<input type="email" name="email" placeholder="mail@example.com" title="Enter your e-mail address" class="mail required"><br>
<label for="phone">Phone</label><br>
<input type="text" name="phone" placeholder="00 45 12 34 56 78" class="numeric"><br>
<label for="website">Website</label><br>
<input type="text" name="website" placeholder="www.example.com" id="website"><br>
<label for="message">Message*</label><br id="message">
<textarea name="message" class="required"></textarea>
</fieldset>
<fieldset id="button">
<button type="submit">>> Send</button>
<button type="reset">reset <<</button>
</fieldset>
</form>
</div><!-- /end #contact-form -->
</article><!-- Article 1 end -->
</section>
<?php include("includes/jquery.php");?>
<script type="text/javascript">
/*<![CDATA[*/
jQuery.noConflict();
jQuery(document).ready(function($){
// when submit button is pressed
$("#contact_messenbrinkeu").submit(function() {
var pass = true;
var errors = {
required : 'this field is required',
email : 'enter a valid email address',
numeric : 'enter a number without spaces, dots or commas',
alpha : 'this field accepts only letters & spaces'
};
var tests = {
email : /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
numeric : /^[0-9]+$/,
alpha : /^[a-zA-Z ]+$/
};
// clear error messages
$(".error").removeClass();
$(".error-message").remove();
function displayError(el, type) {
$(el).parent().addClass("error").find('label').append('<span class=\"error-message\"> – ' + errors[type] + '</span>');
}
$('.required, .email, .numeric, .alpha').each(function(){
var value = $(this).val();
var valueExists = value.length === 0 ? false : true;
var required = $(this).hasClass('required');
var email = $(this).hasClass('email');
var numeric = $(this).hasClass('numeric');
var alpha = $(this).hasClass('alpha');
if (required && value.length===0) {
displayError(this,'required');
pass=false;
}
else if (email && valueExists && !tests.email.test(value)) {
displayError(this,'email');
pass=false;
}
else if (numeric && valueExists && !tests.numeric.test(value)) {
displayError(this,'numeric');
pass=false;
}
else if (alpha && valueExists && !tests.alpha.test(value)) {
displayError(this,'alpha');
pass=false;
}
});
return pass;
});
});
/*]]>*/
</script>
<?php
ini_set("display_errors", "0");
$post_data = filter_input_array( INPUT_POST );
$name = $post_data["name"];
$email = $post_data["email"];
$phone = $post_data["phone"];
$website = $post_data["website"];
$message = $post_data["message"];
# select data that needs validation
$validate = array(
'required' => array($name,$email,$message),
'validEmail' => array($email),
'validNumber' => array($phone),
'validAlpha' => array($name)
);
$formcontent = "Name: $name \nE-Mail: $email \nPhone: $phone \nWebsite: $website \nMessage: $message \n";
//*$formcontent = wordwrap($formcontent, 70, "\n", true);
$recipient = "mail@test.com";
$subject = "Testmail";
/*$mailheader = "From: $email \r\n";**/
$mailheader .= "Reply-To: $name <$email>\r\n";
$mailheader .= "Return-Path: $name <$email>\r\n";
$mailheader .= "Content-Type: text/plain\r\n";
$mailheader .= "Organization: Sender Organization\r\n";
$mailheader .= "MIME-Version: 1.0\r\n";
$mailheader .= "Content-type: text/plain; charset=UTF-8\r\n";
$mailheader .= "X-Priority: 3\r\n";
$mailheader .= "X-Mailer: PHP". phpversion() ."\r\n";
$mailheader .= "From: $name <$email>\r\n";
function sendMail() {
global $formcontent, $recipient, $subject, $mailheader;
mail($recipient, $subject, $formcontent, $mailheader);
}
# error messages
$errorsMsgs = array(
'required' => 'Please fill out all required fields.',
'validEmail' => 'is an invalid email address.',
'validNumber' => 'is an invalid number.',
'validAlpha' => 'contains invalid characters. This field only accepts letters and spaces.'
);
$errorMarkup = "<h1>We found a few errors :-(</h1><h2>Please fix these errors and try again</h2><ol>";
$errorMarkupEnd = "</ol>";
$successMarkup = "<h1>Success!</h1><h2>Your form was sent successfully.</h2>";
$backMarkup = "<a href=\"" . $_SERVER['HTTP_REFERER'] . "\">Back to form</a>";
# begin state
$valid = true;
# loop through fields of error types
foreach ($validate as $type => $fields) {
# loop through values of fields to be tested
foreach ($fields as $value) {
# throw error if value is required and not entered
if ($type === 'required' && strlen($value) === 0) {
$errorMarkup .= "<li>$errorsMsgs[$type]</li>";
$valid = false;
break;
}
else if (
$type === 'validEmail' && !filter_var($value, FILTER_VALIDATE_EMAIL) ||
$type === 'validNumber' && !preg_match('/^[0-9 ]+$/', $value) ||
$type === 'validAlpha' && !preg_match('/^[a-zA-Z ]+$/', $value)
) {
if (strlen($value) === 0) {break;} # skip check if value is not entered
$errorMarkup .= "<li>\"$value\" $errorsMsgs[$type]</li>";
$valid = false;
continue;
}
}
}
function isUTF8($string){
return (utf8_encode(utf8_decode($string)) == $string);
}
if ($valid) {
//*isUTF8($subject);
//*isUTF8($formcontent);
sendMail();
$body = $successMarkup . $backMarkup;
$title = "Form sent";
} else {
$body = $errorMarkup . $errorMarkupEnd . $backMarkup;
$title = "Form errors";
}
$(文档).ready(函数(){
$(“#联系_messenbrinkeu”).ajaxForm(
函数(){
警报(“您的邮件已发送!”);
}
)
})
";
#开始状态
$valid=true;
#循环遍历错误类型的字段
foreach($validate as$type=>$fields){
#循环通过要测试的字段的值
foreach($value形式的字段){
#如果值是必需的且未输入,则抛出错误
如果($type=='required'&&strlen($value)==0){
$errorMarkup.=“$errorsMsgs[$type] ”;
$valid=false;
打破
}
否则如果(
$type==='validEmail'&&!filter\u var($value,filter\u VALIDATE\u EMAIL)||
$type=='validNumber'&&!preg_match('/^[0-9]+$/',$value)||
$type==='validAlpha'&&!preg_match('/^[a-zA-Z]+$/',$value)
) {
如果(strlen($value)==0){break;}#如果未输入值,则跳过检查
$errorMarkup.=“\”$value\“$errorsMsgs[$type] ”;
$valid=false;
继续;
}
}
}
函数isUTF8($string){
返回(utf8_编码(utf8_解码($string))==$string);
}
如果($有效){
//*isUTF8($subject);
//*isUTF8($formcontent);
sendMail();
$body=$successMarkup.$backMarkup;
$title=“已发送表格”;
}否则{
$body=$errorMarkup.$errorMarkupEnd.$backMarkup;
$title=“表单错误”;
}
在这一点上,我面临着两个问题:
在contact.php表单中,您将首先拥有与此类似的表单类型
<form action="post.php" name="contactUs" onsubmit="return validateForm();" method="post" >
下面是它的函数
function validate_required(field, alerttxt)
{
if (field.value == null || field.value == "")
{
alert(alerttxt);
return false;
}
else
{
return true;
}
}
在if语句中,键入表单的名称,我的表单名为contactUs,我的联系人表单值的名称为name,因此这将检查名称是否有效
在我的函数中,它检查它是否为null(empty)或“”,如果它为空,则与empty相同
给他们alerttxt,它在我的validate_required中定义为“必须提供有效的电子邮件”,这是在函数validate_required(字段,alerttxt)中设置的,字段是我表单的名称和我要验证的字段的名称,alerttxt如上所示,如果为空,则返回false,如果为空,则返回true
if语句是
if (false == validate_required)
您已从表单返回结果,if false==validate_required
,如果validate_required
也为false,则它们相等,并给出警告消息,如果validate_required
为true,则它们不匹配,并且语句不为false,因此不需要验证,希望如此s帮助,通读javascript,你就会明白它的意思
function validate_required(field, alerttxt)
{
if (field.value == null || field.value == "")
{
alert(alerttxt);
return false;
}
else
{
return true;
}
}
if (false == validate_required)