Avatar billede tryout Nybegynder
26. maj 2005 - 16:58 Der er 9 kommentarer og
1 løsning

problem med header(Location

Jeg har et problem med at nogle af mine klienter oplever at de ikke blive redirected når de går ind på en side hvor jeg anvender dette.




header("Location: http://mydomain.com/index.php");
exit;

de ser bare en hvid side, jeg har ikke selv kunne reproducere fejlen, så jeg vil høre om der er nogle af jer der kender til problemet.

på forhånd tak, Tryout
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:41 #1
Det burde virke..

Du kan dog som backup bruge META (HTML), link og JavaScript..

Dvs:

<?php
...
header("Location: http://mydomain.com/index.php");
exit;
?>

<html>
<head>

<meta http-equiv="REFRESH" content="0;URL=http://mydomain.com/index.php">

<script type="text/JavaScript">
window.location.href='http://mydomain.com/index.php';
</script>

</head>
<body>

Hvis du ikke automatisk bliver sendt videre, <a href="http://mydomain.com/index.php">Klik her</a>..

</body>
</html>


Så burde der være en chance, for at de bliver sendt videre.. :-)

/theSurfer
Avatar billede angam Nybegynder
26. maj 2005 - 17:44 #2
Din idé er god, surfer, men han når aldrig ned til html-delen pga. header() med efterfølgende kald til exit() - så skal meta-metoden bruges, skal kaldet til header() og exit() helt væk.
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:54 #3
hmm.. Har du prøvet at indsætte noget HTML kode, og få ham til at kigge i kildekoden, når det er at det går galt?

Hvis der står HTML kode, kan det være at header-koden (af en eller anden mystik årsag) bare ikke afvikles.. men at den så bare kører videre..

Behøver man overhovedet "exit()"..?

/theSurfer
Avatar billede thesurfer Nybegynder
26. maj 2005 - 17:57 #4
Jeg har lige lavet en søgning, i PHP kategorien på "header location".. valgte 5 tilældige spm.. kun 1 ud af 5 brugte "exit()".. det kan være, at den gør et eller andet mærkeligt (hvilket den sikkert ikke gør)..

Der stod:
exit; // Terminate the script after redirection

Så vidt jeg ved, behøver man kun: header("Location: url");
Avatar billede ksoren Nybegynder
26. maj 2005 - 18:00 #5
Hvis du ikke sætter exit på, så fortsætter scriptet efter tilføjelse af header. Dvs browseren vil unødvendigt hente data ned. Så specielt ved login og visning af følsom data er det vigtigt med exit
Avatar billede thesurfer Nybegynder
26. maj 2005 - 18:05 #6
Ahh.. på den måde.. men, når header("Location: url") afvikles, loader den vel urlen..?

Jeg programmerer normalt i ASP, og der har man Response.Redirect "url".. intet af det, der står efter linien (Response.Redirect "url") bliver afviklet..

Er det ikke det samme, med PHP..?
Avatar billede sungdk Nybegynder
26. maj 2005 - 21:28 #7
"Ahh.. på den måde.. men, når header("Location: url") afvikles, loader den vel urlen..?"

Jep, men selvfølgelig ikke hvis exit(); sættes før header.
Avatar billede ksoren Nybegynder
27. maj 2005 - 08:25 #8
Du kan selv udføre eksperimentet. Forskellen er klar med nedstående to sider.

Indholdet kan hentes fra en cmd prompt med telnet:

GET /admin.php HTTP/1.1
Host: squashguy.1go.dk
<enter>

--- http://squashguy.1go.dk/admin.php:
<?php
if(1==1){
    // ikke logget ind
    header("Location: http://www.google.dk");
}
?>
Logget ind OK



--- http://squashguy.1go.dk/admin2.php:
<?php
if(1==1){
    // ikke logget ind
    header("Location: http://www.google.dk");
    exit();
}
?>
Logget ind OK
Avatar billede ksoren Nybegynder
27. maj 2005 - 08:25 #9
telnet kaldes således:

telnet squashguy.1go.dk 80
Avatar billede tryout Nybegynder
23. februar 2007 - 16:34 #10
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