PHP/JS联系人表单-验证

PHP/JS Contact Form - Validation

本文关键字:验证 表单 联系人 JS PHP      更新时间:2023-09-26

我无法让这个表单工作。我所做的一切只是出现一个错误,还说电话号码无效,但当我看代码时,我真的看不出为什么它不工作。

注:我真的不懂PHP或JS,所以我真的不知道我在寻找什么,当它涉及到错误。

谢谢你的帮助。

这是HTML

<form action="contact.php" method="post" id="cform" name="cform">
          <ul id="homehireus" class="hireform contactform">
            <li>
              <label>Name:<span class="required">*</span></label>
              <input name="name" id="name" type="text" value="" tabindex="1">
            </li>
            <li>
              <label>Phone:</label>
              <input name="phone" id="phone" type="text" value="" tabindex="2">
            </li>
            <li>
              <label>Email:<span class="required">*</span></label>
              <input name="email" id="email" type="text" value="" tabindex="3">
            </li>
            <li>
              <label>Subject:</label>
              <input name="subject" id="subject" type="text" value="" tabindex="4">
            </li>
            <li>
              <label>Message:<span class="required">*</span></label>
              <textarea name="message" id="message" tabindex="5"></textarea>
            </li>
            <li>
              <input type="button" id="send-message" value="Send Details To iPhone Repairs" tabindex="6">
              <div id="output" class="contactpage-msg"></div>
            </li>
          </ul>
        </form>
PHP

 <?php 
$send_email_to = "naomi.deluca@me.com";
function send_email($name,$email,$phone,$subject,$message)
{
  global $send_email_to;  
  if($message=='message')$message='';
  $headers = "MIME-Version: 1.0" . "'r'n";
  $headers .= "Content-type:text/html;charset=iso-8859-1" . "'r'n";
  $headers .= "From: ".$email. "'r'n";
  $message = "<strong>Email = </strong>".$email."<br>";  
  $message .= "<strong>Name = </strong>".$name."<br>";     
  $message .= "<strong>Phone = </strong>".$phone."<br>";     
  $message .= "<strong>Message = </strong>".$message."<br>";
  @mail($send_email_to, $subject, $message,$headers);
  return true;
}
function validate($name,$email,$phone,$message,$subject)
{
  $return_array = array();
  $return_array['success'] = '1';
  $return_array['name_msg'] = '';  
  $return_array['email_msg'] = '';
  $return_array['phone_msg'] = '';
  $return_array['message_msg'] = '';
  $return_array['subject_msg'] = '';
 if($email == '')
  {
    $return_array['success'] = '0';
    $return_array['email_msg'] = 'email is required';
  }
  else
  {
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+'.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email)) {
      $return_array['success'] = '0';
      $return_array['email_msg'] = 'Enter valid email.';  
    }
  }
  if($name == '')
  {
    $return_array['success'] = '0';
    $return_array['name_msg'] = 'Name is required';
  }
  else
  {
     $string_exp = "/^[A-Za-z .'-]+$/";
    if (!preg_match($string_exp, $name)) {
      $return_array['success'] = '0';
     $return_array['name_msg'] = 'Enter valid Name.';
    }
  }
  if($phone == '')
  {
    $return_array['success'] = '0';
    $return_array['phone_msg'] = 'Phone is required';
  }
  else
  {
    $string_exp = "/^[A-Za-z .'-]+$/";
     if (!preg_match($string_exp, $phone)) {
       $return_array['success'] = '0';
     $return_array['phone_msg'] = 'Enter valid Phone.';
    }
  }
  if($subject == '')
  {
    $return_array['success'] = '0';
    $return_array['subject_msg'] = 'Subject is required';
  }
  if($message == '')
  {
    $return_array['success'] = '0';
    $return_array['message_msg'] = 'Message is required';
  }
  else
  {
    if (strlen($message) < 2) {
      $return_array['success'] = '0';
      $return_array['message_msg'] = 'Enter valid Message.';
    }
  }  
  return $return_array;
}
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['message'];
$subject = $_POST['subject'];
$return_array = validate($name,$email,$phone,$message,$subject);
if($return_array['success'] == '1')
{
  send_email($fname,$email,$phone,$subject,$message);
}
header('Content-type: text/json');
echo json_encode($return_array);
die();
?>

JS

$(document).ready(function () {
    $('div#output').hide();
    //bind send message here
    $('#send-message').click(sendMessage);
    $('button.close').live('click', function () {
        $(this).parent().find('p').html('');
        $(this).parent().hide();
    });
});
/* Contact Form */
function checkEmail(email) {
    var check = /^['w'.'+-]{1,}'@(['da-zA-Z-]{1,}'.){1,}['da-zA-Z-]{2,6}$/;
    if (!check.test(email)) {
        return false;
    }
    return true;
}
function sendMessage() {
    // receive the provided data
    var name = $("input#name").val();
    var email = $("input#email").val();
    var subject = $("input#subject").val();
    var phone = $("input#phone").val();
    var message = $("textarea#message").val();
    message = 'message';
    // check if all the fields are filled
    if (name == '' || phone == '' || email == '' || subject == '' || message == '') {
        $("div#output").show().html('<button type="button" class="close" data-dismiss="alert-close">x</button><p class="alert-close">You must enter all the fields!</p>');
        return false;
    }
    // verify the email address
    if (!checkEmail(email)) {
        $("div#output").show().html('<button type="button" class="close" data-dismiss="alert">x</button><p>Please enter a valid Email Address</p>');
        return false;
    }
    // make the AJAX request
    var dataString = $('#cform').serialize();
    $.ajax({
        type: "POST",
        url: 'contact.php',
        data: dataString,
        dataType: 'json',
        success: function (data) {
            if (data.success == 0) {
                var errors = '<ul><li>';
                if (data.name_msg != '')
                    errors += data.name_msg + '</li>';
                if (data.email_msg != '')
                    errors += '<li>' + data.email_msg + '</li>';
                if (data.phone_msg != '')
                    errors += '<li>' + data.phone_msg + '</li>';
                if (data.message_msg != '')
                    errors += '<li>' + data.message_msg + '</li>';
                if (data.subject_msg != '')
                    errors += '<li>' + data.subject_msg + '</li>';
                $("div#output").removeClass('alert-success').addClass('alert-error').show().html('<button type="button" class="close" data-dismiss="alert">x</button><p> Could not complete your request. See the errors below!</p>' + errors);
            }
            else if (data.success == 1) {
                $("div#output").removeClass('alert-error').addClass('alert-success').show().html('<button type="button" class="close" data-dismiss="alert">x</button><p>You message has been sent successfully!</p>');
            }
        },
        error: function (error) {
            $("div#output").removeClass('alert-success').addClass('alert-error').show().html('<button type="button" class="close" data-dismiss="alert">x</button><p> Could not complete your request. See the error below!</p>' + error.statusText);
        }
    });
    return false;
}

验证名称的正则表达式与验证电话号码的正则表达式相同,很奇怪,不是吗?

要验证每种电话号码,您只需检查$phone是否只包含ctype_digit()的数字。

如何使用

$string_exp = "/^[A-Za-z .'-]+$/";/^[0-9]+$/代替/^[A-Za-z .'-]+$/ ?

if (preg_match($string_exp, $phone)) {代替if (!preg_match($string_exp, $phone)) {

用于验证电话号码的正则表达式:

/^[A-Za-z .'-]+$/

不接受数字。考虑到电话号码通常包含数字,该正则表达式在此上下文中很可能无效。

验证电话号码的正则表达式不正确。替换行:

$string_exp = "/^[A-Za-z .'-]+$/";

$string_exp = "/^('d['s-]?)?['('['s-]{0,2}?'d{3}[')']'s-]{0,2}?'d{3}['s-]?'d{4}$/i";

以上正则表达式接受以下格式的电话号码:

555-555-5555
5555425555
555 555 5555
1(519) 555-4444
1 (519) 555-4422
1-555-555-5555
1-(555)-555-25555