ahoj, mám problém, že když odešlu hlavičku s html entitou &, nepředá se mi druhá proměnná v url (druh). Když to ale pošlu rovnou s &, tak to v pořádku projde. Nevěděl by někdo proč to?
tohle nefunguje:
header("Location: http://neco.cz/zobraz.php?select=".$_GET['select']."&druh=".$_GET['druh']."");
tohle funguje:
header("Location:http://lib.natur.cuni.cz/BIBLIO/admin/form-knihovny-zobraz.php?select=".$_GET['select']."&druh=".$_GET['druh']."");
A proč posíláš v hlavičce HTML entity? To nemůže fungovat. Pošli to normálně s & a máš to v cajku.
no, já myslel, že & do url nepatří, že se má všude nahrazovat entitami
ale né, to platí jenom na stránce v HTML kódu.
Pockej, neni to nejaky divny? "tohle nefunguje" a "tohle funguje" je prece to stejny, ne? Nebo blbe vidim?
kdyz tady na foru napises entitu, automaticky ti ji to prevede. Tj.:
& => zustane &
& => prevede na &
& => prevede na &
Takze si musis domyslet, co tim chtel basnik rici...
Než pošleš to url zkus použít funkci urlencode() /nebo urldecode()/:
$url = urlencode("http://neco.cz/zobraz.php?select=".$_GET['select']."&druh=".$_GET['druh']);
header("Location: ".$url)." ");
PS:
Pockej, neni to nejaky divny? "tohle nefunguje" a "tohle funguje" je prece to stejny, ne? Nebo blbe vidim?
- asi jde o to co je v těch proměnných...
No já jsem si to domyslel takhle:
Autor ovlivněný trendem validovat vše a všude získal mylný dojem, že je třeba aby byla validní i adresa uvedená v header("Location: http://....."), neboť si neuvědomil, že entity & je třeba používat jen tam, kde se to zobrazuje v HTML kódu (typicky: echo "index.php?id=1&page=2";) Obsah funkce header("Location: http://.....") se v žádném případě zobrazit nemůže a proto ho lze bez problémů psát s jednoduchým &.
Hlavne hlavicky nejsou soucasti HTML kodu, tudiz na ne pravidla pro HTML neplati (a zadne entity pro ne neexistuji). Je to podobne, jako by se snazil tu entitu narvat do adresniho radku prohlizece...