Autor | Zpráva | ||
---|---|---|---|
blah Profil * |
#1 · Zasláno: 25. 3. 2007, 17:56:11
proč se mi funkce htmlspecialchars() vrací například podivné hodnoty?
Například zadám-li htmlspecialchars(ã) vrátí mi to ã místo ã Co to je za bordel? |
||
Joker Profil |
#2 · Zasláno: 25. 3. 2007, 17:59:26
A není to ã čistě náhodou zapsané jeko "&227;"?
|
||
blah Profil * |
#3 · Zasláno: 25. 3. 2007, 18:00:18
nene, tohle je přesně zkopírovaný výstup: ã
|
||
blah Profil * |
#4 · Zasláno: 25. 3. 2007, 18:01:33
jenže aby se zobrazilo korektne zase zpátky ã, tak musí být ten výstup
ã |
||
blah Profil * |
#5 · Zasláno: 25. 3. 2007, 18:02:07
sakra... vždycky se mi to změní na ten znak :D "&227;" Tohle má být ten výstup
|
||
Joker Profil |
#6 · Zasláno: 25. 3. 2007, 18:02:37
Jasně, výstup jo, ale není vstup čistě náhodou "&227;" (což je HTML entita písmena ã)? Myslím, že čistě náhodou je.
|
||
blah Profil * |
#7 · Zasláno: 25. 3. 2007, 18:05:41
Joker: no, mám to takhle:
Formulář, kam se zadá název a kde se můžou vyskytnout i tyto znaky. Data z formuláře se ukládají do databáze a jsou proháněna přes tuto funkci... Jenže když je znovu potřebuju zobrazit, tak mi to zobrazuje ten špatnej znak :( |
||
Kalda Profil * |
#8 · Zasláno: 25. 3. 2007, 18:08:01
To, co ukazuješ odpovídá tomu, jako kdyby se na ten znak aplikovala funkce htmlspecialchars 2x
Tj. neděláš např. to, že to do DB vložíš jednou spolu s htmlspecialchars, a pak při výpisu opět na data použiješ htmlspecialchars??? |
||
blah Profil * |
#9 · Zasláno: 25. 3. 2007, 18:10:05
Kalda: to m2 takz napadlo, ale je to blbost, protože ã tohle se uloží do databáze.
ten řetězec je konkrétně prohnanej tímto: $GLOBALS['text']=mysql_escape_string($_POST['text']); |
||
blah Profil * |
#10 · Zasláno: 25. 3. 2007, 18:27:03
...když odmažu
$GLOBALS['text']=mysql_escape_string($_POST['text']);tak to funguje, nevím ale, jestli je moudrý mysql_escape_string vyřadit... |
||
Joker Profil |
#11 · Zasláno: 25. 3. 2007, 18:32:29
Kalda
Ta funkce se IMHO neaplikuje dvakrát. Prostě někdo do formuláře zadá "ã". Při posílání na server se to uloží jako "ã" a htmlspecialchars to pak převede na ã |
||
blah Profil * |
#12 · Zasláno: 25. 3. 2007, 18:35:12
Joker: ale proč potom při odmazání
$GLOBALS['text']=mysql_escape_string($_POST['text']); všechno funguje? |
||
Joker Profil |
#13 · Zasláno: 25. 3. 2007, 18:50:07
blah
No to by mě taky zajímalo. mysql_escape_string by mělo nahrazovat znaky: NUL, LF, CR, EOF, ", ' a (tj. nulový znak, konec řádku, konec souboru, uvozovky a zpětné lomítko). Nějak nevidím souvislost. |
||
blah Profil * |
#14 · Zasláno: 25. 3. 2007, 18:51:02
Joker: no právě, taky mi to hlava nebere
|
||
blah Profil * |
#15 · Zasláno: 25. 3. 2007, 18:57:02
no nic... kždopádně se budu držet pravidla, že htmlspecialchars() se používá až při vypisování na stránku a ne při vkládání do DB... Chtěl jsem si tak usnadnit práci a asi to nepůjde...
|
||
Kalda Profil * |
#16 · Zasláno: 26. 3. 2007, 00:59:24
K mysql_escape_string:
mysql_escape_string je depricated funkce, používej raději mysql_real_escape_string Navíc bych doporučoval použít mysql_real_escape_string až jako poslední funkci - spíš je to jen otázka zvyku, aby se Ti nestalo, že následné funkce ještě nevhodně modifikují řetězec před uložením do DB. Ale teď k Tvému problému - vůbec nevidím souvislost, proč Ti to dělá. Napadá mě ještě jedna věc - nepoužíváš nějaký editor (např. FCK)? Ty totiž občas převádějí tyto znaky na entity. |
||
blah Profil * |
#17 · Zasláno: 26. 3. 2007, 09:53:48
Kalda: nene, bylo to čistě přes formulář (žádný FCK editor nebo podobné věci)...
Jinak používám mysql_real_escape_string, jen se mi to na to testování nechtělo vypisovat :) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0