Avatar billede nolleren Nybegynder
05. august 2008 - 16:58 Der er 36 kommentarer

header location virker ikke

Hey Experten. Min location sætning virker ikke og jeg har nu i 2 timer siddet og prøvet at få den til at virke.

Jeg har nu kogt den ned og testet og det eneste der står i min fil er nu:

<?
    header('Location: http://dr.dk');
    exit;
?>

Jeg har brugt den mange gange før og det giver absolut ingen mening at den ikke fungerer nu..

Min udbyder er Surftown .. Nogen som kan hjælpe?

Det er dog nok omkring 2 mdr. siden jeg har arbejdet med PHP og har derfor ingen idé om om surftown skulle have ændret nogle indstillinger på det sidste ..
Avatar billede erikjacobsen Ekspert
05. august 2008 - 17:18 #1
Hvad sker der? Hvad står der i "Vis kilde"?

Nyere PHP-versioner leveres med en indstilling, så man faktisk skal skrive:

<?php
    header('Location: http://dr.dk');
    exit;
?>
Avatar billede nolleren Nybegynder
05. august 2008 - 18:25 #2
hmm , det har jeg prøvet og det virker heller ikke.
jeg har copy pastet din kode og der kommer ikke noget i kilden!
det er en helt blank side ..

jeg har echoet før og efter og mit echo bliver udskrevet før men ikke efter (selvf. pga. exit;) men ved at fjerne exit kommer det også efter header(Location...
Avatar billede erikjacobsen Ekspert
05. august 2008 - 19:58 #3
Det er lettere mystisk.

1) Her du et link til siden med din kode?
2) Man kunnne overveje:

    header('Location: http://dr.dk/');

  Bemærk den ekstra skråstreg - men det burde ikke være derfor.
Avatar billede nolleren Nybegynder
05. august 2008 - 20:46 #4
Linket er her:
http://videodb.theportfolio.dk/login.php

Koden som er:

<?php
    echo 'Before header location';
    header('Location: http://dr.dk');
    echo 'After header location, without exit';
?>
Avatar billede showsource Seniormester
05. august 2008 - 21:00 #5
<?php
// Fra manual'en

if (!headers_sent($filename, $linenum)) {
    header('Location: http://www.dr.dk/');
    exit;

// You would most likely trigger an error here.
} else {

    echo "Headers already sent in $filename on line $linenum\n" .
          "Cannot redirect, for now please click this <a " .
          "href=\"http://www.dr.dk\">link</a> instead\n";
    exit;
}

?>
Avatar billede showsource Seniormester
05. august 2008 - 21:03 #6
Med andre ord,
på dit host er error_reporting sat til "none", uanset hvad.

Og hvis du har f.eks. mellemrum eller linieskift før php-starttags, ( eller inden header() ), vil din header også fejle.
Avatar billede olebole Juniormester
05. august 2008 - 21:04 #7
<ole>

Undskyld, men jeg kan ikke tro, at koden:

<?php
    echo 'Before header location';
    header('Location: http://dr.dk');
    echo 'After header location, without exit';
?>

- kan resultere i det, der står i dokumentets kode:
    Before header location</br >After header location, without exit

Der må være noget, du ikke fortæller os  =)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
05. august 2008 - 21:11 #8
Det må du tro på, Ole. Showsources udregning lyder plausibel.
Avatar billede erikjacobsen Ekspert
05. august 2008 - 21:12 #9
Åh, ja, han regner jo ikke. Jeg mente: udredning.
Avatar billede erikjacobsen Ekspert
05. august 2008 - 21:13 #10
"Og hvis du har f.eks. mellemrum eller linieskift før php-starttags"  - vi kan se på linket, at det er et linieskift før.
Avatar billede olebole Juniormester
05. august 2008 - 21:15 #11
Erik >> Hvordan kan 'vi' se det? Koden ligner en syg server - og det ændrer showsource's udredning ikke ved  =)
Avatar billede olebole Juniormester
05. august 2008 - 21:16 #12
Hvad - eller hvem - kan finde på at skrive '</br >' der, hvor header'en skulle stå? ... error_reporting or not  =)
Avatar billede olebole Juniormester
05. august 2008 - 21:19 #13
PS: Læg vel mærke til det 'noget', der ved første øjekast kunne ligne et br-element under XHTML, men er noget ganske andet ... et uidentificeret objekt  ;o)
Avatar billede olebole Juniormester
05. august 2008 - 21:21 #14
- og det kan vel være ligemeget, om der står linjeskift før '<?php', da der i forvejen udskrives en linje tekst, før header'en sættes  =)
Avatar billede olebole Juniormester
05. august 2008 - 21:24 #15
Det er klart, der opstår en alm. headerfejl, som ikke rapporteres, da fejlmeldingerne er slået fra - men hvad i alverden er det derudover, som sker?
Avatar billede showsource Seniormester
05. august 2008 - 21:33 #16
Det "sædvanlige" når man ikke lige er vant til at rode med headers() ? :O)
Avatar billede erikjacobsen Ekspert
05. august 2008 - 21:53 #17
Ole: Livet er fuldt af overraskelser. Ingen kender natten før solen står op. Og PHP er inficeret med en XHTML-virus, der spytter <br />-er ud uden skam i livet. Har vi fundet en lille bug?
Avatar billede erikjacobsen Ekspert
05. august 2008 - 21:54 #18
Ok da. Så spytter den </br >-er ud. Det har været en lang dag.
Avatar billede dkfire Nybegynder
05. august 2008 - 21:57 #19
Jeg tror nærmere Ole vil påpege at der i den viste php kodew intet står om at den skal spytte <br/ > ud. ( Om det så er html eller ej )
Derfor må det være en anden kode som ligger på serveren end den som er bliver præsenteret her på siden.
Avatar billede olebole Juniormester
05. august 2008 - 22:00 #20
Erik >> Jamen, hvorfor spytter den overhovedet noget ud dér? Fejlmeldinger er jo slået fra. Så skal den da bare springe over og ikke indsætte HTML - eller for den sags skyld 'ikke-HTML' ... og det gør PHP da også normalt i den situation.

Ja, jeg tror, 'vi' har fundet en bug ... jeg er bare ikke helt sikker på, vi begge kan se den  =)
Avatar billede olebole Juniormester
05. august 2008 - 22:03 #21
PHP burde (og plejer) at skrive:

Before header location
After header location, without exit

- hvis fejlmeldinger er slået fra. Her skrives:

Before header location</br >After header location, without exit
Avatar billede olebole Juniormester
05. august 2008 - 22:04 #22
showsource >> Nej, det er netop ikke det "sædvanlige"  =)
Avatar billede erikjacobsen Ekspert
05. august 2008 - 22:26 #23
Jo da - vi skal lige høre om spørgeren har sneget en </br > ind i koden et sted?
Avatar billede olebole Juniormester
05. august 2008 - 22:33 #24
Jamen, spørgeren skriver jo eksplicit, hvad koden indeholder i (05/08-2008 20:46:57).
Det var jo derfor, jeg skrev kommentaren (05/08-2008 21:04:25) - og derfor jeg ikke kunne finde logikken i dine efterfølgende kommentarer  =)
Avatar billede erikjacobsen Ekspert
05. august 2008 - 22:40 #25
Ja ja, Ole. Jeg indrømmer da 05/08-2008 21:54:59 at jeg ikke ved hvad jeg foretager mig, og at jeg ikke kan regnes ansvarlig for mine handlinger, stort set.

Havde det været et lovligt "</br >",så ku' det da have været en hylemorsom afslutning på en tirsdag, hvis det var en PHP-fejl ("hvis fejl er slået fra, udskrives alligevel ..."). Men et syntaktisk tvivlsomt "</br >", kommer nok ikke fra PHP. Trods alt.
Avatar billede erikjacobsen Ekspert
05. august 2008 - 22:43 #26
(ret selv mine skrivefejl)
Avatar billede olebole Juniormester
05. august 2008 - 23:00 #27
Du er hermed fritaget for tyngende ansvar  ;o)
Avatar billede nolleren Nybegynder
06. august 2008 - 18:18 #28
haha. kan se at det har skabt en del forvirring at jeg har indsat et </br> i koden!
det er ikke php som har gjort dette men mig selv. men det har jo ingenting med php'en at gøre da det jo står efter header(Location ...

koden her:

<?php
    echo 'Before header location';
    header('Location: http://dr.dk');
    echo '</br >After header location, without exit';
?>

Jeg har bare skrevet de ehcoer for at vise at header slet ikke udføres men at mit script altså bliver kørt ..
Avatar billede nolleren Nybegynder
06. august 2008 - 18:22 #29
</br> er bare for at seperere teksten så det er lidt lettere at læse ..
Avatar billede nolleren Nybegynder
06. august 2008 - 18:30 #30
har nu også prøvet med ob_start() og ob_flush() men det giver stadig ingen effekt.
Avatar billede nolleren Nybegynder
06. august 2008 - 18:33 #31
Så var der noget her der virkede! Filen var sat til at være en UTF-8 fil. Da jeg ændrede den til at være en ANSI fungerer det nu!
Avatar billede dkfire Nybegynder
06. august 2008 - 18:47 #32
Måske du skulle prøve at slå fejlbeskeder til. ;-)
Avatar billede nolleren Nybegynder
06. august 2008 - 19:10 #33
okai, jeg er ikke mester til php så det siger mig ikke rigtigt noget hvor man gør det henne! er det en fil på serveren man kan gøre det på? og har man rådighed over denne når surftown hoster?
Avatar billede nolleren Nybegynder
06. august 2008 - 19:21 #34
forresten får jeg nu en ny fejl ;s

jeg kan åbenbart ikke include en fil på samme side som jeg sender en header location.

er det noget nogen har erfaring med?
Avatar billede olebole Juniormester
06. august 2008 - 22:51 #35
- måske, men jeg har i hvertfald lang erfaring med folk, der skriver, de gør én ting - men i virkeligheden gør noget helt andet. Og så har jeg også masser af erfaringer med folk, som beder om hjælp til en fejl, som udløser en fejlmeddelelse - uden at oplyse, hvad denne siger.

Vi kan kun vide, hvad du fortæller os - så vores muligheder for at hjælpe dig er ligefrem proportional med mængden og nøjagtigheden af de informationer, du giver os.
Avatar billede showsource Seniormester
07. august 2008 - 07:39 #36
Det skulle vel ikke være samme fejl? ( UTF-8 versus ANSI )
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