Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie nr telefonu poprawienie (poprawnie kodu)
Forum PHP.pl > Forum > Przedszkole
szczabik
Mam taki kod i nie chce działać wie ktoś czemu chce by użytkownik mógł wpisać w formularzu tylko 9 liczb ( nr komórki )

  1. <?php
  2. if ($nr == "" || !preg_match('/^[1-9][0-9]{,9}$/', $nr)) {
  3. $error .= "<span style="color: #FF0000; text-align: center;">Musisz podać nr telefonu</span><br>";
  4. }
  5. ?>
.radex
Ja bym po prostu sprawdził długość za pomocą strlen
nitro18
a oprócz tego nie możesz ustawić w polu tam gdzie ma user wpisać nr komórycoś typu: <input type="text" maxlength=9 name="nr_komory">

a w PHP sprawdź za pomocą strlen -> strlen($_POST[nr_komory])
.radex
nitro18 - jak podpowiadasz, to z głową

nie

<input type="text" maxlength=9 name="nr_komory">

tylko

<input type="text" maxlength="9" name="nr_komory">

nie

strlen($_POST[nr_komory])

tylko

strlen($_POST['nr_komory'])
nitro18
oj przepraszam radex, od 9 miesięcy nie miałem styczności z PHP i HTML sad.gif
szczabik
Zrobiłem taki cos i działa ale teraz chce dodać by sprawdzać czy ciąg składa się tylko z cyfr

  1. <?php
  2. $nr =43133345600;
  3.  
  4. if (strlen($nr)>9) {
  5. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>";
  6. }
  7.  
  8. echo "$error";
  9. ?>
nithajasz
is_int()
szczabik
Zrobiłem tak i teraz wyskakuje błąd
  1. <?php
  2. $nr =43133345600aa;
  3.  
  4. if (is_int(strlen($nr))>9) {
  5. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>";
  6. }
  7.  
  8. echo "$error";
  9. ?>


Gdy zamiast is_int dam is_numeric też jest błąd
nithajasz
  1. <?php
  2. if (is_int(strlen($nr))>9) {
  3. ?>


Bo to zwraca TRUE or FALSE a nie długość ciągu smile.gif

daj to tak :

  1. <?php
  2. if(strlen($nr)==&& is_int($nr)) echo "ok"; else echo "blad";
  3. ?>
szczabik
I dalej jest błąd
chodzi to ze gdy użytkownik wpisze takie cos jako nr 13adaD839 to warunek zwróci mi prawdę że nr jest zły bo musi składać się z samych 9 cyfr np. 123873894 i jak warunek zwróci prawdę że nr jest zły to potem
Wyświetlam komunikat o błędzie ze nr jest zły
I mam taki kod cały
  1. <?php
  2. // Sprawdzam poprawność nr telefonu
  3.  
  4. if(strlen($nr)==&& is_int($nr)) {
  5. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>";
  6. }
  7.  
  8. //Sprawdzam poprawność email
  9. if ($email == "" || !preg_match("/^[-0-9A-Z_.]{1,50}@([-0-9A-Z_.]+.){1,50}([0-9A-Z]){2,4}$/i", $email)) {
  10. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój adres e-mail</span><br>";
  11. }
  12.  
  13. //Jeśli nr telefonu jest dobry i emial dodaje to do bazy
  14. if (!$error) {
  15.  
  16. if($tekst and $email and $przebieg) {
  17.  
  18. dbquery("INSERT INTO ".$db_prefix."intencja SET tekst='$tekst', email='$email', typ='$typ', user_id='".$userdata['user_id']."', modlitwa_datestamp='".time()."'");
  19.  
  20. }
  21.  
  22. echo "<center><strong>Twoja Wiadomość została wysłana!</strong></center>";
  23.  
  24. //Jeśli nr telefonu się nie zgadza lub emial wyświetlam komunikat 
  25. } else {
  26.  
  27. echo "<center><br><b>Twoja Wiadomość nie została wysłana z następujących powodów:!<b><br>
  28. <br>$error<br>Spróbuj ponownie.</center><br>"; 
  29.  
  30. }
  31. ?>

I dalej nie działa mi ten kod na sprawdzanie nr telefonu
  1. <?php
  2. if(strlen($nr)==&& is_int($nr)) {
  3. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>";
  4. }
  5. ?>
mike
Moim zdaniem powinieneś filtrować tylko pozwalając na cyfry i znaki (, ), + i spację.
Możliwości wpisania numeru masz sporo a pomysłów użytkowników jeszcze więcej.

523489659
523 489 659
523 48 96 59
+48523489659
+48 523 489 659
+48 523 48 96 59

523489659
(52)3489659
(052)3489659
52 3489659
+48 52 3489659
052 3489659
(52) 3489659
(052) 3489659
+48 (052) 3489659

Który numer jest zły? Pisać wyrażenia na wszystkie możliwości? Zły pomysł.
szczabik
A jaka funkcaj odpowiada za sprawdzenie czy w ciągu występuje jakaś litera ?


Np. mam takie cos 43432a9 to funkcja to jaka funkcja zwróci mi prawdę ?

hiszpanespaniol
przecież w if'ie masz źle wpisane, a skrypt działa dobrze, powinno być tak:

  1. <?php
  2. if(strlen($nr)==&& is_int($nr)) {
  3. $error .= "<span style=\"color: #00ff00; text-align: center;\">To jest prawidłowy numer</span><br>";
  4. }
  5. else
  6. {
  7. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>";
  8. }
  9. ?>
szczabik
Tak tylko musi mi zwracać prawdę gdy nr jest nie dobry a fasle gdy dobry

Czyli jak mam 3218a99321 to zwraca mi prawdę a jak mam 777321987 to false
hiszpanespaniol
w takim razie wystarczy krzyknąć na skrypt i działa poprawnie smile.gif

  1. <?php
  2. if(strlen($nr)!==|| !is_int($nr)) {
  3. echo '<span style="color: #ff0000; text-align: center;">To nie jest prawidłowy numer</span><br>';
  4. }
  5. else
  6. {
  7. echo '<span style="color: #00ff00; text-align: center;">numer jest 9 cyfrowy</span><br>';
  8. }
  9. ?>


edit:
wybacz, dałem echo, zamiast error, bo testowałem u siebie. no i zamiast && jest ||, ale to logiczne
pyro
Ja odwołując się do postu mike'a -> numer telefonu można sprawdzić tak:

  1. <?php
  2.  
  3. $nr = str_replace(' ', '', $nr);
  4. // w nawiasach chyba nikt juz nie bedzie pisal numeru wiec pomine to...
  5. // jeśli domowy to musi być z kierunkowym
  6. if(ereg('^+?[0-9]{9,11}$', $nr))
  7. {
  8. // numer poprawny
  9. }
  10. else
  11. {
  12. // numer niepoprawny
  13. }
  14.  
  15. ?>
szczabik
No teraz wywala mi błąd jak zrobię tak
  1. <?php
  2. $nr =431333456aa;
  3.  
  4. if(strlen($nr)!==|| !is_int($nr)) {
  5. $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>";
  6. }
  7.  
  8. echo "$error";
  9. ?>




I dalej jest błąd po za tym jeśli to ma działać z moim formularzem to musi mi if zwracać prawdę gdy nr jest nie poprawy bo inaczej nie wyświetli mi komunikatu

Zrobiłem tak nie działa
  1. <?php
  2. $nr =431333456aa;
  3.  
  4. $nr = str_replace(' ', '', $nr);
  5. if(ereg('^+?[0-9]{9,11}$', $nr)){
  6. $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>";
  7. }
  8.  
  9. echo "$error";
  10. ?>

A to kod z moim formularzem
  1. <?php
  2. //Sprawdzam adres emial czy jest poprawny
  3. if ($email == "" || !preg_match("/^[-0-9A-Z_.]{1,50}@([-0-9A-Z_.]+.){1,50}([0-9A-Z]){2,4}$/i", $email)) {
  4. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój adres e-mail</span><br>";
  5. }
  6. //Sprawdzam nr telefonu czy jest poprawny
  7.  
  8. $nr = str_replace(' ', '', $nr);
  9. if(ereg('^+?[0-9]{9,11}$', $nr)){
  10. $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>";
  11. }
  12.  
  13. //Jeśli żadne z warunków nie zwrócił prawdy czyli ze zły nr to dodaje dane do bazy
  14. if (!$error) {
  15.  
  16. if($tekst and $email and $przebieg) {
  17.  
  18. dbquery("INSERT INTO ".$db_prefix."intencja SET tekst='$tekst', email='$email', typ='$typ', user_id='".$userdata['user_id']."', modlitwa_datestamp='".time()."'");
  19.  
  20. }
  21.  
  22. echo "<center><strong>Twoja Wiadomość została wysłana!</strong></center>";
  23.  
  24. } else {
  25.  
  26. //Jeśli nr telefonu jest nie poprawny lub email wyświetlam błąd
  27.  
  28. echo "<center><br><b>Twoja Wiadomość nie została wysłana z następujących powodów:!<b><br>
  29. <br>$error <br>Spróbuj ponownie.</center><br>"; 
  30. //Zmienna $error odpowiedzialna za wyświetlenie błędów jeśli nr teflonu i emial są
     nie prawne wyświetli dwie informacje
  31. }
  32. ?>
pyro
Cytat(szczabik @ 13.06.2008, 18:10:06 ) *
Zrobiłem tak nie działa
  1. <?php
  2. $nr =431333456aa;
  3.  
  4. $nr = str_replace(' ', '', $nr);
  5. if(ereg(^+?[0-9]{9,11} , $nr)){
  6. $error .= &#092;"<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer
  7. &#092;";
  8. }
  9.  
  10. echo &#092;"$error\";
  11. ?>

[b][b]


Nie przeczytałeś tego co dałem w komentarzach... Z tego co wnioskuje (co próbowałeś zrobić) to powinno wyglądać tak:

  1. <?php
  2. $nr =431333456aa;
  3.  
  4. $nr = str_replace(' ', '', $nr);
  5. if(!ereg('^+?[0-9]{9,11}$', $nr)){
  6. $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>";
  7. }
  8.  
  9. echo "$error";
  10. ?>


Zobacz cyz teraz działa
szczabik
Cytat
Zobacz cyz teraz działa



Wywala błąd
Athlan
is_int dla stringa nigdy nie zwróci Wam true, int to typ danych. do takiego czegoś wykorzystujemy is_numeric(). Do is_numeric() wsadzamy stringa a nie wartość z strlen().
pyro
Nie moge sie doczekać kiedy sie dowiem co to za błąd tongue.gif
szczabik
Wywala taki bład
Parse error: syntax error, unexpected T_STRING in /home/accounts_a/aide/public_html/tel.php on line 8
pyro
  1. <?php
  2. $nr ='431333456aa';
  3.  
  4. $nr = str_replace(' ', '', $nr);
  5. if(!ereg('^+?[0-9]{9,11}$', $nr)){
  6. $error = "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>";
  7. }
  8.  
  9. echo "$error";
  10. ?>


szczabik, spróbuj tak jak dałem wyżej, nie objales numeru telefonu w cudzyslowa, a jest to string, poza tym nie wiem dlaczego dałeś .= zamiast =, nie wiem czy coś doczepiasz do błędu ale w tym kawałku kodu tego nie widze więc usunąłem kropkę, teraz zobacz czy działa.
szczabik
Nie działa ta kropka tam musi być po za tym daje cały kod i link gdzie można przetestować mój formularz ale daje nie działa sprawdzanie nr telefonu
  1. <?php
  2. require_once "maincore.php";
  3. require_once "subheader.php";
  4. require_once "side_left.php";
  5. if (iMEMBER) {
  6.  
  7. if (isset($_POST['submit'])) {
  8.  
  9. $email = strtolower(trim($_POST['email']));
  10. $email = strtolower(trim($_POST['nr']));
  11.  
  12. if ($email == "" || !preg_match("/^[-0-9A-Z_.]{1,50}@([-0-9A-Z_.]+.){1,50}([0-9A-Z]){2,4}$/i", $email)) {
  13. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój adres e-mail</span><br>";
  14. }
  15.  
  16.  
  17. $nr = str_replace(' ', '', $nr);
  18. if(!ereg('^+?[0-9]{9,11}$', $nr)){
  19. $error .= "<span style=\"color: #00ff00; text-align: center;\">Musisz wpisac nr telefonu</span><br>";
  20. }
  21.  
  22.  
  23. if (!$error) {
  24.  
  25. if($tekst and $email and $przebieg) {
  26.  
  27. dbquery("INSERT INTO ".$db_prefix."intencja SET tekst='$tekst', email='$email', typ='$typ', user_id='".$userdata['user_id']."', modlitwa_datestamp='".time()."'");
  28.  
  29. }
  30. opentable('Dodaj ogłoszenie');
  31. echo "<center><strong>Twoja Wiadomość została wysłana!</strong></center>";
  32. closetable();
  33. } else {
  34. opentable('Dodaj ogłoszenie');
  35. echo "<center><br><b>Twoja Wiadomość nie została wysłana z następujących powodów:!<b><br>
  36. <br>$error<br>Spróbuj ponownie.</center><br>";
  37. closetable();
  38. }
  39. } else {
  40. opentable('Dodaj ogłoszenie');
  41. echo 
  42. <table align='center' cellpadding='0' cellspacing='1' class='tbl-border' width='100%'><form method=post> 
  43.  
  44. <tr> 
  45. <td align='right' width='1%' class='tbl2' style='white-space:nowrap'>Twój adres email:</td> 
  46. <td class='tbl1'><input type='text' name='email' style='width: 150px' class='textbox' maxlength='32'></td> 
  47. </tr>
  48.  
  49. <tr> 
  50. <td align='right' width='1%' class='tbl2' style='white-space:nowrap'>Telefon:</td> 
  51. <td class='tbl1'><input type='text' name='rok' style='width: 150px' class='textbox' maxlength='32'></td> 
  52. </tr>
  53.  
  54. <tr>
  55. <td align='right' class='tbl2' valign='top'></td>\n<td class='tbl1'>
  56. <input type='submit' name='submit' value='Wyślij' class='textbox'>
  57. <input type='reset' value='Wyszyść' class='textbox'>
  58. </td>
  59. </tr>"; 
  60.  
  61. echo "</table></form>";
  62.  
  63. closetable();
  64.  
  65. }
  66. } else {
  67.  
  68. opentable('Zarejestruj się');
  69. echo "<center><b>Dodawanie ogłoszeń możliwe jedynie dla zarejestrowanych użytkowników</b> <a href='".BASEDIR."register.php'>Link do rejestracji</a></center>";
  70. closetable();
  71. }
  72.  
  73. require_once "side_right.php";
  74. require_once "footer.php";
  75. ?>


link http://www.gc.boo.pl/dodaj.php



Dziękuje wszystkim którzy starami mi się pomóc i naprowadzić mnie jak to zrobić zrobiłem tak i działa

  1. <?php
  2. if ($tel == "" || !preg_match("/^[0-9]{9,11}$/i", $tel)) {
  3. $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój telefon</span><br>";
  4. }
  5. ?>
hiszpanespaniol
wiem, że problem jest rozwiązany, ale znalazłem coś, co może pomóc Tobie albo innym.
ten sposób jest na pewno bezpieczny, bo znaleziony na stronie PHP Security Consortium.
Skrypt ma za zadanie sprawdzić, czy zmienna jest liczbą całkowitą
  1. <?php
  2. $clean = array();
  3.  
  4. if ($_POST['num'] == strval(intval($_POST['num'])))
  5. {
  6. $clean['num'] = $_POST['num'];
  7. }
  8. ?>

można go przystosować do Twojego problemu (a właściwie zmienić znacznie) i też działa (chyba)prawidłowo:

  1. <?php
  2. $nr = '12345a783';
  3. if ($nr !== strval(intval($nr)) OR strlen($nr) !== 9)
  4. {
  5. $error = 'popraw numer';
  6. }
  7. else
  8. {
  9. $error = 'dobry numer';
  10. }
  11. echo $error;
  12. ?>


pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.