/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
redirect til ny side
Fra : Kim Emax


Dato : 01-03-04 02:45

Hey

En af mine venner har gjort mig opmærksom på at ASP skulle have en
response.redirect man kan sætte ind i koden, hvor man vil, således at går
f.eks. en bestilling igennem, så kan man videresende brugeren til en ny
side. Han spørger om det samme er muligt i PHP. Den måde programmerer jeg
ikke på, så jeg er lidt i tvivl her. Det eneste jeg lige kender til er
header("location: URL"); og den skal jo sættes før noget som helst output.
Er der andre muligheder?

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



 
 
Jonas Koch Bentzen (01-03-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 01-03-04 09:37

Kim Emax skrev:

> En af mine venner har gjort mig opmærksom på at ASP skulle have en
> response.redirect man kan sætte ind i koden, hvor man vil, således at går
> f.eks. en bestilling igennem, så kan man videresende brugeren til en ny
> side. Han spørger om det samme er muligt i PHP. Den måde programmerer jeg
> ikke på, så jeg er lidt i tvivl her. Det eneste jeg lige kender til er
> header("location: URL"); og den skal jo sættes før noget som helst output.

Ikke nødvendigvis. Hvis man bruger output buffering, kan man sende en
location-header hvorsomhelst:

<?php
ob_start();

echo 'Her er noget tekst';

header('Location: http://eksempel.dk/');
?>

--
- Jonas Koch Bentzen

http://understroem.dk/
http://findhim.com/

Kim Emax (01-03-2004)
Kommentar
Fra : Kim Emax


Dato : 01-03-04 12:31

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote

> Ikke nødvendigvis. Hvis man bruger output buffering, kan man sende en
> location-header hvorsomhelst:
>
> <?php
> ob_start();
>
> echo 'Her er noget tekst';
>
> header('Location: http://eksempel.dk/');
> ?>

nice... har kun skimmet ob funktionerne på et tidspunkt og ikke fundet dem
relevante for mig på daværende tidspunkt.

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Henrik Oddershede (01-03-2004)
Kommentar
Fra : Henrik Oddershede


Dato : 01-03-04 18:37

Jonas Koch Bentzen wrote:

[...]

> Ikke nødvendigvis. Hvis man bruger output buffering, kan man sende en
> location-header hvorsomhelst:
>
> <?php
> ob_start();
>
> echo 'Her er noget tekst';
>
> header('Location: http://eksempel.dk/');
> ?>

Men det svarer jo blot til ikke at outputte noget før man sætter en
header... hvis man flusher bufferen før et kald til header(), vil det
ikke virke... og flusher man efter en redirect vil bufferen ikke blive set.

Mvh. Henrik

--
Henrik Oddershede <henrik@REMOVE_THIScs.auc.dk>

Jonas Koch Bentzen (01-03-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 01-03-04 21:06

Henrik Oddershede skrev:

> Jonas Koch Bentzen wrote:
>
> [...]
>
>> Ikke nødvendigvis. Hvis man bruger output buffering, kan man sende en
>> location-header hvorsomhelst:
>>
>> <?php
>> ob_start();
>>
>> echo 'Her er noget tekst';
>>
>> header('Location: http://eksempel.dk/');
>> ?>
>
> Men det svarer jo blot til ikke at outputte noget før man sætter en
> header...

Korrekt. Men det har den store fordel, at man rent faktisk i f.eks. en
fejlsituation, hvor man allerede har "skrevet" noget (som pga. output
buffering ikke er blevet outputtet endnu), og der går noget galt, kan
viderestille til f.eks. en fejlside.

Spørgsmålet er selvfølgelig, hvad Kim skal bruge det til.

> hvis man flusher bufferen før et kald til header(), vil det
> ikke virke... og flusher man efter en redirect vil bufferen ikke blive
> set.

Igen korrekt. Men jeg forstår ikke, hvorfor man skulle have lyst til at gøre
nogen af delene.

Og i øvrigt tvivler jeg på, at ASP på magisk vis kan sende en
Location-HTTP-header efter at have outputtet noget. Mit gæt er, at ASP
enten bruger noget output buffering eller bruger JavaScript-viderestilling.

--
- Jonas Koch Bentzen

http://understroem.dk/
http://findhim.com/

Henrik Oddershede (01-03-2004)
Kommentar
Fra : Henrik Oddershede


Dato : 01-03-04 23:32

Jonas Koch Bentzen wrote:

[...]

>>Men det svarer jo blot til ikke at outputte noget før man sætter en
>>header...
>
>
> Korrekt. Men det har den store fordel, at man rent faktisk i f.eks. en
> fejlsituation, hvor man allerede har "skrevet" noget (som pga. output
> buffering ikke er blevet outputtet endnu), og der går noget galt, kan
> viderestille til f.eks. en fejlside.

I see your point.

>>hvis man flusher bufferen før et kald til header(), vil det
>>ikke virke... og flusher man efter en redirect vil bufferen ikke blive
>>set.
>
>
> Igen korrekt. Men jeg forstår ikke, hvorfor man skulle have lyst til at gøre
> nogen af delene.

Jeg forsøgte også at pointere det meningsløse i det

> Og i øvrigt tvivler jeg på, at ASP på magisk vis kan sende en
> Location-HTTP-header efter at have outputtet noget.

Den slags magi tror jeg heller ikke på.

> Mit gæt er, at ASP
> enten bruger noget output buffering eller bruger JavaScript-viderestilling.

Lyder sandsynligt...

Mvh. Henrik

--
Henrik Oddershede <henrik@REMOVE_THIScs.auc.dk>

Kim Emax (02-03-2004)
Kommentar
Fra : Kim Emax


Dato : 02-03-04 00:28

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote

> Spørgsmålet er selvfølgelig, hvad Kim skal bruge det til.

well, jeg skal ikke bruge det, men min tidligere partner i firmaet, laver,
så vidt jeg forstår noget i denne stil, når der shoppes ind:

print "en masse yadayada...";

if($error)
print "du har lavet en fejl, da du bestilte. prøv igen";
else
header("location: tak_for_bestillingen.side");

Som sagt, det er ikke måden jeg selv gør det på og har aldrig brugt denne
metode.

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Jakob Braad (01-03-2004)
Kommentar
Fra : Jakob Braad


Dato : 01-03-04 21:42

En lille stump javascript kan også klare det :

<script language='javascript' type='text/javascript'>
location.replace('http://www.derhvormanskalhen.dk/');
</script>

Kim Emax wrote:

> Hey
>
> En af mine venner har gjort mig opmærksom på at ASP skulle have en
> response.redirect man kan sætte ind i koden, hvor man vil, således at går
> f.eks. en bestilling igennem, så kan man videresende brugeren til en ny
> side. Han spørger om det samme er muligt i PHP. Den måde programmerer jeg
> ikke på, så jeg er lidt i tvivl her. Det eneste jeg lige kender til er
> header("location: URL"); og den skal jo sættes før noget som helst output.
> Er der andre muligheder?
>


Kim Emax (02-03-2004)
Kommentar
Fra : Kim Emax


Dato : 02-03-04 00:30

"Jakob Braad" <jakob@jbraad.dk> wrote

> En lille stump javascript kan også klare det :
>
> <script language='javascript' type='text/javascript'>
> location.replace('http://www.derhvormanskalhen.dk/');
> </script>

Interessant. Den vil jeg sende videre... har aldrig gået ret meget op i JS,
da de eneste eks. var larmene popups og alert bokse, som jeg finder GRIMME,
da jeg kiggede på det en gang i 97-98

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Søg
Reklame
Statistik
Spørgsmål : 177518
Tips : 31968
Nyheder : 719565
Indlæg : 6408647
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste