[Tutorial PHP]Verificare numar telefon mobil

#1
Nume Tutorial:Verificare numar telefon mobil
Descriere:Verificare numar telefon mobil
Download:Nu necesita
Autor:In script
Sursa (Link-ul oficial):
tutorialeonline.net
Propria parere:Util.
Tutorialul:
Mai jos găsiţi 2 variante pentru verificarea numărului de telefon mobil. Prima variantă este scrisă de autorul original al scriptului, iar la a doua variantă mi-am permis să optimizez puţin codul şi să îl modific puţin pentru a fi mai clar de citit. Ambele variante fac acelaşi lucru, le puteţi folosi pe oricare din ele doriţi. Pentru alte informaţii, vă aşteptăm în forum la discuţii.
Cod:

Cod: Selectaţi tot

 <?php
 // Verificare nr telefon mobil
 // Autor: Iancu Dragos

 
 // Setam Array care contine prefixele retelelor de telefonie mobila
 //  din Romania si numele corespunzator acestora
 $array = array('072' => 'Vodafone', '073' => 'Vodafone',
    '074' => 'Orange', '075' => 'Orange',
    '076' => 'Cosmote', '077' => 'Digi Mobil',
    '078' => 'Zapp'
    );
 // Setam variabilele cu errori posibile
 $nr_incomplet ='Numarul de telefon introdus este incomplet. <br />
 Numarul minim de cifre pe care poate sa-l aiba un numar de telefon este 10 <br />';
 $nr_gresit = 'Numar de telefon invalid. <br />';
 $camp_gol ='Campul Numar de telefon este gol! <br />';
 
 // Setam o variabila care va contine formularul de introducere a numarului de telefon
 $form = '
    <div align="center">
    <form method="post" action="'.$_SERVER['PHP_SELF'].'">
    Numar de telefon:
    <input name="numar_telefon" type="text" value="'.$numar_telefon.'" size="20">
    <input type="submit" name="submit" value="Verifica!" size="25"><br>
    </form>
    </div>';
 
 /*
 Cream functia validare_telefon care va verifica daca numarul de telefon
 are minim 10 cifre, daca este de forma
 (07xx)xxxxxx, 07xx-xxx-xxx, 07xx xxxxxx iar daca repecta aceste doua conditii returneaza true
 */
 function validare_telefon($numar_telefon, $nr_incomplet, $nr_gresit, $form) {
    if(strlen($numar_telefon) < 10) {
       echo $nr_incomplet; // Daca numarul de telefon are < 10 cifre afisam erroarea
       echo $form; // Afisam formularul pentru a introduce numarul de telefon dinou
    }
    else {
       if(preg_match('/^(?07d)?[-s]?d[-s]?d$/', $numar_telefon)) {
          return true; // Daca totul este OK returneaza true
       }
       else {
          // Daca numarul de telefon nu este de forma celor de mai sus afisam erroarea
          echo $nr_gresit;
          echo $form; // Afisam formularul pentru a introduce numarul de telefon din nou
       }  
    }
 }
 
 if(!isset($_POST['submit'])) {
    echo $form; // Daca nu a fost apasat butonul Trimite afisam formularul
 }
 else {
    if(empty($_POST['numar_telefon'])) {
       // Daca campul numar telefon este gol afisam erroarea si afisam din nou formularul.
       echo $camp_gol;
       echo $form;
    }
    else {
       if(validare_telefon($numar_telefon, $nr_incomplet, $nr_gresit, $form)) {
          // Functia preg_match ne exporta primele 3 cifre ale numarului de
          //  telefon pentru a vedea din ce retea face parte
          preg_match('/^(?(07d)d)?[-s]?d[-s]?d$/', $numar_telefon, $matches);
          if(isset($array[$matches[1]])) {
             echo 'Numarul de telefon introdus este: <b>'.$numar_telefon.'</b>
                si apartine retelei de telefonie mobile: <b>'.$array[$matches[1]].'</b>';
          }
          else {
             echo 'Numarul de telefon nu face parte lista retelelor de
                telefonie mobila din Romania';
             echo afisare_form(1);
          }      
       }
    }
 }
 ?>
Iar mai jos aveţi varianta modificată:
Cod:

Cod: Selectaţi tot

 <?php
 /*
 * Verificare numar telefon mobil
 * Autor: Iancu Dragos
 * Corectat si modificat de Birkoff
 * @Data: 20-01-2009
 */
 
 
 /*
 * partea de mesaje
 */
 
 // mesajele de eroare care se pun in fisierul de limba
 $lang['NR_INCOMPLET'] = 'Numarul de telefon introdus este incomplet. <br />
 Numarul minim de cifre pe care poate sa-l aiba un numar de telefon este 10 <br />';
 $lang['NR_GRESIT'] = 'Numar de telefon invalid. Trebuie sa fie de forma
 07xxxxxxxx fara spatii sau alte caractere, doar numere.<br />';
 $lang['NR_GOL'] = 'Campul Numar de telefon este gol! <br />';
 $lang['NR_OK'] = 'Nr este corect.<br />';
 $lang['NO_OPERATOR'] = 'Numarul specificat nu apartine nici unei retele
 de telefonie mobila din Romania';
 // se foloseste sprintf pentru inlocuire
 $lang['MSG_OPERATOR'] = 'Numarul specificat apartine operatorului %s';
 
 
 /*
 * partea de setari
 */
 
 // setez operatorii din ro
 $nr_operatori = array(
    '072' => 'Vodafone',
    '073' => 'Vodafone',
    '074' => 'Orange',
    '075' => 'Orange',
    '076' => 'Cosmote',
    '077' => 'Digi Mobil',
    '078' => 'Zapp',
    );
 
 /*
 * functia care returneaza erorile
 *
 * @param string $nr_tel - contine numarul de telefon primit din formular
 *
 * @global array $lang - contine lista de mesaje
 * @global array $nr_operatori - contine lista cu prefixele operatorilor din romania
 *
 * @return array $errors - returneaza un array gol in cazul in care
 *   nu sunt erori sau un array cu mesajele de eroare
 */
 
 function verific_tel($nr_tel) {
    global $lang, $nr_operatori;
    // initializez variabila de erori
    $errors = array();
    // incep verificarile
    if (empty($nr_tel) ) // daca nu a fost introdus nimic
       $errors[] = $lang['NR_GOL'];
    elseif(strlen($nr_tel) < 10) // daca sunt mai putin de 10 caractere
       $errors[] = $lang['NR_INCOMPLET'];
    elseif( ! ctype_digit($nr_tel) ) // daca sa introdus altceva in afara de numere
       $errors[] = $lang['NR_GRESIT'];
    else { // daca e ok pana aici verific daca exista operatorul
       // iau primele 3 numere din stringul introdus in form
       $ver_operator = substr($nr_tel,0,3);
       // daca operatorul nu exista in lista de operatori
       if ( !isset($nr_operatori[$ver_operator]) )
          $errors[] = $lang['NO_OPERATOR']; // setez mesaj de eroare
    }
    // returnez eventualele erori aparute
    return $errors;
 }
 
 // setari pentru afisare
 $mesage = ''; // variabila care contine mesajele ce trebuie afisate in pagina
 // daca e true se afiseaza formul pentru introducerea nr de tel. momentan o setam pe false.
 $show_form = false;
 
 // functia care genereaza formularul
 function generate_form($stare = 0)  {
    $nr_tel = ($stare == 0) ? '' : $_POST['nr_tel'];
 
    $form = '<form name="verificare_tel" action="'.$_SERVER['PHP_SELF'].'" method="post">
       <input name="nr_tel" type="text" value="'.$nr_tel.'" size="20">
       <input type="submit" name="submit" value="Verifica!">
       </form>';
 
    return $form;
 }
 
 
 /*
 * partea de control
 */
 
 $actiune = ( isset($_POST['nr_tel']) ) ? 'read' : 'show';
 
 switch ($actiune) {
    default:
    case 'show': // daca se cere afisare form
       $show_form = true; // setam sa se afiseze formul
       break;
 
    case 'read': // daca se cere citirea datelor din form
       // preluam valorile din form
       $nr_tel = trim($_POST['nr_tel']);
       // verificam de erori apeland la functia de verificare
       $errors = verific_tel($nr_tel);
       // daca sunt erori
       if ( count($errors) ) {
          foreach ($errors as $msg)
             $mesage .= $msg; // setam mesajele in variabila pentru afisare
 
          $show_form = true; // setam sa se afiseze formul
          break;
       }
       // daca e ok
       $mesage .= $lang['NR_OK'];
       // daca vrem sa afisam si din ce retea face parte
       $mesage .= sprintf($lang['MSG_OPERATOR'], $nr_operatori[substr($nr_tel,0,3)]);
       break;
 }
 
 
 /*
 * sectiunea de viewer
 */
 
 if ( !empty($mesage) )
 echo $mesage; // daca sunt mesaje le afisam
 
 if ($show_form) {
    // daca se cere afisare form verificam cum trebuie afisat
    $form = ($actiune == 'read') ? generate_form(1) : generate_form(0);
    // afisam formul
    echo $form;
 }
 ?>
N-am cerut la nimeni niciodata,
Chiar de-a fost sa rabd, in viata mea.
Am dat totul fara nici o plata,
Nevoind nimic sa mi se dea.

@Virgil Carianopol
Vezi-ti de treaba si retine:
"E treaba ta sa spui ce vrei si sa nu conteze pentru nimeni".

@Kazi Ploae

Înapoi la “Tutoriale PHP”

Cine este conectat

Utilizatori răsfoind acest forum: Niciun utilizator înregistrat și 0 vizitatori