Autor | Zpráva | ||
---|---|---|---|
laijk Profil |
#1 · Zasláno: 30. 8. 2012, 14:40:50
Ahojte, mám na stránke možnosť pridávať bb kódy, premieňam ich pomocou funkcie str_ireplace, všetko ide v poriadku len keď tam napíšem nejaké písmeno s diakritikou tak sa mi do DB neuloží nič, môže to byť zlým formátovaním mysql? mám nastavené všetko na windows-1250
|
||
Kajman Profil |
#2 · Zasláno: 30. 8. 2012, 14:43:19
Vypište si sestavený dotaz a chybu, ať víte, proč se to neuložilo.
|
||
laijk Profil |
Kajman:
prepáč zle som napísal problém, ono mi tam uloží všetko čo treba čiže žiadna chyba sa nevypíše, urobí nový riadok, všeto tam je - čiže napr. čas atd..., len ten text je prázdny keď tam dám napr. mäkčeň |
||
Kajman Profil |
#4 · Zasláno: 30. 8. 2012, 14:50:33
Jak konkrétně vypadá sestavený dotaz, který zlobí?
|
||
laijk Profil |
mysql_query("INSERT INTO nepotvrdene(blog_name, blog_cat, blog_text, blog_time, blog_author) VALUES ('$nazov', '$kat', '$text', '$time', '$autor' )") EDIT: problém v dotaze nebude, pretože keď tam nieje diakritika medzi tými bb kódmi tak to zapíše EDIT2: zistil som kde bol problém, zistil som, že ked som pred vložením do DB ošetril ten text takto: $text = htmlspecialchars(mysql_real_escape_string($_POST['textblogu'])); tak vtedy keď som tam dal diakritiku tak mi nevložilo do DB nič, ked som to htmlspecialchars odobral tak všetko ide ako má, ako je to možné, netreba to ošetriť?
|
||
Kajman Profil |
#6 · Zasláno: 30. 8. 2012, 14:59:58
Vypište si výsledný sestavený dotaz po doplnění těch proměnných - třeba zjistíte, že $text je prázný a hledáte chybu úplně jinde, než máte.
|
||
laijk Profil |
#7 · Zasláno: 30. 8. 2012, 15:01:08
Kajman:
zistil som kde bol problém, zistil som, že ked som pred vložením do DB ošetril ten text takto: $text = htmlspecialchars(mysql_real_escape_string($_POST['textblogu'])); tak vtedy keď som tam dal diakritiku tak mi nevložilo do DB nič, ked som to htmlspecialchars odobral tak všetko ide ako má, ako je to možné, netreba to ošetriť? |
||
Keeehi Profil |
#8 · Zasláno: 30. 8. 2012, 15:14:59
Protože to máte ve špatném pořadí.
mysql_real_escape_string(htmlspecialchars()) by bylo správné pořadí, ovšem htmlspecialchars tam nemá při ukládání do databáze co dělat, má být až při výstupu. Takže jste vlastně omylem dosáhl správného stavu.
|
||
laijk Profil |
#9 · Zasláno: 30. 8. 2012, 16:08:04
má být až při výstupu.
-ale keď ho dám na výstup tak mi nevypíše zase nič, lebo vlastne html dostane tie html tagy, ktoré som zmenil z bb kódov, skúšam hocičo, ale bud to bude neošetrené, alebo mi nepôjde diakritika :( čo by som nechcel, neviem ako to vyriešiť |
||
Keeehi Profil |
#10 · Zasláno: 30. 8. 2012, 16:20:02
laijk:
Ano, bb tagy převádět také až při výstupu. Nejdříve htmlspecialchars a pak převod bb tagů. |
||
laijk Profil |
#11 · Zasláno: 30. 8. 2012, 16:26:19
stále to nejde, toto je môj kód pri výstupe, údaje v DB sú stále v bb kodoch:
$zalomenyblog = wordwrap($blog_text, 20, "\n", true); $zalomenyblog = htmlspecialchars($zalomenyblog); $bb = array("", "", "[u]", "[/u]", "", ""); $html = array("<b>", "</b>", "<u>", "</u>", "<i>", "</i>"); $zalomenyblog = str_ireplace($bb, $html, $zalomenyblog); echo $zalomenyblog; -nevypíše stále nič |
||
Tori Profil |
#12 · Zasláno: 30. 8. 2012, 16:52:18
laijk:
htmlspecialchars převádí nebezpečné znaky na entity. Tzn za řádkem 2 už nebude <b> ale <b> .
|
||
laijk Profil |
#13 · Zasláno: 30. 8. 2012, 17:01:54
Tori:
áno, ale ja tie údaje ťahám z DB, a v DB je napr. nieco a nie <b>nieco</b> a to nieje nebezbečný znak, to by sa malo po ošetrení zmeniť na html tag; keď som tento kód upravil tak, že som vymazal 2. riadok (ten htmlspecialchars) tak mi to ide, mne tá funkcia nejako neberie diakritiku neviem prečo |
||
Časová prodleva: 13 let
|
0