Sent header werkt alleen in Firefox goed

Pagina: 1
Acties:

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
na het invoegen van een record in een db maak ik gebruik van de volgende functie om terug te gaan naar bijv een overizichts site.


PHP:
1
2
3
4
5
function forward($url)
{
   if(!headers_sent()) header('location: '.$url);
   die('<meta http-equiv="refresh" content="0;'.$url.'"/>'); 
}


nu werkt dit allemaal goed in firefox, maar in IE6 gaat hij raar doen, vooral als de pagina in een een frame zit. In IE 5 vraagt hij zelfs of de data overnieuw gepost moet worden, terwijl dat allan afgehandeld is. Is er een alternatieve manier om te forwarden naar een pagina, of om ervoor te zorgen dat IE gewoon gaat naar de pagina waar hij naartoe moet?

Verwijderd

Ik snap niet zo goed waarom je die refresh wilt. Gewoon die() aanroepen zou wellicht beter zijn,

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 23:41
<never mind>

[ Voor 109% gewijzigd door Daspeed op 29-05-2005 16:56 . Reden: Las het verkeerd :P (zet zelf statements nooit direct achter de if) ]


Verwijderd

Omdat je anders een parse error krijgt.

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
ligt aan die browsers en niet aan php. aangezien je browser die php noot te zien krijgt ;)

[ Voor 8% gewijzigd door Mischa_NL op 29-05-2005 17:01 ]


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Het vage is dat hij het in firefox onder mac als enige goed doet, onder windows gaat hij ook gewoon terug naar de form pagina inplaats van naar het overizcht te gaan.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

waarom stuur je nog content na die location header?

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Ik stuur geen content

ik heb een voegtoe.php met een vorm, na de submit word de form afgehandeld in het het zelfde voegtoe.php, als het toevoegen aan de db goed gaat wil ik terug gaan naar het overzicht.

PHP:
1
2
3
4
5
6
7
$insertQuery = "INSERT INTO softline_merken (merk_id, merk_naam, foto_path, _beschrijving)
VALUES ('','$merk_naam', '$foto_path', '$_beschrijving')";

if ($insertresult = $connector->query($insertQuery))
    {   
        forward('edit_softline.php');
    }


dit gebeurd allemaal in de head, dus er word nog geen content geschreven. Het werkt in FF onder de mac dus allemaal goed. Maar onder windows voegt hij de record wel toe, maar negeert hij de forward functie, en laat hij het form gewoon zien.

  • Room42
  • Registratie: September 2001
  • Niet online
Ja, probeer het eens zo:

PHP:
1
2
3
4
5
6
7
8
function forward($url) {
  if(!headers_sent()) {
    header('location: '.$url);
    exit;
  } else {
    die('<meta http-equiv="refresh" content="0;'.$url.'"/>');
  }
}
Jawel, je voert die 'die' altijd uit, die had je niet in een if-statement staan.

[ Voor 42% gewijzigd door Room42 op 29-05-2005 17:11 ]

Koop al mijn ads!


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02-05 01:32
Wat een lelijke constructie is dat met die die()-call. Wat is er mis met een echo gevolgt door een exit?

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Room42 schreef op zondag 29 mei 2005 @ 17:09:
Ja, probeer het eens zo:

PHP:
1
2
3
4
5
6
7
8
function forward($url) {
  if(!headers_sent()) {
    header('location: '.$url);
    exit;
  } else {
    die('<meta http-equiv="refresh" content="0;'.$url.'"/>');
  }
}



[...]
Jawel, je voert die 'die' altijd uit, die had je niet in een if-statement staan.
IE negeert de forward functie nogsteeds, hij laat gewoon weer de form zien die je net hebt gebruikt om te posten.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

In HTTP ben je verplicht een (volledige) absolute url op te geven bij de Refresh- en Location-header. Meestal zal het met relatieve url's wel goed gaan, maar dat is geen garantie dat het ook goed gaat. Dus kijk eerst eens of exact hetzelfde script met volledige url's (inclusief http) wel goed gaat.

Heb je trouwens al output gestuurd naar de gebruiker bij die functie? Want de meta-tags horen eigenlijk ook aan het begin te staan he?

[ Voor 20% gewijzigd door ACM op 29-05-2005 17:29 ]


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Ik heb het nu opgelost door de form afhandeling niet meer in de head van hetzelfde bestand te doen maar in een appart bestand. Maar aangezien ik het in de head deed, zou het toch niks moeten uitmaken denk ik maar er zal wel een goede reden voor zijn.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

http://www.w3.org/Protoco...c2616-sec14.html#sec14.30

location moet met een hoofdletter beginnen. En een absolute url hebben...

Programmer - an organism that turns coffee into software.

Pagina: 1