Avatar billede henrik_r Nybegynder
18. august 2004 - 11:10 Der er 8 kommentarer og
1 løsning

Findes et alternativ til header(Location)?

Hej, findes der et alternativ til header(Location:...) - hvor det ikke gør noget, at der er kommet output først?

Behøver ikke være PHP, må godt være java eller noget lignende..

M.v.h.

Henrik
Avatar billede exp Juniormester
18. august 2004 - 11:18 #1
der findes et alternativ i javascript - mener det er location.redirect('url.htm') men er ikke sikker

Alternativt kan du benytte dig af output buffering - skriv ob_start(); øverst på siden, og ob_flush() sidst på siden...
Avatar billede dennismp Nybegynder
18. august 2004 - 11:22 #2
Meta redirect:

<meta http-equiv="Refresh" content="4;url=http://www.domain.com/link.html">

url -> hvor vi skal til
4; antal sekunder før redirect (sæt evt til 0)
Avatar billede henrik_r Nybegynder
18. august 2004 - 11:27 #3
Tak Exp..

Det virkede med ob_start() og ob_flush()..
Havde programmeret et rimelig stort script, til at opdatere en hjemmeside..

Min egen webserver herhjemme brokkede sig ikke over det, men da jeg så fik smidt det op på et webhotel begyndte den at brokke sig over der var output før headeren..

Men nu virker det..

Er der nogen ulemper ved dette script?

M.v.h.
Henrik
Avatar billede dennismp Nybegynder
18. august 2004 - 11:28 #4
Javascript virker jo ikke med mindre man har js enablet.. Så du burde bruge begge dele (+ evt et link).. men det bedste er helt klart at lave din phpfil om, så du kan bruge header..
Avatar billede exp Juniormester
18. august 2004 - 11:29 #5
Det er der givetvis, men jeg kender dem ikke - men prøv at kigge på www.php.net :-)
Avatar billede exp Juniormester
18. august 2004 - 11:29 #6
dennismp@11:28:09 >>
Enig :-)
Bruger personligt aldrig ob_start()/ob_flush()

Men dovenskaben længe leve ;-)
Avatar billede henrik_r Nybegynder
18. august 2004 - 11:32 #7
Hehe.. Ok - det er bare et lille adminscript til nogle få mennesker, så det er vist fint nok.. Orker ikke til at skrive hele scriptet om.. Har brugt det mega meget..

Brugte det til at lave fejlmeldinger på - så omstillede den tilbage til en side med fx ?msg=Du glemte at sætte hak i...

Men tak for hjælpen..

/Henrik
Avatar billede krydset Nybegynder
18. august 2004 - 15:36 #8
exp--> hvad er der galt med ob_start/ob_start  ??
Avatar billede dennismp Nybegynder
18. august 2004 - 15:55 #9
teknisk set, er der ikke noget galt.

at man gør det, for at undgå header-fejl, er bare et tegn på at koden ikke er særlig pæn. Det er normalt nemt at undgå at lave output før man sender headers..

Hvis jeg skal læse din kode:
ob_start()
output
output
..
output
if( .. noget .. ) {
  header("Location: side2.php");
  exit;
}

så er alt det, som jeg læste som output, egentlig ikke output, hvis tilfældet "noget" er sandt. Nu er dette jo et nemt eksempel at overskue, men hvis man arbejder med et større projekt, så kan man ikke forvente at have (og bevare) overblikket ..

Så er det meget nemmere at læse:
if( .. noget .. ) {
  header("Location: side2.php");
  exit;
}
output
output
..
output


Her er, output-linjerne, nemlig noget brugeren sér :-)

Jeg har aldrig været ude for, at man ikke kan omskrive koden, så problemet bliver løst uden ob_*.. Det kan bare være b*tch - og der er andre ting der er sjovere at lave :)
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