jQuery验证插件无法验证电子邮件是否正确,PHP无法在服务器站点进行验证



我正在尝试用php验证contactform服务器站点,用jQuery验证插件验证客户端站点。首先,当我在输入电子邮件地址后使用jQuery验证插件,并在@后输入@和1个字符时,即使没有.com、.org等,jQuery验证程序插件也会通过电子邮件地址。在那里的演示网站上,你可以看到我的意思:[http://jqueryvalidation.org/files/demo][1] 。第二,我试图用PHP验证服务器站点,但这不起作用,我也找不到哪里出了问题。验证文件看起来像:

<?php
 //  We gaan de errors in een array bijhouden
   $aErrors = array();
   $aErrors ['name'] = '';
   $aErrors ['email'] = '';
   $aErrors ['message'] = '';
   if ('POST' == $_SERVER['REQUEST_METHOD']) {
   //  Er zijn gegevens verstuurd naar deze pagina! 
   //  Een naam bevat letters en spaties (minimaal 3)
   if ( !isset($_POST['name']) or !preg_match( '~^[w ]{2,}$~',     $_POST['name'] ) ) {
      $aErrors['name'] = 'Please fill in your name';
      }
   //  Een email-adres is wat ingewikkelder
   if ( !isset($_POST['email']) or !preg_match( '~^[a-z0-9][a- z0-9_.-]*@([a-z0-9]+.)*[a-z0-9][a-z0-9-]+.([a-z]{2,6})$~i',     $_POST['email'] ) ) {
      $aErrors['email'] = 'Please fill in your e-mail address';
   }
  //  Een adres heeft letters, cijfers, spaties (minimaal 5)
  if ( !isset($_POST['message']) or !preg_match( '~^[wd ]{5,}$~',  $_POST['message'] ) ) {
     $aErrors['message'] = 'What would you like to share?';
   }
  if ( count($aErrors) == 0 ) {
  //  We hebben alle gegevens
  //  Gegevens verwerken!
  //  Volgende pagina aub
  header('Location: http://www.phpfreakz.nl/someotherpage.php');
  exit();
  }
}
?>

validation.php在index.php的顶部需要一次,如:

<?php require_once 'php/validation.php'; ?>
<!doctype html>
<html lang="en" class="no-js">
<head>
<title>Alternate Fixed And Scroll Backgrounds</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

它本身的联系方式:

<div class="contact">
    <div class="formfield">
        <form method="post" class="cmxform"  id="commentForm" action="php/contact.php">
            <div class="fieldset">
                <input id="name" name="name" class="error_name" type:"text" placeholder="What is your name?" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '' ?>" />
            <div class="error_name"><?php print $aErrors['name'];?></div>
            <input id="email" name="email" class="error_email" type="email" placeholder="email" value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '' ?>" />
            <div class="error_email"><?php print $aErrors['email'];?></div>
            <textarea id="message" name="message" class="error_message" placeholder="message" value="<?php echo isset($_POST['message']) ? htmlspecialchars($_POST['message']) : '' ?>" /></textarea>
            <div class="error_message"><?php print $aErrors['message'];?></div>
            <input name="submit" type="submit" value="Versturen" />
                        </div>
        </form>
    </div>
</div>

PHP验证不起作用,我做错了什么。当我删除:

<?php require_once 'php/validation.php'; ?>

我收到一个错误,所以它知道它在那里,但什么都不做。

这就是我更改联系表格的方式。验证现在放在PHPmailer前面。如果正确输入了联系表格,邮件就会按原样发送。但是,当表单输入不正确,我单击提交时,将不会显示错误消息,我将被转移到blanc contact.php页面。

contact.php的外观也是如此:

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
require_once 'PHPMailerAutoload.php';
$aErrors = array();
$aErrors ['name'] = '';
$aErrors ['email'] = '';
$aErrors ['message'] = '';
if ('POST' == $_SERVER['REQUEST_METHOD']) {
//  Er zijn gegevens verstuurd naar deze pagina! 
//  Een naam bevat letters en spaties (minimaal 3)
if ( !isset($_POST['name']) or !preg_match( '~^[w ]{3,}$~',  $_POST['name'] ) ) {
$aErrors['name'] = 'Please fill in your name';
}
//  Een email-adres is wat ingewikkelder
if ( !isset($_POST['email']) or !preg_match( '~^[a-z0-9][a- z0-9_.-]*@([a-z0-9]+.)*[a-z0-9][a-z0-9-]+.([a-z]{2,6})$~i',  $_POST['email'] ) ) {
$aErrors['email'] = 'Please fill in your e-mail address';
}
//  Een adres heeft letters, cijfers, spaties (minimaal 5)
if ( !isset($_POST['message']) or !preg_match( '~^[wd ]{5,}$~',    $_POST['message'] ) ) {
$aErrors['message'] = 'What would you like to share?';
}
if ( count($aErrors) == 0 ) {
$mail = new PHPMailer;
//$mail->SMTPDebug = 3;                               // Enable  verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'xxxxxxxxxxxxx';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP  authentication
$mail->Username = 'xxxxxx';                 // SMTP username
$mail->Password = 'xxxxxxxxxxxxxx';                           // SMTP  password
$mail->SMTPSecure = 'ssl';                            // Enable TLS   encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to   connect to
$mail->From = 'xxxxxxxxx';
$mail->FromName = $_POST['name'];
$mail->addAddress('x', 'x');     // Add a recipient
          // Name is optional
$mail->addReplyTo($_POST['email']);

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML
$mail->Subject = 'Contact formulier';
$mail->Body    = $_POST['message'];
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if($mail->send()) {
     header('Location: localhost:8888/one_page_redirect kopie 3');
     die();
   } else {
     $errors[] ='Sorry, could not send email. Try again later.';
   }
  }
} else {
  $errors[] = 'Something went wrong.';
}
?>

联系方式如下:

<div class="contact">
    <div class="formfield">
        <form action="php/contact.php" method="post" class="cmxform">
           <?php
            if ( isset($aErrors) and count($aErrors) > 0 ) {
                foreach ( $aErrors as $error ) {
                print '<div>' . $error . '</div>';
                }
            }
            ?>
            <div class="fieldset">
                <input id="name" class="error_name" name="name" placeholder="What is your name?" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '' ?>" />
                <?php if (!empty($aErrors['name'])) { ?><div class="error_name"><?php print $aErrors['name'];?></div><?php } ?>
                <input id="email" name="email" placeholder="email" value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '' ?>" />
                <?php if (!empty($aErrors['email'])) { ?><div class="error_email"><?php print $aErrors['email'];?></div><?php } ?>
                <textarea id="message" class="error_message" name="message" placeholder="message" value="<?php echo isset($_POST['message']) ? htmlspecialchars($_POST['message']) : '' ?>" /></textarea>
                <?php if (!empty($aErrors['newt_win_messagev(title, button_text, format, args)'])) { ?><div class="error_message"><?php print $aErrors['message'];?></div><?php } ?>
                <input name="submit" type="submit" value="Versturen" />
            </div>
        </form>
    </div>
</div>

提前Thanx。

对于服务器端,我使用:

if (!filter_var($value, FILTER_VALIDATE_EMAIL))
{
  // Not Valid
}

对于客户端验证检查:使用jQuery 进行电子邮件验证

相关内容

最新更新