Autor Zpráva
pan.kolouch
Profil *
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
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]/';

if (preg_match($jmenoRegex, $jmeno)) {
....
}
Tímto projde jméno, které obsahuje alespoň jeden znak anglické abecedy nebo číslici.
pan.kolouch
Profil *
A jak to funguje pro českou abecedu ?

$jmenoRegex = '/[a-zA-Z0-9ěščřžýáíéúůĚŠČŘŽÝÁÍÉÚŮ ]/';

Takto ?
Leo
Profil
Přesně, ale bez te mezery na konci, Leo
MacInek
Profil *
Ja puzivam funkci trim(), ktera odstrani prazdne znaky na zacatku a na konci retezce.
$jmeno = trim($jmeno);
$email = trim($email);
pan.kolouch
Profil *
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 *
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
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 *
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 *
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 *
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 ?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0