【问题标题】:Form Validation in checking the number of digits entered表单验证检查输入的位数
【发布时间】:2016-07-22 01:50:56
【问题描述】:

这是我将数据插入数据库的 PHP 文件。
我需要验证输入的pmob_number 是否小于 10 位,然后再将其存储到数据库中。

<?php 
 $servername = "localhost";  
       $username = "root";  
       $password = "";  
       $conn = mysqli_connect ($servername , $username , $password) or  die("unable to connect to host");  
       $sql = mysqli_select_db ($conn,'vcet') or die("unable to connect to  database"); 




 //code to insert into db...
 $user_name=$_POST['user_name']; 
 $roll_number=$_POST['roll_number'];
 $user_batch=$_POST['user_batch'];
 $user_from=$_POST['user_from'];
 $user_year=$_POST['user_year'];
 $user_level=$_POST['user_level'];
 $F_name=$_POST['F_name'];
 $m_name=$_POST['m_name'];
 $g_name=$_POST['g_name'];
 $mob_number=$_POST['mob_number'];
 $addressline1=$_POST['addressline1'];
 $addressline2=$_POST['addressline2'];
 $city=$_POST['city'];
 $pmob_number=$_POST['pmob_number'];


    $msg="";

    $number_valid=$_POST['pmob_number'];

    if(strlen($number_valid)!=10){
        $msg='<span class="error">The number you enteres was not 10 digit    long</span>';

    }else
    {
        echo"valid";
    }



 $land_number=$_POST['land_number'];
 $cutoff=$_POST['cutoff'];
 $dept=$_POST['dept'];
 $medium = $_POST['medium'];
 $locality=$_POST['locality'];
 $intrest=$_POST['intrest'];
 $scholar=$_POST['scholar'];
 $income=$_POST['income'];
 $user_caste=$_POST['user_caste'];
 $user_admit=$_POST['user_admit'];
 $user_stay=$_POST['user_stay'];







 $user_info = "INSERT INTO studentinfo"." (user_name,roll_number,user_batch,user_from,user_year,user_level,F_name,m_name,g _name,mob_number,addressline1,addressline2,city,pmob_number,land_number,cutoff,d ept,medium,locality,intrest,scholar,income,user_caste,user_admit, user_stay)". "VALUES ('$user_name', '$roll_number','$user_batch','$user_from','$user_year','$user_level','$F_name','$m_name','$g_name','$mob_number','$addressline1','$addressline2','$city','$pmob_number','$land_number','$cutoff','$dept','$medium','$locality','$intrest','$scholar','$income','$user_caste','$user_admit','$user_stay')"; 
 if (!mysqli_query($conn,$user_info)) { die('Error: ' .  mysqli_error($conn)); } echo "Your information was added to the database."; 
 mysqli_close($conn); 
 ?>

【问题讨论】:

  • 验证应该在客户端完成(javascript / jquery)
  • @NitinDhomse 我们不能总是依赖客户端验证,用户可能会绕过客户端脚本发送 POST 请求。
  • @nitin 验证应该在服务器上完成,最好也在客户端完成。永远不要相信用户输入。
  • 您具体需要/想知道什么。您使用 strlen() 将验证该数字是否恰好是 10 位数字,如果放置正确,它不会将值存储在数据库中,那么您遗漏或不理解什么?
  • @Matt i 在将数据存储到数据库之前尝试检查 pmob_number 中的位数是否等于 10 否则错误

标签: php sql html


【解决方案1】:

您可以使用strlen() 进行服务器端验证

编辑:这一定能解决问题

$num_length = strlen((string)$pmob_number);
if($num_length == 10) {

     $user_info = "INSERT INTO studentinfo"." (user_name,roll_number,user_batch,user_from,user_year,user_level,F_name,m_name,g _name,mob_number,addressline1,addressline2,city,pmob_number,land_number,cutoff,d ept,medium,locality,intrest,scholar,income,user_caste,user_admit, user_stay)". "VALUES ('$user_name', '$roll_number','$user_batch','$user_from','$user_year','$user_level','$F_name','$m_name','$g_name','$mob_number','$addressline1','$addressline2','$city','$pmob_number','$land_number','$cutoff','$dept','$medium','$locality','$intrest','$scholar','$income','$user_caste','$user_admit','$user_stay')"; 
     if (!mysqli_query($conn,$user_info)) { 
        die('Error: ' .  mysqli_error($conn));
     }

     echo "Your information was added to the database."; 

    mysqli_close($conn); 

} else {
    $msg='<span class="error">The number you enteres was not 10 digit    long</span>';

}

【讨论】:

  • 他的逻辑基本相同,只是 != 而不是
  • 对不起,它仍然直接存储它而不检查 pmob_number 中的位数
  • @RajCrk 你应该在你的问题中提到这一点。
  • @RajCrk 它直接存储它,因为您验证了位数,但是在该验证之外您插入了记录。您的插入语句需要在您的验证流程中,一种方法是将您的插入代码移动到有效端的 IF 语句中(否则)
  • @Matt 是的,我按照你说的做了......然后我收到了这个错误 Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\DB\info1.php on line 74
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2017-02-26
  • 2016-07-19
相关资源
最近更新 更多