Avatar billede webcreator Nybegynder
29. december 2003 - 18:10 Der er 7 kommentarer og
2 løsninger

Header location virker ikke - Redirect

Hej.

header("location: index.php?id=7");

Denne virker ikke. Koden ligger i filen main.php, som inkluderes på index.php. Nogen der kan se hvorfor den ikke virker ? Jeg får ingen fejl.
Avatar billede fangel Nybegynder
29. december 2003 - 19:28 #1
1) hvad står error_reporting til ?
2) har du noget output før header() kaldet ? (udskrevet noget, enten via echo/print eller uden for PHP)

Morten
Avatar billede Slettet bruger
29. december 2003 - 19:29 #2
Prøv først at test om koden bliver executed.

exit('ja det gør den!');
header("location: index.php?id=7");

Der næst så prøv med et exit() kald efter header kaldet!

// exit('ja det gør den!'); udkommenteret!
header("location: index.php?id=7");
exit();
Avatar billede webcreator Nybegynder
29. december 2003 - 19:31 #3
Jeg kigger lige på det lidt senere. Er gået i gang med noget andet kode nu :)
Men skal nok vende tilbage.
Avatar billede jakoba Nybegynder
29. december 2003 - 19:42 #4
du siger indes.php includerer den der kode, men jeg fatter hvorfor du så vil redirecte.

Hvorfor redirecte til den samme fil som du allerede er igang med at vise?

Det er en potentiel uendelig løkke du har gang i der.
Avatar billede webcreator Nybegynder
29. december 2003 - 19:48 #5
Jeg ønsker denne løsning, fordi mine website ligger i en database. Jeg laver så et tjek på, om brugeren "medbringer" et id (fra et link fra menuen).

Ser fx. sådan ud : index.php?id=3

Hvis personen kommer direkte ind på mit site via domainet (www.domain.dk), så er id tomt. Derfor ønsker jeg at redirecte til index.php?id=1
Avatar billede jakoba Nybegynder
29. december 2003 - 19:58 #6
Med al respect, jeg tror ikke du er helt klare over hvad en redirect via headeren indebærer.
1) headeren sendes til browseren (via den megalangsomme http protokol)
2) browseren kikker på den og requester den anden side (via den megalangsomme http protokol)
3) serveren går igang med at hpbdtere den nye side og sender den.

Det kan nemt gå hen og tage flere sekunder. så hvorfor ikke bare lade php gøre det:

<?php  // i toppen af index.php:

if( ! isset( $_GET['id'] ) ) {
    $_GET['id'] = 1;
    $id = 1;        // nu er vi sikre på at $id ALTID har en værdi.
}

// og hernedenunder kommer al den kode du allerede har (bortset fra den der redirect).

mvh JakobA
Avatar billede webcreator Nybegynder
09. januar 2004 - 08:47 #7
Hej igen.
Beklager at jeg først vender tilbage nu. Havde rent glemt spørgsmålet.

Jakoba > Nej, jeg var faktisk ikke klar over, at header("location.."); fungerede sådan. Så tak fordi du oplyste mig om det :)

Jeg kan også se, at din løsning er smartere. Det var faktisk netop en sådan løsning, at jeg valgte på mit problem. Men derfor kan det stadig irritere mig, at header_location aldrig virker. Man skal bare have den mindste form for output inden headeren, så virker den ikke. Ret træls :)
Avatar billede fangel Nybegynder
09. januar 2004 - 14:40 #8
webcreator -> tjaa, sådan er HTTP protokollen (headere først, så output - no hanky panky)

Morten
Avatar billede webcreator Nybegynder
09. januar 2004 - 19:59 #9
Heh, nope.

Men kan jo altid echo'e et metatag, der smider brugeren over på en anden side.
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