Autor | Zpráva | ||
---|---|---|---|
dragonder Profil |
Ahoj,
potřeboval bych, aby mi PHP zakódovalo daný řetězec dle metody, která se používá např. do adresy nebo při zobrazení zprávy JavaScriptu. Nevím, jestli to chápete. Vyjádřím se lépe: PHP má zakódovat řetězec a vloží ho do URL adresy, na kterou se přesměruje. Příklad: //Udělám si řetězec. $error="Při zadávání něčeho došlo k (této a této) chybě. "; //Teď se nějak ten řetězec $error zakóduje. $error=(zakódování); //Nakonec přesměruji na stránku, kde se proměnná $error zobrazí jako chybný text. header("location: http://mojedomena.cz/index.php?error=".$error); To 'došlo k (této a této) chybě' je zde proto, že chyb může být více a v různém pořadí. Jinak bych samozřejmě mohl na koncové URL v JavaScriptu pro každou chybu udělat text (větvením) podle čísla chyby odeslaného z PHP, ale nechce se mi dělat tisíce řetězců :-) Zkoušel jsem toto zakódovat následující funkcí urlencode(iconv("UTF-8", "Windows-1250", $error)); (bez kódování) zobrazily, se nezobrazují a místo toho se text "ukončí" (asi že je to špatně)... Příklad: Při zad a už nic.
Takže moje otázka zní: Jakou funkcí text zakódovat, aby se to zobrazilo i s háčky a zároveň i s čárkami? Případně jak to udělat s uvedenou funkcí nebo jak to správně ošetřit? Děkuji mockrát za odpovědi. P.S. Jsem začátečník, tak prosím více vysvětlení :-) |
||
mzk Profil * |
#2 · Zasláno: 3. 2. 2013, 13:59:09
dragonder:
a toto ti nefunguje? $test = urlencode('nějaký žluťoučký, !? kůň'); echo '<a href="index.php?test='.$test.'">'.$test.'</a>'; echo $_GET['test']; echo urldecode($_GET['test']); |
||
Davex Profil |
#3 · Zasláno: 3. 2. 2013, 14:08:18
dragonder:
Pokud jsou všechny skripty uloženy v kódování UTF-8, tak by mělo pro přesměrování stačit $error = rawurlencode($error); header("location: http://mojedomena.cz/index.php?error=".$error); a ve skriptu index.php vypsat: <meta charset="utf-8"> <?php if (!empty($_GET['error'])) { echo htmlspecialchars($_GET['error'], ENT_QUOTES, 'UTF-8'); } ?> mzk: Hodnoty v superglobálních polích $_GET atd. jsou automaticky dekódované a není na ně potřeba používat urldecode .
|
||
dragonder Profil |
#4 · Zasláno: 3. 2. 2013, 14:09:02
mzk:
Samotné urlencode mi bohužel nefunguje.
Výsledek je takový, že se místo "č" zobrazí "è" a místo "ř" zobrazí neznámé "ø". Toto se ale zobrazuje i při použití funkce htmlspecialchars() .
|
||
mzk Profil * |
#5 · Zasláno: 3. 2. 2013, 14:14:45
dragonder:
„použití funkce htmlspecialchars()“ ta funkce je tam kůli bezpečnosti, né kůli tomu kódování |
||
dragonder Profil |
#6 · Zasláno: 3. 2. 2013, 14:18:24
Davex:
Zkoušel jsem dát do kódu $error=rawurlencode("Při zadávání něčeho došlo k (této a této) chybě. ", ENT_QUOTES); ,
ale když pak na index.php přesměruji, je proměnná prázdná. Adresa je http://mojedomena.cz/index.php?error= - prostě je 'error' prázdné.
Nevím, co dělám špatně... |
||
Davex Profil |
dragonder:
„Nevím, co dělám špatně...“ Špatně opisuješ. Funkce rawurlencode nemá druhý parametr.
|
||
dragonder Profil |
#8 · Zasláno: 3. 2. 2013, 14:28:38
Davex:
„Funkce rawurlencode nemá druhý parametr.“ Aha, promiň :-) Ten druhý parametr tam skutečně nebyl... Každopádně se mi i když je to opsáno správně stejně zobrazuje to od samotné funkce urlencode (místo "č" se zobrazí "è" a místo "ř" zobrazí neznámé "ø"). |
||
Davex Profil |
#9 · Zasláno: 3. 2. 2013, 16:58:54
dragonder:
Vypadá to, že se ti neshoduje kódování ve všech skriptech nebo ho máš špatně deklarované. Viz Čeština / cestina » Automatické meta nastavení. |
||
dragonder Profil |
Davex:
Bylo to tou češtinou. Už to krásně jde. Díky. |
||
Časová prodleva: 11 let
|
0