-1

我正在做一个注册表单页面,我也应该在其中输入“电话”输入,但我需要电话字段为 8 位数字!!!如果用户输入的数字多于或少于 8 位,则注册表单会告诉他一个错误。

我认为应该是这样的......连接到数据库后

  $telephone=$_POST['telephone'];
  ... 
  .... 
  if(empty($telephone)){ // **i think i should write smth here???**
  echo  "phone number not set, and should be 8 digits!!" ;
  }
  else{

  /* Now we will write a query to insert user details into database */
  $insert_user=mysql_query("INSERT INTO login (telephone) VALUES ('$telephone')");

我感谢任何帮助:) 谢谢

4

3 回答 3

0

首先:并非所有电话号码都是8位数字。所以你不应该那么严格地强迫它。

对于电话号码的合理验证,此线程中有许多很好的答案:电话号码验证的综合正则表达式

就个人而言,您真的不应该在生产代码中使用多个感叹号。读“!!” 对用户和其他开发人员来说有点……令人不安。

于 2013-02-07T16:07:25.537 回答
0

要确保输入仅是 X 个数字:

// replace everything that is not in the range 0-9
$telephone = preg_replace('/[^0-9]/', '', $telephone);
// now check the remaining length - for this example 8
if (strlen($telephone) != 8) {
    // throw your error code in here
} else { ...

请记住,您确定电话号码只需要 8 位数字吗?没有破折号、逗号或括号,不再是数字(美国/加拿大数字为 10,不包括国际代码),一些国家/地区的数字更长/更短。

但就您的问题而言,如发布的那样,上述两个步骤将满足您的要求。

于 2013-02-07T16:15:29.230 回答
0

可以设置文本输入字段的最大长度。

<input maxlength="8">

确保您使用至少 8 个字符

if(strlen($telephone) != 8){ error.. }

另外验证您只收到了数字而不是您可以使用的字符

for($i=0; $i<8; $i++){
if{(ord($telephone[$i]>47)&&(ord$telephone[$i]<58)){ // its a number }
于 2013-02-07T16:26:13.367 回答