Autor Zpráva
Erixx
Profil
Zdravím.
Odesílám email přes tuto kontrolu a do spamové odpovědi bych chtěl zadat všechna možná čísla od 1 - 9 (1,2,3,4,5,6,7,8,9)
if ($predmet!="" and $email!="" and $text!="" and $spam=="1" or $spam=="2" or $spam=="3" ....  or $spam=="9")
Mohu to takhle použít?

Nebo jak mám dát do scriptu všechna čísla od 1 - 9, abych je nemusel do scriptu vypisovat všechna?

Něco jako

if ($predmet!="" and $email!="" and $text!="" and $spam=="1-9")


Nebo třeba akcepovat při výstupu jen sudá čísla?
Jak se toto udělá?

Díky za radu!
Alphard
Profil
!in_array($spam, range(1, 9)) /* nebo */ $spam < 1 || $spam > 9
is_numeric($spam) && $spam%2 == 0
Borius
Profil
Nebo
if (preg_match('/[1-9]/',$spam)) //TRUE při číslech 1 až 9
if (preg_match('/[13579]/',$spam)) //TRUE při lichých číslech, sudá projdou
Erixx
Profil
Alphard, Borius:

Díky kluci, funguje :)
Erixx
Profil
Borius:

Objevil se problém,
kontrola odeslání projde sice v případech, kdyz je vyplněno požadované číslo (bud všechna od 1-9, nebo třeba jen sudá),
odeslání proběhne ale i v případě, že je vyplněna požadovaná číslice (např. 1), ale projde i např 1000 nebo 1 ppp nebo porj1poo, prostě vždy, pokud je vyplněna nejen požadovaná číslice, ale i více znaků spolu s touto číslicí.
Borius
Profil
Erixx:
Máš pravdu, zapoměl jsem, že má být zadrženo pouze jednociferné číslo. Takže správně je to takto:
if (preg_match('/^[1-9]$/',$spam)) //TRUE při číslech 1 až 9
if (preg_match('/^[13579]$/',$spam)) //TRUE při lichých jednociferných číslech, sudá a víceciferná projdou
Předtím jsem v reguláru omylem napsal navíc čárky, ty tam být nemají. Inu, spěchat se nemá ;-)
Erixx
Profil
Borius:
Funguje přesně jak píšeš! :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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