Autor Zpráva
sajgon
Profil *
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&amp;i=10&amp;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
&amp;
napíšu pouze
&
, ale to zrovna nebude asi podle normy..

poradíte?
sajgon
Profil *
omlouvám se za chybku, samozřejmě původně deklarovaná var $cesta je následně prezentována jako $path.. :-)
Alphard
Profil
http://phpfashion.com/barnes-noble-v-javascriptu

mrkněte na komentáře
Chamurappi
Profil
Reaguji na sajgona:
ale to zrovna nebude asi podle normy..
Bude. V obsahu elementu <script> (a <style> a <xmp>) se neinterpretují entity.
sajgon
Profil *
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("&amp;","&",$path); ?>";
   }
 
   if (top.frames.length==0)
    {
     setTimeout('getgoing()',6000);
     }
/* ]]> */
</SCRIPT> 


a mám klid na duši :-)
imploder
Profil
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
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&copy=ano">…</a>
Někdo si z takového případu vezme ponaučení, že „&“ by se měl vždy zapisovat jako „&amp;“, někdo zas, že nazvat parametr „copy“ je neprozíravé. Já se řadím do té druhé skupiny.

URL kde jsou samotné ampérsandy (&) je přehlednější
Souhlasím a bezostyšně porušuji normu.
AM_
Profil
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 &amp; a naopak při výstupu do HTML (ne JS) to protahovat 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: