Autor Zpráva
matesek
Profil
Měl bych dotaz , jak se pomocí PHP , nebo možná JS dá omezit a podmíňovat psaní textu do Input . Potřeboval bych třeba podmínku pro kolonku E-mail , že tam někde musí být @ a .cz nebo .sk Taky bych ještě potřeboval , aby u některých inputů šly zadat pouze číísla 0-9 . Mohl by tady někdo dát nějaký kód ? Nejspíš to nebudu moc jednoduché , ale nevím .
synnasek
Profil
Tohle je pro ten e-mail:

<?
  function JeEmail ($cislo)
  {
    return ereg("^.+@.+\..+$",$cislo);
  }

  if (empty ($_POST))
  {
?> 


zdroj: linuxsoft
Joker
Profil
synnasek:
Funkce ereg je zastaralá a v PHP 6 bude odstraněna, její použití se nedoporučuje. Místo toho se doporučuje používat preg_match.
Ten článek z Linuxsoftu je přece jen z roku 2004, za tu dobu se pár věcí změnilo.

Krom toho ten uvedený regulární výraz mi připadá až příliš jednoduchý- například text matesekova příspěvku je podle té funkce platná e-mailová adresa.
Taky mi nepřijde zrovna vhodné vstupní parametr (tj. asi e-mailovou adresu) pojmenovat $cislo.

Jinak sice ne úplně přesný, ale zase vcelku jednoduchý regulární výraz na e-mailovou adresu je tady: http://www.regularnivyrazy.info/email.html
AM_
Profil
Ověřování dat ze vstupu má dvojí důvod:
1. neplatná data způsobí chybu v programu (nebo dokonce umožní útok, např. SQL injection)
2. nevznikne chyba v programu, ale je zřejmé, že uživatel zadal něco jiného, než chtěl/se očekávalo: měli bychom ho upozornit
V prvním případě je nutné ověření na straně PHP (JavaScript lze obejít)
Ve druhém případě je nutné ověření na straně JS (rychlejší, není nutný reload stránky)
Ve většině případů je ideální obojí.

Pro validaci JavaScriptem používám tigra form validator - pěkný a hlavně free script. Pravidla pro formulář se definují pomocí pole, takže ve složitějším projektu stojí za to si napsat PHP skript, který bude umět validovat data z pole ve stejném formátu a tím se vyhneš dvojímu psaní ochrany. Ovšem pro validaci e-mailu by mohla stačit jen validace JavaScriptem, přecejen neplatný e-mail v systému nezpůsobí nic horšího, než neexistující e-mail byť v platném formátu.
Chamurappi
Profil
Reaguji na Jokera:
Jinak sice ne úplně přesný
Ono je sporné, jak by měl přesný regulární výraz vypadat. Hlavním účelem této kontroly by asi mělo být, aby uživatel nezadal nějaký nesmysl omylem. Nemusí se do puntíku dodržovat RFC, ale zase by neměl zbytečně omezovat, jako ten odkázaný — TLD může mít víc jak 4 znaky, v doménách může být diakritika…
Joker
Profil
Chamurappi:
Ono je sporné, jak by měl přesný regulární výraz vypadat.
Ano, dalo by se o tom diskutovat.
AM_
Profil
jest to tak, ale možná aspoň mezery by mohl eliminovat, pak je dobře možné přesně jak Joker říkal, že tam někdo nacopypastuje delší text, který náhodou obsahuje zavináč :) naopak čistě teoreticky nemusí být nutně pravda, že část za @ obsahuje tečku.
matesek
Profil
[#2] synnasek

Děkuji , narychlo jsem četl další komentáře a myslím si , že když tam dám tohle , tak to teda bude fungovat správně . Tohle je pouze na mejl , ale rád bych ještě za nějaký kód pro čísla , nebo jen text .
Nevím jestli to tak může být , tak se zeptám .

<?
  function JeEmail ($cislo)
  {
    return ereg("a-zA-Z0-9",$cislo);
  }

  if (empty ($_POST))
  {
?> 

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: