Autor | Zpráva | ||
---|---|---|---|
pan.kolouch Profil * |
#1 · Zasláno: 23. 11. 2005, 22:09:54
Mám problém, který má určitě primitivní řešení, ale ať hledám jak hledám, nemůžu to už únavou najít :-)
Kontroluju vstupní data např. if ($jmeno !== "") { ... } Když uživatel nezadá nic, to co je v závorkách se nevykoná. Problém je, když ovšem uživatel ve formuláři udělá mezerníkem třeba jednu, nebo více mezer a to co je v závorkách proběhne. Pak jsem zkoušel toto if (!empty($jmeno)) { ... } Ale to proběhne stejně jako výše uvedeno. Potřebuju prostě nějak zjistit, že když je na vstupu 0-x mezer, tak se vstup=0. Jmeno se také může skládat z několika slov, takže mezera mezi slovy musí být zachována. Dík za rady |
||
llook Profil |
#2 · Zasláno: 23. 11. 2005, 22:15:44
Nejjednodušší je napsat si regulární výraz, jemuž musí hodnota odpovídat a testovat proti němu. Například:
$jmenoRegex = '/[a-zA-Z0-9]/';Tímto projde jméno, které obsahuje alespoň jeden znak anglické abecedy nebo číslici. |
||
pan.kolouch Profil * |
#3 · Zasláno: 24. 11. 2005, 07:51:29
A jak to funguje pro českou abecedu ?
$jmenoRegex = '/[a-zA-Z0-9ěščřžýáíéúůĚŠČŘŽÝÁÍÉÚŮ ]/'; Takto ? |
||
Leo Profil |
#4 · Zasláno: 24. 11. 2005, 08:51:12 · Upravil/a: Leo
Přesně, ale bez te mezery na konci, Leo
|
||
MacInek Profil * |
#5 · Zasláno: 24. 11. 2005, 12:41:05
Ja puzivam funkci trim(), ktera odstrani prazdne znaky na zacatku a na konci retezce.
$jmeno = trim($jmeno); $email = trim($email); |
||
pan.kolouch Profil * |
#6 · Zasláno: 24. 11. 2005, 13:10:59
No a co když budu mít tohle
jméno příjemní tak mezi tím už je přeci mezera a tu v regulárním výrazu už nemám, projde to ? A další věc je, když budu mít hodně dlouhý text a uživatl tam někde napíše nějaký znak, který není ve výrazu, tak ho to prostě nepustí, dá se to nějak odfiltrovat ? Myslím třeba uvozovky, apostrofy, atd.. ? Nějak pomocí eregi ? |
||
MacInek Profil * |
#7 · Zasláno: 24. 11. 2005, 20:49:31
Funkce trim() odstraní libovolný počet prázdných znaků pouze na začátku a na konci řetězce. Takže např text (spojovníky znázorňují mezery) ---Jméno-Příjmení--- vrátí funkce trim() jako Jméno-Příjmení.
|
||
Leo Profil |
#8 · Zasláno: 24. 11. 2005, 21:03:22
Ten regularni vyraz co poslal ilook a co jste vy pak upravil pro cestinu testuje, jestli se v danem textu vyskytne alespon jednou nektery z uvedenych znaku. Pokud ano, a to kdekoliv v textu, pak vyskyt ostatnich znaku NERESI a projde to. Musite si rozmyslet, co PRESNE chcete. Leo
|
||
pan.kolouch Profil * |
#9 · Zasláno: 24. 11. 2005, 22:33:43
Ano napsal jsem to asi trošku chaoticky.
Mám prostě guestbook a zadávám jméno, email, web a text. Příspěvek se odešle do databáze jen tehdy, pokud není prázdné jméno a text. To jsem tedy vyřešil pomocí trim(). Jen poté co pořád pročítám články a zabezpečení vstupních údajů nevím, jestli bych neměl odfiltrovat ze vstupních řetězců i apostrofy a uvozovky, než je uložím do databáze. Takto jsem chtěl asi formulovat dotaz. |
||
Kajman_ Profil * |
#10 · Zasláno: 24. 11. 2005, 23:20:16
nevím, jestli bych neměl odfiltrovat ze vstupních řetězců i apostrofy a uvozovky
Klidně bych je tam nechal, stačí je ošetřit. Mělo by stačit $value=addslashes($value); mysql_query("....cosi... neco='$value'"); Prostě vždy obalit vkládané hodnoty jednoduchými uvozovkami a předtím je escapovat (přidat před ně zpětné lomítko) např. funkcí addslashes. |
||
pan.kolouch Profil * |
#11 · Zasláno: 25. 11. 2005, 08:26:03
Teď budu možná mluvit nesmysly, protože to mám pomíchané, ale když mám zaplé
magic_quotes_gpc = on nebude s tím addslashes problém ? |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0