2016-04-19 6 views
2

Мне нужно это поле, чтобы разрешить ввод чисел в поле, и должно быть 11 цифр, которые были введены в поле «Мобильный номер», это форма, которую я создалПоля номера проверки формы PHP PHP

<form name="myForm" id="userDetails" action="formProcess.php" onSubmit="return validateForm()" method="post"> 
 
    <fieldset class="custInf"> 
 
    <h3> User Details </h3> 
 

 
    <label class="inputArea" for="fName">Forename :</label> 
 
    <input type="text" name="forename" id="fname" placeholder="Enter First Name" maxlength="20" size="15"></input> 
 

 
    <label class="inputArea" for="sName">Surname :</label> 
 
    <input type="text" name="surname" id="surname" placeholder="Enter Last Name" maxlength="20" size="15"></input> 
 

 
    <label class="inputArea" for="email">Email :</label> 
 
    <input type="email" name="email" id="email" placeholder="Enter Email Address" maxlength="40" size="15" /></input> 
 

 
    <label class="inputArea" for="hmph">Landline number :</label> 
 
    <input type="tel" name="landLineTelNo" id="hmphone" placeholder="Enter Landline no." maxlength="11" size="15"></input> 
 

 
    <label class="inputArea" for=" mobileTelNo">Mobile number :</label> 
 
    <input type="tel" name=" mobileTelNo" id="mobile" placeholder="Enter Mobile no." maxlength="11" size="15"></input> 
 

 
    <label class="inputArea" for="address">Postal Address :</label> 
 
    <input type="text" name="postalAddress" id="address" placeholder="Enter House no." maxlength="25" size="15"></input> 
 
    </fieldset> 
 

 
    <fieldset class="contactType"> 
 
    <h3> 
 
\t How would you like to be contacted? 
 
\t </h3> 
 
    <label class="radioBt" for="sms">SMS</label> 
 
    <input id="smsBut" type="radio" name="sendMethod" value="SMS"></input> 
 

 
    <label class="radioBt" for="email">Email</label> 
 
    <input type="radio" name="sendMethod" value="Email"></input> 
 

 
    <label class="radioBt" for="post">Post</label> 
 
    <input type="radio" name="sendMethod" value="Post"></input> 
 
    </fieldset> 
 

 
    <fieldset class="termsCon"> 
 
    <input type="checkbox" name="check" value="check" id="check" />I have read and agree to the Terms and Conditions and Privacy Policy</input> 
 
    </fieldset> 
 

 
    <input class="submitBut" type="submit" name="submitBut" value="Submit" </input>

Вот PHP я создал до сих пор, чтобы подтвердить ввод данных пользователем `// Обеспечивает пользователь вводит информацию, необходимую

$fname = $_REQUEST['forename']; 
if (empty($fname)) { 
die("<p>Enter a first name</p>\n"); 
} 

$surname = $_REQUEST['surname']; 
if (empty($surname)) { 
die("<p>You must enter a surname</p>\n"); 
} 

$email = $_REQUEST['email']; 
if (empty($email)) { 
die("<p>You need to enter an email</p>\n"); 
} 

$hmphone = isset($_REQUEST['hmph']) ? $_REQUEST['hmph'] : null ; 

$mobile = $_REQUEST['mobileTelNo']; 
if (empty($mobile)) { 
die("<p>Enter a Mobile Number</p>\n"); 
} 

$address = $_REQUEST['postalAddress']; 
if (empty($address)) { 
die("<p>Enter your postal address</p>\n"); 
} 

$sendMethod = $_REQUEST['sendMethod']; 
if (empty($sendMethod)) { 
die("<p>Please choose a contact option</p>\n"); 
} 

$check = $_REQUEST['check']; 
if (empty($check)) { 
die("<p>Please select the Terms and Conditions to continue</p>\n"); 
}` 
+0

яваскрипта обычный способ проверки форм – Mihai

+0

* «должно быть 11 цифр» * Я думаю, вы никогда не хотите работать со странами за пределами Северной Америки? – Mike

+3

Вы должны, нет, сделать так, чтобы * всегда * проверяли серверную сторону. @Mihai –

ответ

0

вы можете проверить с этим:

if(empty($number)) { 
    echo '<p> Please enter a value</p>'; 
} else if(!is_numeric($number)) { 
    echo '<p> Data entered was not numeric</p>'; 
} else if(strlen($number) != 11) { 
    echo '<p> The number entered was not 6 digits long</p>'; 
} 
+2

Имейте в виду, 'is_numeric (0xf4c3b00c);' is 'true'. – Mike

1

Вы можете шаблон матч в форме, добавив следующий код в соответствующее поле ввода благодаря html5 шаблона тега. Более подробная информация о шаблоне тега здесь: http://www.w3schools.com/tags/att_input_pattern.asp

pattern="[0-9]{11}" 

Это очень похоже на стороне сервера PHP проверки к счастью!

$isValid = preg_match("/[0-9]{11}/", $formvalue); 

$ IsValid возвращает истину (1), если она соответствует или ЛОЖЬ (0), если оно не совпадает.

preg_match - очень полезная функция в целом для выборочной проверки. Там более подробную информацию о ней можно найти здесь: http://php.net/manual/en/function.preg-match.php

3

Если вы уверены, что ваше правило верно вы можете сделать это:

if (empty($mobile) || preg_match('/^[0-9]{11}$/', $mobile) != 1) { 
    die("<p>Enter a Mobile Number</p>\n"); 
} 

из docs:

preg_match() возвращает 1, если шаблон соответствует заданному объекту, 0, если это не так, или FALSE, если произошла ошибка.

Регулярное выражение объяснено: положение

  • ^ утверждают в начале строки
  • [0-9] матча один присутствует символ в списке ниже
  • кванторных: {11} Ровно 11 раз
  • 0-9 один символ в диапазоне от 0 до 9
  • положение
  • $ утверждают в конце строки
+1

Даже если это не то, о чем попросил ОП, я бы сделал что-то вроде '$ mobile = preg_replace ('/ [^ \ d] /', '', $ _POST ['mobile']);' и просто разрешить им вводить это так, как они хотят. Поэтому, если они сделают '+1 (123) 555-5555', он все равно будет соответствовать правильно. Просто убедитесь, что в строке содержится всего 11 цифр. – Mike

+0

Это помогло спасибо mate :) Я havnt проверил других, но этот делает работу – OliverQueen

+0

Я согласен @Mike, я бы стал более «прощающим». –

Смежные вопросы