Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Sprawdzanie nr telefonu poprawienie (poprawnie kodu)
szczabik
post 13.06.2008, 12:41:05
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
.radex
post 13.06.2008, 12:45:01
Post #2





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


Ja bym po prostu sprawdził długość za pomocą strlen


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
nitro18
post 13.06.2008, 13:25:59
Post #3





Grupa: Zarejestrowani
Postów: 311
Pomógł: 7
Dołączył: 2.08.2006
Skąd: Bystrzyca Kłodzka/Nysa

Ostrzeżenie: (10%)
X----


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])
Go to the top of the page
+Quote Post
.radex
post 13.06.2008, 13:29:32
Post #4





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


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'])


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
nitro18
post 13.06.2008, 13:51:11
Post #5





Grupa: Zarejestrowani
Postów: 311
Pomógł: 7
Dołączył: 2.08.2006
Skąd: Bystrzyca Kłodzka/Nysa

Ostrzeżenie: (10%)
X----


oj przepraszam radex, od 9 miesięcy nie miałem styczności z PHP i HTML sad.gif
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 13:52:04
Post #6





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
nithajasz
post 13.06.2008, 13:54:31
Post #7





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


is_int()
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 14:24:14
Post #8





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nithajasz
post 13.06.2008, 14:34:20
Post #9





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 14:52:47
Post #10





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
mike
post 13.06.2008, 14:57:47
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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ł.

Ten post edytował mike 13.06.2008, 14:59:06
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 15:10:43
Post #12





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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ę ?

Go to the top of the page
+Quote Post
hiszpanespaniol
post 13.06.2008, 16:02:46
Post #13





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 16:21:54
Post #14





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
hiszpanespaniol
post 13.06.2008, 16:48:45
Post #15





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


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

Ten post edytował hiszpanespaniol 13.06.2008, 16:50:11


--------------------
Go to the top of the page
+Quote Post
pyro
post 13.06.2008, 16:57:58
Post #16





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 17:10:06
Post #17





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
pyro
post 13.06.2008, 17:28:08
Post #18





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował pyro 13.06.2008, 17:29:30


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
szczabik
post 13.06.2008, 17:57:54
Post #19





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

Ostrzeżenie: (0%)
-----


Cytat
Zobacz cyz teraz działa



Wywala błąd

Ten post edytował szczabik 13.06.2008, 18:01:58
Go to the top of the page
+Quote Post
Athlan
post 13.06.2008, 18:02:34
Post #20





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


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().


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.05.2024 - 05:05