Autor Zpráva
ajajaj
Profil
Ahoj, nefunguje mi ternarni operator a nevim proč, nevíte, prosím, někdo čím by to mohlo být? děkuji

$menuli .= "<li><a id=\"#m-{$row["xxx"]}\" href=\"{$row["xxx"]}\" title=\"{$row["yyy"]}\">". htmlspecialchars(stripslashes(($row["aaa"]=1 ? $row["aaa"] : $row["nnn"]))) ."</a></li>";
juriad
Profil
Asi chceš porovnávat a ne přiřazovat:
$row["aaa"]==1

A jako vždy, není to chyba PHP (nefunkční ternární operátor), ale tvá (nefunguje mi ternární operátor, tak jak ho chápu já).
ajajaj
Profil
samozřejmě, proto jsem napsal "mi" jako "můj", o funkčnosti ternárního operátoru jsem nikdy nepochyboval... ;)
sypu si popel na hlavu... a díky


jinak verze pro dislektiky jako jsem já... ;)

htmlspecialchars(stripslashes(empty($row["aaa"])? $row["nnn"] : $row["aaa"]))
Majkl578
Profil
Stripslashes nepoužívej, postrádá to smysl a akorát to nežádoucím způsobem mění obsah, htmlspecialchars je pro ochranu výstupu postačující.

A k verzi pro dislektiky, jde to i jednoduššeji:
$row["aaa"] ?: $row["nnn"]
ajajaj
Profil
[#4] Majkl578 jak to mění obsah? při ukládání do db použiji mysql_real_escape_string() která mi přidá zpětná lomítka před apostrofy, takže mám pak na výstupu třeba women\'s místo women's...


[#2] juriad nechtěl jsem porovnávat, chtěl jsem zjistit, že existuje...
Alphard
Profil
ajajaj [#5]:
Zpětná lomítka se vám přidávají 2x, viz Nejčastější potíže s PHP (FAQ) » Lomítka ve vstupních hodnotách, pak použitejete jen mysql_real_escape_string() a už nebudou lomítka přebývat.
ajajaj
Profil
myslel jsem že mám vypnutý.. ale kontrolou jsem zjistil, že ne... tady je zakopanej pes. Děkuji


ptám se teď zkušenějších, co je lepší, mám je vypnout, nebo nechat zapnutý? jsem zvyklý vše escapovat. prozatím jsem je vypnul. prý se má tato direktiva zrušit, takže to tak bude asi lepší...
Majkl578
Profil
Automatické escapování (tj. magic_quotes) určitě nepoužívat. Data se mají escapovat dle kontextu, nic jako spolehlivé globální ošetření neexistuje, právě kvůli neznalosti kontextu, v jakém budou data použita. To platí jak pro vstupní data (např. do databáze, tam se používá pouze mysql_real_escape_string), tak pro ta výstupní (např. výstup do HTML, kde se používá htmlspecialchars).

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: