Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zastrzeganie znakow w formularzu
Forum PHP.pl > Forum > PHP
andy84
sluchajcie przejzalem 8 stron z formu search mi nei jedzie bo nie do konca mam polskie znaki ;/ potrzebuje zeby formularz mial zastrzezenia typu ze to pole ma byc wypelnione i tu maja byc tylko np cyfry ktore bym podal dostepne od np 1-5 zdrowo dzieki smile.gif
Ociu
if" title="Zobacz w manualu php" target="_manual + preg_match" title="Zobacz w manualu php" target="_manual. Z tego co pamiętam będzie coś takiego:
  1. <?php
  2. if(preg_match('[1-5]', $_POST['input']))
  3. ?>
andy84
Cytat(Ociu @ 2005-11-19 15:18:02)
+ <a href="http://pl.php.net/preg_match">preg_match. Z tego co pamiętam będzie coś takiego:
  1. <?php
  2. if(preg_match('[1-5]', $_POST['input']))
  3. ?>

ok moze inaczej to okresle smile.gif to sie przyda zapewne ale :

jest formularz
imie
nazwisko
tel
email
mam to wszyskto juz przygotowane wysylam sobie to do bazy i odczytuje z admina storny ale to nie jest najwazneijsze

jezeli ktos wprowadzi napszyklad w pole imie > janek3 - zeby mu to np wywalilo blad ze imie moze zawierac tylko litery a w nr telefonu zeby nie mogl wpisywac 0-888 twoja info linai tylko zeby to musialy byc nr ewentualnie zamiast wyskakujacego bledu windowsa mogl by byc jakis print pod danym polem sad.gif
legorek
  1. <?php
  2. if(!preg_match('/[a-zążźćęśńłó]/i', $_POST['input'])) {
  3. echo 'możesz podawac tylko litery';
  4. }
  5. ?>
ghostrider
tak można po stronie przegladarki:

  1. <script language="javascript" type="text/javascript">
  2.  
  3. function mask(e){
  4. var my_mask = this.masking;
  5. var mychar = String.fromCharCode(e.which);
  6. if ( !my_mask.test(mychar) ){
  7. alert(this.alertmsg);
  8. return false;
  9. }
  10. }
  11. <input type="text" id="box" value="" name="x" />
  12. <input type="text" id="boxnum" value="" name="x2" />
  13. <script language="javascript" type="text/javascript">
  14. var mybox = document.getElementById("box");
  15. mybox.masking = /[a-z]/;
  16. mybox.alertmsg = "tylko znaki a-z(małe litery)";
  17. mybox.onkeypress = mask;
  18. var mybox2 = document.getElementById("boxnum");
  19. mybox2.masking = /[0-9]/;
  20. mybox2.alertmsg = "tylko cyfry";
  21. mybox2.onkeypress = mask;
andy84
Cytat(legorek @ 2005-11-19 15:38:41)
  1. <?php
  2. if(!preg_match('/[a-zążźćęśńłó]/i', $_POST['input'])) {
  3. echo 'możesz podawac tylko litery';
  4. }
  5. ?>

no to dziala to o co chodzilo prawie dlaczego tylko nadal mimo np wpisania samych cyft i wyskoczenu bledu dodaje sie to do bazy questionmark.gifquestionmark.gif
  1. <?php
  2.  
  3. if(!preg_match('/[a-zążźćęśńłó]/i', $_POST['input'])) {
  4. echo 'możesz podawac tylko litery';
  5. }
  6. ?>
legorek
Bo liczyłem na trochę Twojej inwencji.

  1. <?php
  2. if(!preg_match('/[a-zążźćęśńłó]/i', $_POST['input'])) {
  3. die('możesz podawac tylko litery');
  4. }
  5. ?>
andy84
Cytat(legorek @ 2005-11-19 15:53:08)
Bo liczyłem na trochę Twojej inwencji.

  1. <?php
  2. if(!preg_match('/[a-zążźćęśńłó]/i', $_POST['input'])) {
  3. die('możesz podawac tylko litery');
  4. }
  5. ?>

ok ostatnia sprawa
probowalem to jw przerobic na maila zeby tez prawidlowe wpisy rozpoznawal ale nawet nie patrzcie
  1. <?php
  2.  
  3. }
  4. if(!preg_match('/[a-z,0-9]@[a-z,0-9].[a-z]/i', $_POST['email'])) {
  5. echo 'podaj prawidlowy email';
  6. }
  7. ?>

dobra slyszalem wasz smiehc az tutaj ma ktos jakis pomysl jak to bez pear'a przerobic

mam do pear cos takiego
  1. <?php
  2.  
  3. $out = Mail_RFC822:parseAddressList($value);
  4.  
  5. if(PEAR::isError($out))
  6.  
  7. {
  8.  
  9. return $out;
  10.  
  11. }
  12.  
  13. else return true;
  14. ?>


ale chchial bym to pominac smile.gif ( da sie questionmark.gifquestionmark.gif?)
ghostrider
ja takiej func. uzywam:

  1. <?php
  2.  
  3. function is_email($email){
  4.  return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]]).)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg
    |bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|c
    om|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|
    fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr
    |ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky
    |kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|m
    s|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|
    org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|s
    g|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|t
    t|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]).){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
    ,$email));
  5. }
  6.  
  7. ?>
andy84
no blad wyskakuje przy tym zeczywiscie jak wpisze maila nie tak jak trzeba smile.gif dzieki ghost ale jest jeszcze taki problem jak pisze prawidlowe maile tez blad wyskakuje smile.gif zebu wpisac maila prawidlowo i nadal nie rozumiem czemu jak jest cus zle itak dodaje sie do bazy qde ;/ grrr no nic ide walczyc panowie a dla waz sotawiam watek otwarty smile.gif
Ociu
Kod z wiki.php.pl.
Prosty:
  1. <?php
  2. function ValidEmail($str)
  3. {
  4. if(strstr($str,'@'))
  5. {
  6. return true;
  7. }
  8. return false;
  9. }
  10. ?>


zaawansowany:
  1. <?php
  2. /**
  3.  * Funkcja sprawdza poprawność adresu e-mail na podstawie wyrażeń regularnych
  4.  * i weryfikacji danych z serwera DNS.
  5.  *
  6.  * Funkcja nie działa pod systemem Ms Windows!
  7.  *
  8.  * @author Bakus <bakus@php.pl>
  9.  * @param string Adres e-mail do weryfikacji
  10.  * @return mixed (bool) true gdy adres będzie poprawny, lub komunikat błędu
  11.  */
  12. function ValidateEmail($email)
  13. {
  14. $wholeexp = '/^(.+?)@(([a-z0-9.-]+?).[a-z]{2,5})$/i';
  15. $userexp = "/^[a-z0-9-_+,.]+$/i";
  16. if (preg_match($wholeexp, $email, $regs)) // EMail jest poprawny składniowo?
  17. {
  18. $username = $regs[1];
  19. $host = $regs[2];
  20. if (!checkdnsrr($host, "MX")) // Czy serwer obsługuje pocztę?
  21. {
  22. return "Podany adres jest nieprawidłowy. Przyczyna błędu: Podany serwer nie obsługu
    je poczty."
    ;
  23. }else{
  24. if (!preg_match($userexp, $username)) // Login jest poprawy?
  25. {
  26. return "Podany adres jest nieprawidłowy. Przyczyna błędu: Login zawiera niedozwolon
    e znaki."
    ;
  27. }else{
  28. return true;
  29. }
  30. }
  31. }else{
  32. return "Podany adres nadawcy jest nieprawidłowy.";
  33. }
  34. }
  35. ?>


Proste użycie:
if(!ValidEmail($_POST['mail'])) die('Nie poprawny adres e-mail');
mysql_query(...);
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.