Validate Mobile number in php form

55,882

Solution 1

Try something like this :

$phoneNumber = $_POST['mobileno'];

if(!empty($phoneNumber)) // phone number is not empty
{
    if(preg_match('/^\d{10}$/',$phoneNumber)) // phone number is valid
    {
      $phoneNumber = '0' . $phoneNumber;

      // your other code here
    }
    else // phone number is not valid
    {
      echo 'Phone number invalid !';
    }
}
else // phone number is empty
{
  echo 'You must provid a phone number !';
}

Solution 2

Probably the most efficient and well-readable form would be to use the libphonenumber library from Google. PHP fork is available on GitHub. It can help you not only to validate number itself, but you can check country code with it or even know if some number is valid for specific country (this lib knows which number prefixes are valid for many countries). For example: 07700 900064 is valid GB number, but 09700 900064 is not, even if they have same length.

Here's how I would validate mobile phone number in your app:

$phoneNumber = $_POST['mobileno'];
$countryCode="GB";

if (!empty($phoneNumber)) { // phone number is not empty
    $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
    $mobileNumberProto = $phoneUtil->parse($phoneNumber, $countryCode);
    if ($phoneUtil->isValidNumber($mobileNumberProto)) { // phone number is valid
        //here you know that number is valid, let's try to format it without country code but with 0 at the beginning (national number format)
        $phoneNumber = $mobileNumberProto->format($mobileNumberProto, PhoneNumberFormat::NATIONAL);
    } else {
        $error[] = 'Phone number not valid!';
    }
} else {
    $error[] = 'You must provide a phone number!';
}

$countryCode is two chars ISO 3166-1 code. You can check it for your country on Wikipedia.

Solution 3

For Indian Mobile Numbers it will be easiest

if(is_numeric($num)){
if($num>=1000000000 && $num<=9999999999){
$num="0".$num;
}
else{
echo "Invalid Mobile Number";
}
}
else{
echo "Hey Buddy mobile numbers are always in digits";
}

This idea struck me because of the willingness of finding easy and some short of mind because the number(1000000000 ) is the lowest numerical value(10 digits) and the number (9999999999) is a highest numerical value that can be used as a mobile number in India. And one more thing code will run faster than other solutions.

Share:
55,882
Admin
Author by

Admin

Updated on January 15, 2022

Comments

  • Admin
    Admin over 2 years

    I want to validate mobile number of 10 digits and also add a prefix of 0 when I enter into the database.

    <?php
    
    include ('database_connection.php');
    
    $citystate = $_POST['citystate'];
    $serviceprovider = $_POST['serviceprovider'];
    $accept = $_POST['accept'];
    if (isset($_POST['formsubmitted'])) {
        $error = array(); //Declare An Array to store any error message 
    
        if (isset($_POST['checkbox'])) {
            $mumbai = (in_array("mumbai", $_POST['checkbox']) ? 1 : 0);
            $pune = (in_array("pune", $_POST['checkbox']) ? 1 : 0);
            $banglore = (in_array("banglore", $_POST['checkbox']) ? 1 : 0);
            $mysore = (in_array("mysore", $_POST['checkbox']) ? 1 : 0);
        }
    
        if ($mumbai + $pune + $banglore + $mysore == 0) {
            $error[] = 'Please check atleast one SMS center';
        }
    
        if ($accept != 1) {
            $error[] = 'Please check terms ';
        }
    
        if (empty($_POST['mobileno'])) {//if no name has been supplied 
            $error[] = 'Please Enter a Mobile Number '; //add to array "error"
        }
        if (empty($_POST['mobileno'])) {//if no name has been supplied 
            $error[] = 'Please Enter a Mobile Number '; //add to array "error"
        } else {
    
            $mobile = $_POST['mobileno']; //else assign it a variable
    
            /* if( preg_match("^[0-9]{10}", $mobile) ){
    
              }
    
              else {
    
              $error[] = 'Your Mobile No is invalid  ';
              } */
        }
        if (empty($_POST['fname'])) {//if no name has been supplied 
            $error[] = 'Please Enter a First name '; //add to array "error"
        } else {
            $fname = $_POST['fname']; //else assign it a variable
        }
    
        if (empty($_POST['lname'])) {//if no name has been supplied 
            $error[] = 'Please Enter a Last name '; //add to array "error"
        } else {
            $lname = $_POST['lname']; //else assign it a variable
        }
        if (empty($_POST['email'])) {
            $error[] = 'Please Enter your Email ';
        } else {
            if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['email'])) {
                //regular expression for email validation
                $email = $_POST['email'];
            } else {
                $error[] = 'Your EMail Address is invalid  ';
            }
        }
    
    
        if (empty($_POST['passwd1'])) {
            $error[] = 'Please Enter Your Password ';
        } else {
            $password = $_POST['passwd1'];
        }
        if (empty($_POST['passwd2'])) {
            $error[] = 'Please Verify Your Password ';
        } else {
            $password = $_POST['passwd2'];
        }
        if ($_POST["passwd1"] != $_POST["passwd2"]) {
            $error[] = 'Password does not match';
        }
    
        if (empty($error)) { //send to Database if there's no error ' //If everything's OK...
            // Make sure the mobile no is available:
            $query_verify_mobileno = "SELECT * FROM userdtls WHERE mobileno = '$mobile'";
            $result_verify_mobileno = mysqli_query($dbc, $query_verify_mobileno);
            if (!$result_verify_mobileno) {//if the Query Failed ,similar to if($result_verify_mobileno==false)
                echo ' Database Error Occured ';
            }
    
            if (mysqli_num_rows($result_verify_mobileno) == 0) { // IF no previous user is using this number .
                // Create a unique  activation code:
                //$activation = md5(uniqid(rand(), true));
                $query_insert_user = "INSERT INTO userdtls ( mobileno, serviceprovider, pass,  fname, lname, email, citystate, MUM, PUN, BNG, MYS ) VALUES ( '" . $mobile . "', '" . $serviceprovider . "', '" . $password . "', '" . $fname . "', '" . $lname . "', '" . $email . "', '" . $citystate . "','" . $mumbai . "', '" . $pune . "', '" . $banglore . "', '" . $mysore . "'  )";
            }
        }
    }
    

    Now I get stuck in mobile number validation. I tried using regular expressions.

    What I want to do is add a 10 digit phone number and make sure it is only digits or else give error and while entering the number to database I want to add a prefix to the mobile number of 0 so it should be like 0and10digitnumber