Autor | Zpráva | ||
---|---|---|---|
sajgon Profil * |
#1 · Zasláno: 15. 4. 2009, 06:40:22
Ahojky, narazil jsem na jeden problém při přesměrování stránek. Dejme tomu, že mám následující jednoduchý script:
$cesta = "index.php?p=1&i=10&x=20; pak pomocí javascriptu přesměrovávám.. <SCRIPT language="JavaScript"> <!-- function getgoing() { top.location="<? echo $path ?>"; } if (top.frames.length==0) { alert("Budete automaticky přesměrováni na <? echo $path ?> za 10 vteřin!"); setTimeout('getgoing()',10000); } //--> </SCRIPT> Vše reaguje jak má, ovšem do adresního řádku se adresa přenese přesně tak, jak je zapsána, čili v adrese vidím: http://neco.cz/index.php?p=1&i=10&x=20 namísto http://neco.cz/index.php?p=1&;i=10&x=20 Samozřejmě to můžu opravit přímo v proměnné $path, kde místo & & poradíte? |
||
sajgon Profil * |
#2 · Zasláno: 15. 4. 2009, 06:41:37
omlouvám se za chybku, samozřejmě původně deklarovaná var $cesta je následně prezentována jako $path.. :-)
|
||
Alphard Profil |
#3 · Zasláno: 15. 4. 2009, 06:51:58
|
||
Chamurappi Profil |
#4 · Zasláno: 15. 4. 2009, 11:11:26
Reaguji na sajgona:
„ale to zrovna nebude asi podle normy..“ Bude. V obsahu elementu <script> (a <style> a <xmp>) se neinterpretují entity. |
||
sajgon Profil * |
#5 · Zasláno: 15. 4. 2009, 14:11:35
oki díky. Takže abych nemusel přepisovat všechny Ampersandsy ve všech scriptech kvůli redirectu, tak jsem použil jednoduché "str_replace", čili teď ten javascript vypadá takto:
<SCRIPT language="JavaScript"> /* <![CDATA[ */ function getgoing() { top.location="<? echo str_replace("&","&",$path); ?>"; } if (top.frames.length==0) { setTimeout('getgoing()',6000); } /* ]]> */ </SCRIPT> a mám klid na duši :-) |
||
imploder Profil |
#6 · Zasláno: 15. 4. 2009, 14:48:48
norma
To je škoda, že je taková norma. Pokud nekončí název proměnné středníkem (nikdo tak proměnné nepojmenovává), nemůže být interpretována jako entita, protože entity naopak vždycky středníkem končí. URL kde jsou samotné ampérsandy (&) je přehlednější a k jejímu použití není potřeba umět interpretovat entity. |
||
Chamurappi Profil |
#7 · Zasláno: 15. 4. 2009, 15:04:40
Reaguji na implodera:
„protože entity naopak vždycky středníkem končí“ Nemusí. Středník není povinný. Entitu může ukončit jakýkoliv znak nedovolený v názvu entity, třeba rovnítko. Takže v následujícím HTML kódu bude v adrese znak copyrightu: <a href="skript.aspx?parametr=text©=ano">…</a> „URL kde jsou samotné ampérsandy (&) je přehlednější“ Souhlasím a bezostyšně porušuji normu. |
||
AM_ Profil |
#8 · Zasláno: 15. 4. 2009, 17:17:10 · Upravil/a: AM_
„tak jsem použil jednoduché "str_replace"“
To není ideální návrh, nejčistčí by bylo v proměnných mít adresu uloženou v původním tvaru s & místo & a naopak při výstupu do HTML (ne JS) to protahovat htmlspecialchars. |
||
Časová prodleva: 15 let
|
0