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 )
Ja bym po prostu sprawdził długość za pomocą strlen
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])
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'])
oj przepraszam radex, od 9 miesięcy nie miałem styczności z PHP i HTML
Zrobiłem taki cos i działa ale teraz chce dodać by sprawdzać czy ciąg składa się tylko z cyfr
<?php $nr =43133345600; if (http://www.php.net/strlen($nr)>9) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>"; } http://www.php.net/echo "$error"; ?>
http://pl.php.net/is_int
Zrobiłem tak i teraz wyskakuje błąd
<?php $nr =43133345600aa; if (http://www.php.net/is_int(http://www.php.net/strlen($nr))>9) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>"; } http://www.php.net/echo "$error"; ?>
<?php if (http://www.php.net/is_int(http://www.php.net/strlen($nr))>9) { ?>
<?php if(http://www.php.net/strlen($nr)==9 && http://www.php.net/is_int($nr)) http://www.php.net/echo "ok"; else http://www.php.net/echo "blad"; ?>
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
<?php // Sprawdzam poprawność nr telefonu if(http://www.php.net/strlen($nr)==9 && http://www.php.net/is_int($nr)) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>"; } //Sprawdzam poprawność email if ($email == "" || !http://www.php.net/preg_match("/^[-0-9A-Z_.]{1,50}@([-0-9A-Z_.]+.){1,50}([0-9A-Z]){2,4}$/i", $email)) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój adres e-mail</span><br>"; } //Jeśli nr telefonu jest dobry i emial dodaje to do bazy if (!$error) { if($tekst and $email and $przebieg) { dbquery("INSERT INTO ".$db_prefix."intencja SET tekst='$tekst', email='$email', typ='$typ', user_id='".$userdata['user_id']."', modlitwa_datestamp='".http://www.php.net/time()."'"); } http://www.php.net/echo "<center><strong>Twoja Wiadomość została wysłana!</strong></center>"; //Jeśli nr telefonu się nie zgadza lub emial wyświetlam komunikat } else { http://www.php.net/echo "<center><br><b>Twoja Wiadomość nie została wysłana z następujących powodów:!<b><br> <br>$error<br>Spróbuj ponownie.</center><br>"; } ?>
<?php if(http://www.php.net/strlen($nr)==9 && http://www.php.net/is_int($nr)) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>"; } ?>
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ł.
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ę ?
przecież w if'ie masz źle wpisane, a skrypt działa dobrze, powinno być tak:
<?php if(http://www.php.net/strlen($nr)==9 && http://www.php.net/is_int($nr)) { $error .= "<span style=\"color: #00ff00; text-align: center;\">To jest prawidłowy numer</span><br>"; } else { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać nr telefonu</span><br>"; } ?>
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
w takim razie wystarczy krzyknąć na skrypt i działa poprawnie
<?php if(http://www.php.net/strlen($nr)!==9 || !http://www.php.net/is_int($nr)) { http://www.php.net/echo '<span style="color: #ff0000; text-align: center;">To nie jest prawidłowy numer</span><br>'; } else { http://www.php.net/echo '<span style="color: #00ff00; text-align: center;">numer jest 9 cyfrowy</span><br>'; } ?>
Ja odwołując się do postu mike'a -> numer telefonu można sprawdzić tak:
<?php $nr = http://www.php.net/str_replace(' ', '', $nr); // w nawiasach chyba nikt juz nie bedzie pisal numeru wiec pomine to... // jeśli domowy to musi być z kierunkowym if(http://www.php.net/ereg('^+?[0-9]{9,11}$', $nr)) { // numer poprawny } else { // numer niepoprawny } ?>
No teraz wywala mi błąd jak zrobię tak
<?php $nr =431333456aa; if(http://www.php.net/strlen($nr)!==9 || !http://www.php.net/is_int($nr)) { $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>"; } http://www.php.net/echo "$error"; ?>
<?php $nr =431333456aa; $nr = http://www.php.net/str_replace(' ', '', $nr); if(http://www.php.net/ereg('^+?[0-9]{9,11}$', $nr)){ $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>"; } http://www.php.net/echo "$error"; ?>
<?php //Sprawdzam adres emial czy jest poprawny if ($email == "" || !http://www.php.net/preg_match("/^[-0-9A-Z_.]{1,50}@([-0-9A-Z_.]+.){1,50}([0-9A-Z]){2,4}$/i", $email)) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój adres e-mail</span><br>"; } //Sprawdzam nr telefonu czy jest poprawny $nr = http://www.php.net/str_replace(' ', '', $nr); if(http://www.php.net/ereg('^+?[0-9]{9,11}$', $nr)){ $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>"; } //Jeśli żadne z warunków nie zwrócił prawdy czyli ze zły nr to dodaje dane do bazy if (!$error) { if($tekst and $email and $przebieg) { dbquery("INSERT INTO ".$db_prefix."intencja SET tekst='$tekst', email='$email', typ='$typ', user_id='".$userdata['user_id']."', modlitwa_datestamp='".http://www.php.net/time()."'"); } http://www.php.net/echo "<center><strong>Twoja Wiadomość została wysłana!</strong></center>"; } else { //Jeśli nr telefonu jest nie poprawny lub email wyświetlam błąd http://www.php.net/echo "<center><br><b>Twoja Wiadomość nie została wysłana z następujących powodów:!<b><br> <br>$error <br>Spróbuj ponownie.</center><br>"; //Zmienna $error odpowiedzialna za wyświetlenie błędów jeśli nr teflonu i emial są
nie prawne wyświetli dwie informacje } ?>
<?php $nr =431333456aa; $nr = http://www.php.net/str_replace(' ', '', $nr); if(http://www.php.net/ereg(^+?[0-9]{9,11} , $nr)){ $error .= \"<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer \"; } http://www.php.net/echo \"$error\"; ?>
<?php $nr =431333456aa; $nr = http://www.php.net/str_replace(' ', '', $nr); if(!http://www.php.net/ereg('^+?[0-9]{9,11}$', $nr)){ $error .= "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>"; } http://www.php.net/echo "$error"; ?>
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().
Nie moge sie doczekać kiedy sie dowiem co to za błąd
Wywala taki bład
Parse error: syntax error, unexpected T_STRING in /home/accounts_a/aide/public_html/tel.php on line 8
<?php $nr ='431333456aa'; $nr = http://www.php.net/str_replace(' ', '', $nr); if(!http://www.php.net/ereg('^+?[0-9]{9,11}$', $nr)){ $error = "<span style=\"color: #00ff00; text-align: center;\">To nie jest prawidłowy numer</span><br>"; } http://www.php.net/echo "$error"; ?>
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
<?php require_once "maincore.php"; require_once "subheader.php"; require_once "side_left.php"; if (iMEMBER) { if (http://www.php.net/isset($_POST['submit'])) { $email = http://www.php.net/strtolower(http://www.php.net/trim($_POST['email'])); $email = http://www.php.net/strtolower(http://www.php.net/trim($_POST['nr'])); if ($email == "" || !http://www.php.net/preg_match("/^[-0-9A-Z_.]{1,50}@([-0-9A-Z_.]+.){1,50}([0-9A-Z]){2,4}$/i", $email)) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój adres e-mail</span><br>"; } $nr = http://www.php.net/str_replace(' ', '', $nr); if(!http://www.php.net/ereg('^+?[0-9]{9,11}$', $nr)){ $error .= "<span style=\"color: #00ff00; text-align: center;\">Musisz wpisac nr telefonu</span><br>"; } if (!$error) { if($tekst and $email and $przebieg) { dbquery("INSERT INTO ".$db_prefix."intencja SET tekst='$tekst', email='$email', typ='$typ', user_id='".$userdata['user_id']."', modlitwa_datestamp='".http://www.php.net/time()."'"); } opentable('Dodaj ogłoszenie'); http://www.php.net/echo "<center><strong>Twoja Wiadomość została wysłana!</strong></center>"; closetable(); } else { opentable('Dodaj ogłoszenie'); http://www.php.net/echo "<center><br><b>Twoja Wiadomość nie została wysłana z następujących powodów:!<b><br> <br>$error<br>Spróbuj ponownie.</center><br>"; closetable(); } } else { opentable('Dodaj ogłoszenie'); http://www.php.net/echo " <table align='center' cellpadding='0' cellspacing='1' class='tbl-border' width='100%'><form method=post> <tr> <td align='right' width='1%' class='tbl2' style='white-space:nowrap'>Twój adres email:</td> <td class='tbl1'><input type='text' name='email' style='width: 150px' class='textbox' maxlength='32'></td> </tr> <tr> <td align='right' width='1%' class='tbl2' style='white-space:nowrap'>Telefon:</td> <td class='tbl1'><input type='text' name='rok' style='width: 150px' class='textbox' maxlength='32'></td> </tr> <tr> <td align='right' class='tbl2' valign='top'></td>\n<td class='tbl1'> <input type='submit' name='submit' value='Wyślij' class='textbox'> <input type='reset' value='Wyszyść' class='textbox'> </td> </tr>"; http://www.php.net/echo "</table></form>"; closetable(); } } else { opentable('Zarejestruj się'); http://www.php.net/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>"; closetable(); } require_once "side_right.php"; require_once "footer.php"; ?>
<?php if ($tel == "" || !http://www.php.net/preg_match("/^[0-9]{9,11}$/i", $tel)) { $error .= "<span style=\"color: #FF0000; text-align: center;\">Musisz podać swój telefon</span><br>"; } ?>
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 http://phpsec.org/projects/guide/1.html#1.2.
Skrypt ma za zadanie sprawdzić, czy zmienna jest liczbą całkowitą
<?php $clean = http://www.php.net/array(); if ($_POST['num'] == http://www.php.net/strval(http://www.php.net/intval($_POST['num']))) { $clean['num'] = $_POST['num']; } ?>
<?php $nr = '12345a783'; if ($nr !== http://www.php.net/strval(http://www.php.net/intval($nr)) OR http://www.php.net/strlen($nr) !== 9) { $error = 'popraw numer'; } else { $error = 'dobry numer'; } http://www.php.net/echo $error; ?>
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)