#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. Я получаю полную проверку, но на данный момент, если они не вводят информацию Райта для этого номера, они проигрывают. Спасибо за помощь..