PHP контактная форма проверка правильности количества номеров по телефону

#php

#php

Вопрос:

PHP контактная форма проверка правильности количества номеров по телефону

Здравствуйте,

У меня есть эта php-форма, которая проверяет содержимое после отправки, так называется липкая php-форма. При обнаружении ошибки данные пользователя сохраняются в поле ввода, поэтому пользователю не нужно повторно вводить все данные снова.

Когда номер телефона отправлен, мне нужно, чтобы он подтвердил, что в первом поле ввода есть 3 символа / цифры, затем 3 в следующем, затем 4 в последнем. Так оно и есть сейчас, пока вы вводите цифры в первое поле ввода, оно просматривает остальные поля ввода номера телефона. Итак, я хочу добавить скрипт с минимальным количеством символов / чисел в процессе проверки. У меня есть форма, подтверждающая, что на данный момент это число. Мне также нужно это для проверки того, что в каждом поле ввода есть правильное количество номеров и для телефона. Я полагаю, что это просто изменение операторов elseif на просто if внутри другого if, но это тоже не сработало. Любая помощь была бы очень признательна. В Художественном институте столько всего преподавали с помощью PHP, а не этого.

Это особая область скрипта, которая проверяет номер телефона:

 //validate the phone number
if(is_numeric($_POST['phone01'])) { 
        $phone = $_POST['phone01']. '-';

}elseif(is_numeric($_POST['phone02'])) {    
        $phone .= $_POST['phone02']. '-';   

}elseif(is_numeric($_POST['phone03'])) { 
        $phone .= $_POST['phone03'];
}else{  
    print '<p class="error">Please enter your Phone Number as 10 Number.</p>';
    $validate = FALSE;
}
  

Это копия всего скрипта для самой формы:

 <?php 
// This page receives the data from itself and validates as well

//error reporting!
ini_set ('display_errors', 1);

//Shows all possible problem!
error_reporting (E_ALL);

// validate email  
function isValidEmail($email){
    return eregi('^[_a-z0-9-] (.[_a-z0-9-] )*@[a-z0-9-] (.[a-z0-9-] )*(.[a-z]{2,3})$', $email);
}


//show form
function show_form($firstName='',$lastName='',$businessName='',$email='',$phone01='',$phone02='',$phone03='',$message=''){

?>

<!--The form starts here --> 

      <form action ="<?php echo $_SERVER['PHP_SELF']; ?>"  method="post" name="contact form" target="_self" id="contact form" dir="ltr" >

        <table bgcolor="#000000" width="525" border="0" align="center">
          <tr>
            <td width="25%" align="right">*First Name:</td>
            <td colspan="2" align="left"><input name="firstName" type="text" id="firstName" tabindex="1" size="30" value="<?php if(isset($_POST['firstName'])) { print htmlspecialchars($_POST['firstName']); }?>"/></td>
            </tr>
          <tr>
            <td align="right">*Last Name:</td>
            <td colspan="2" align="left"><input name="lastName" type="text" id="lastName" tabindex="2" size="30" value="<?php if(isset($_POST['lastName'])) {print htmlspecialchars($_POST['lastName']); }?>"/></td>
            </tr>
          <tr>
            <td align="right">Business Name:</td>
            <td colspan="2" align="left"><input name="businessName" type="text" id="businessName" tabindex="3" size="35" value="<?php if(isset($_POST['businessName'])) {print htmlspecialchars($_POST['businessName']); }?>"/></td>
            </tr>
          <tr>
            <td align="right">*Email: </td>
            <td colspan="2" align="left"><input name="email" type="text" id="email" tabindex="4" size="35" value="<?php if(isset($_POST['email'])) {print htmlspecialchars($_POST['email']); }?>"/></td>
            </tr>
          <tr>
            <td align="right">*Phone Number:</td>
            <td colspan="2" align="left">
              <input name="phone01" type="text" id="phone01" size="3" maxlength="3" tabindex="5"value="<?php if(isset($_POST['phone01'])) {print htmlspecialchars($_POST['phone01']); }?>"/>
              - <input name="phone02" type="text" id="phone02" size="3" maxlength="3" tabindex="6"value="<?php if(isset($_POST['phone02'])) {print htmlspecialchars($_POST['phone02']); }?>"/>
              - <input name="phone03" type="text" id="phone03" size="4" maxlength="4" tabindex="7" value="<?php if(isset($_POST['phone03'])) {print htmlspecialchars($_POST['phone03']); }?>"/></td>
            </tr>
          <tr align="center">
            <td align="right">*Message:</td>
            <td colspan="2" align="left"><textarea name="message" type="text" id="message" tabindex="8" cols="45" rows="4"><?php if(isset($_POST['message'])) {print htmlspecialchars($_POST['message']); }?></textarea>
            </td>
            </tr>
          <tr align="center">
            <td>amp;nbsp;</td>
            <td><input name="submit" type="submit" tabindex="9" value="Email" /></td>
            <td><input type="reset" name="reset" id="reset" value=" Reset " tabindex="10"/></td>
          </tr>
          </table>
      </form> 
<?php 
} // end of show_form function
$validate = TRUE;


if($_SERVER['REQUEST_METHOD']!='POST') {

  show_form();

  } else {

    //validate form fields

    //validate the first name
    if(empty($_POST['firstName'])) {
            print '<p class="error">Please enter your First Name.</p>';
            $validate = FALSE;
    }

    //validate the last name
    if(empty($_POST['lastName'])) {
            print '<p class="error">Please enter your Last Name.</p>';
            $validate = FALSE;
    }

    //validate the enail with email arrary
    if(!isValidEmail($_POST['email'])) {
            print '<p class="error">Please enter your Email Address in the correct formate.</p>';
            $validate = FALSE;
    }

    //validate the phone number
    if(is_numeric($_POST['phone01'])) { 
            $phone = $_POST['phone01']. '-';

    }elseif(is_numeric($_POST['phone02'])) {    
            $phone .= $_POST['phone02']. '-';   

    }elseif(is_numeric($_POST['phone03'])) { 
            $phone .= $_POST['phone03'];
    }else{  
        print '<p class="error">Please enter your Phone Number as 10 Number.</p>';
        $validate = FALSE;
    }

    //validate the message
    if(empty($_POST['message'])) {
            print '<p class="error">Please enter your Messagee.</p>';
            $validate = FALSE;
    }

    if(!$validate){
        print "<p>Please fill in all the fields with an asterisk * next to it and than please try again!</p>";  

        show_form($_POST['firstName'],$_POST['lastName'],$_POST['businessName'],$_POST['email'],$_POST['phone01'],$_POST['phone02'],$_POST['phone03'],$_POST['message']);

    }else{
$phone01 = $_POST['phone01'];
$phone02 = $_POST['phone02'];
$phone03 = $_POST['phone03'];       
$phone = $phone01.'-'.$phone02.'-'.$phone03;        

    //confirmation email to client includes all information provided
    mail($_POST['email'], 'Contact Confirmation from www.Ozbar.net Web site', 'Thank You '.$_POST['firstName'].' '.$_POST['lastName'].' for your request for us to contact you. 

    Below is the information your provided us to contact you per your request.
    First Name: '.$_POST['firstName'].' 
    Last Name: '.$_POST['lastName'].'
    Business Name:  '.$_POST['businessName'].'
    Email Address: '.$_POST['email'].'
    Phone Number: '.$_POST['phone01'].'-'.$_POST['phone02'].'-'.$_POST['phone01'].' 
    Message: '.$_POST['message'].' ','From:contact@steveoatman.me); 

    //notice of a new contact request
    mail('contact@steveoatman.me, 'Contact Request from www.Steveoatman.me Web site', ' 
    First Name: '.$_POST['firstName'].' 
    Last Word: '.$_POST['lastName'].'
    Business Name:  '.$_POST['businessName'].'
    Email Address: '.$_POST['email'].'
    Phone Number: '.$_POST['phone01'].'-'.$_POST['phone02'].'-'.$_POST['phone01'].' 
    Message: '.$_POST['message'].' ','From:contact@steveoatman.me);

    print '<p align="center">Thank You For Your Request!</p>'?><br /><?php
    print '<p align="center">We will contact you back with in 24-48 hours.</p>' 
?>
<br /><br /> <!--  if all validated a thank you statement -->
<?php
}

} //end of IF submit
// end of all php
?> 


<!-- end of #ref form -->
  

Комментарии:

1. Сначала спросите себя: «Нужно ли будет этому сайту поддерживать международный набор, телефонные номера в других странах или добавочные номера?» Если это так, то попытка «подтвердить» номер телефона становится такой раздражающе сложной и нечетко определенной проблемой, что вы можете захотеть просто потребовать минимальное количество цифр без какой-либо конкретной формы.

2. Да, я вижу, как это может помочь моему бизнесу стать более локальным прямо сейчас, поэтому я считал, что мне нужно было просто подтвердить, что они ввели правильное количество чисел, и они являются числами. Спасибо за ответ и помощь этот сайт …..

Ответ №1:

Используйте strlen для проверки длины полей. Не используйте if/elseif , поскольку вы хотите проверить все три входных данных. Установите флаг, чтобы отслеживать действительность телефонного номера.

 $invalid_phone = false;
if((strlen($_POST['phone01']) == 3) amp;amp; is_numeric($_POST['phone01'])) { 
        $phone = $_POST['phone01']. '-';
}else{
   $invalid_phone = true;
}

if((strlen($_POST['phone02']) == 3) amp;amp; is_numeric($_POST['phone02'])) {    
        $phone .= $_POST['phone02']. '-';   
}else{
   $invalid_phone = true;
}

if((strlen($_POST['phone03']) == 4) amp;amp; is_numeric($_POST['phone03'])) { 
        $phone .= $_POST['phone03'];
}else{
   $invalid_phone = true;
}

if($invalid_phone){
    print '<p class="error">Please enter your Phone Number as 10 Number.</p>';
    $validate = FALSE;
}
  

Комментарии:

1. Это превосходно, поэтому просто добавляю strlen ($_POST[‘phone02’]) == 3) если бы я заблудился, ладно, чем вас так много, я пробовал другой сайт за помощью, и если они отвечают, это обычно не так прямолинейно, а мне нравится forward. Другие упоминают о проверке номера или международных звонках, но в настоящее время это местный бизнес, так что еще раз большое спасибо. Отлично работает, и я это тоже понимаю, это то, что, по моему мнению, действительно имело значение.

Ответ №2:

Приведенный выше код просто проверяет, есть ли в любом из 3 полей число, а не во всех из них.

Для достижения того, к чему вы стремитесь выше, что-то вроде этого сделало бы это:

 if (is_numeric($_POST['phone01']) amp;amp; is_numeric($_POST['phone02']) amp;amp; is_numeric($_POST['phone03']))
{
     $phone = $_POST['phone01']."-".$_POST['phone02']."-".$_POST['phone03'];
}
else
{
    print '<p class="error">Please enter your Phone Number as 10 Number.</p>';
    $validate = FALSE;
}
  

Однако приведенный выше код не выполняет никаких других видов проверки, таких как проверка того, что в каждое поле формы введено требуемое количество цифр.
Возможно, вы также захотите использовать функцию ‘ctype_digit()’, чтобы убедиться, что вводятся только цифры, а не числовая строка, такая как 1.3 .

Итак, вы могли бы сделать что-то вроде

 if (!ctype_digit($_POST['phone01']) || strlen($_POST['phone01']) != 4) 
{ 
    $validate = FALSE; 
}
  

Комментарии:

1. Я получаю полную проверку, но на данный момент, если они не вводят информацию Райта для этого номера, они проигрывают. Спасибо за помощь..