Avatar billede bgo Nybegynder
24. november 2006 - 16:57 Der er 8 kommentarer og
1 løsning

havelåge i url giver probs ved header location

Jeg havde bestemt ikke ventet at en havelåge kunne give problemer, og da slet ikke så inkonsistent. Problemet, som jeg forklarer nedenfor, opstår kun i IE6, ikke FF eller IE7.

Jeg har en side med en række forms - og før hver form har jeg et anchor således at når man har gemt ændringer, så skulle man gerne komme ned til det pågældende sted, uden at skulle scrolle. Det fungerer så også fint nok.

Mine forms sender data til et script som udfører de nødvendige handlinger i databasen, og skal så sende folk tilbage til siden de kom fra, som nævnt, til det pågældende anchor. Det fungerer også fint når det ikke er IE6.

Folk bliver sendt tilbage via

header("Location: edit.php?pid=".$_GET['pid']."#".$_GET['pc']);

og umiddelbart ser det også fint ud - men: når folk bliver sendt videre på denne måde i IE6 så bliver $_GET['pid'] i edit.php til eks. 1#1 istedet for blot 1. Sjovt nok er det kun ved denne videresending det sker - skriver jeg url'en inkl. #1 - altså edit.php?pid=1#1 - i adresselinien i IE6, så gør den det korrekt.

I adresselinien er det ligegyldigt om jeg skriver det selv, eller om det er via re-direktet, så er det præcis det samme der står.

Naturligvis kan jeg lave et check og smide # og alt efter væk før det skal bruges, men det får mig da til at spekulere på hvorfor, og om det er fordi jeg gør noget forkert. Så, er der nogen der kan fortælle hvad der sker?
Avatar billede fojensen Nybegynder
24. november 2006 - 18:13 #1
Har selv haft lignende problem, men jeg har svært ved at forstå hvad du vil ha' svar på, for du skriver både:

1. Sjovt nok er det kun ved denne videresending det sker - skriver jeg url'en inkl. #1 - altså edit.php?pid=1#1 - i adresselinien i IE6, så gør den det korrekt.

2. I adresselinien er det ligegyldigt om jeg skriver det selv, eller om det er via re-direktet, så er det præcis det samme der står.

jeg synes det modsiger hinanden - eller er det bare mig der er tung i det...
Avatar billede baitianlong Nybegynder
24. november 2006 - 18:14 #2
proev at bruge urlencode samt fuld URL

$url = "http://www.etellerandet.dk/edit.php?pid=".$_GET['pid'].urlencode("#").$_GET['pc'];
header("Location: ".$url);



Tror det vil loese problemet.
Avatar billede bgo Nybegynder
24. november 2006 - 19:22 #3
fojensen:

;) det modsiger hinanden, ja - og det er også derfor det undrer mig at det gør sådan. Adresselinien ser end ud, men opførslen er forskellig.


legende.dk:

Det blev det sådan set blot værre af ;) Det betyder at $_GET['pid'] i edit.php bliver 1#1 hver gang, og inklusive i IE7 og FF.

Men jeg kan næsten regne ud, at dette er noget jeg skal tage højde for i edit.php og ikke i scriptet med header-kaldet
Avatar billede bgo Nybegynder
24. november 2006 - 19:30 #4
Nu har jeg lagt
$pid=$_GET['pid'];

$pidtemp=explode("#", $pid); //ny

$pid=$pidtemp[0]; //ny

ind i edit.php før $pid skal bruges, og det virker fint. Min bekymring var om header-kaldet muligvis var forkert, og det var det egentlig også (urlencode er det mest korrekte).

Så, hvis der ikke er andet galt med kaldet, kan legende.dk roligt smide et svar og få point ;)
Avatar billede coderdk Praktikant
24. november 2006 - 22:16 #5
Et anchor må, lige som navne og id'er, ikke være et tal. Omdøb dem og prøv med f.eks. #a1 i stedet for #1
Avatar billede bgo Nybegynder
25. november 2006 - 20:16 #6
coderdk: ok, thanks
Avatar billede coderdk Praktikant
26. november 2006 - 01:25 #7
Prøvet det? Virker det nu?
Avatar billede bgo Nybegynder
27. november 2006 - 13:24 #8
#a1 giver samme resultat som #1, så min lille kodestump skal være der uanset. Jeg opdagede også at urlencodet havelåge ikke fungerer, hvilket ved nærmere eftertanke også giver mening, da browsere vil tro at det så er del af en streng og ikke et anchor (jeg prøvede endog at rette kodestumpen til, så den kiggede efter den url-encodede havelåge).
Avatar billede bgo Nybegynder
15. december 2006 - 14:59 #9
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester