[php] Header already sent...:( ahh!

Pagina: 1
Acties:

  • sjares
  • Registratie: September 2001
  • Laatst online: 16-08 23:03
Ik weet dat het stom klinkt, en ja ik heb de manual ook al volledig doorgelezen, maar ik kom er echt niet uit en ik wordt er echt frustie van!!!

Ik wil dus gewoon een nieuwe pagina openen met header('Location: bedankt.php');

Ik krijg dan een fout op regel 7. Maar daar wordt helemaal geen output gegenereerd??? Wat is een header precies??

Heb het ook al met ob_start(); & ob_end_flush(); geprobeert op te lossen, maar dat werkt niet....

Ik wordt er echt gek van! :r

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

pleur regel 1-8 eens neer :)

Klaar voor een nieuwe uitdaging.


Verwijderd

Waarschijnlijk include je iets dat cookies verstuurt. Zonder source code blijft het echter gokwerk.

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Als je zoiets hebt:
PHP:
1
2
3
4
  
<?
header("Location: bedankt.php");
?>

Gaat het ook fout hè? Die <? moet op de eerste regel staan. Of praat ik nou poep? 8)7

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21-08 06:33

Tux

echo "<script>parent.location='bedankt.php'</script>";

Dat doe ik altijd als header("Location: "); niet wil en ik te lui ben om het aan te gaan passen :P


[edit]
elviver schreef op 13 oktober 2002 @ 14:43:
Als je zoiets hebt:
PHP:
1
2
3
4
  
<?
header("Location: bedankt.php");
?>

Gaat het ook fout hè? Die <? moet op de eerste regel staan. Of praat ik nou poep? 8)7
Ja dan gaat het ook fout.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • sjares
  • Registratie: September 2001
  • Laatst online: 16-08 23:03
Oke: de source: http://members.lycos.nl/sjares/plaatsen.txt
Bekijken: http://members.lycos.nl/sjares/plaatsen.php

Niet lachen, want het is een troep, maar ik probeer maar wat want ik ben nog erg nieuwbie, ideen zijn dus welkom :)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ja, dat klopt dus ook wel.
Je zal je hele code moeten her-indelen :)

if ($submit) { if ($naam == "") {
is mooier als:
if ($submit && $naam == "") {

zet die if($submit) onderaan eens bovenaan...

Klaar voor een nieuwe uitdaging.


  • sjares
  • Registratie: September 2001
  • Laatst online: 16-08 23:03
chem schreef op 13 oktober 2002 @ 14:54:
ja, dat klopt dus ook wel.
Je zal je hele code moeten her-indelen :)

if ($submit) { if ($naam == "") {
is mooier als:
if ($submit && $naam == "") {

zet die if($submit) onderaan eens bovenaan...
done, zie nieuwe txt. Het werkt alleen nog steeds niet... Misschien toch maar dat javascriptje gebruiken dan? Ik wil wel graag php doen, maar ja het schijnt nogal een lastig probleem te zijn...
Hoe kan ik trouwens mijn variabelen die die als fout aan geeft leeg (NULL) krijgen?
Opzich is het niet belangrijk, maar staat wel weer 'error-netter' :).

Verwijderd

Je mag totaal geen output genereren voor de redirect, dus als je een lege regel of HTML code buiten de PHP haken hebt staan voor de redirect, gaat het al mis.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

met ob_start() bovenin je code zou het gewoon moeten werken... misschien een ob_end_clean() voor je header() als het echt ergens midden in je code is.. maar normaal moet alleen output buffering genoeg zijn...

  • sjares
  • Registratie: September 2001
  • Laatst online: 16-08 23:03
Bosmonster schreef op 13 oktober 2002 @ 16:58:
met ob_start() bovenin je code zou het gewoon moeten werken... misschien een ob_end_clean() voor je header() als het echt ergens midden in je code is.. maar normaal moet alleen output buffering genoeg zijn...
Weer geprobeert en de code wat gehusseld, maar het werkt nog steeds niet. Dan maar met Javascript :X ;(

Verwijderd

ik gebruik altijd dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
function redirect($url)
{
    if(headers_sent())
    {
        echo "<meta HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=$url\">";
    }
    else
    {
        header("location: $url");
    }
}

werkt ook voor browsers zonder java script

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
In de manual staat volgens mij toch echt dat het handig is om het zo te doen:
PHP:
1
2
header('Location: url');
exit;

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

sjares schreef op 13 oktober 2002 @ 17:33:
Weer geprobeert en de code wat gehusseld, maar het werkt nog steeds niet. Dan maar met Javascript :X ;(

Dan komt er toch echt output....
Evt van included files etc etc.

Wat je kan doen is alles wat je nu ook doet, maar dan de Header-functie even uitzetten en bijv "print('Geen output voor dit statement');" zodat je alle output die komt kan bekijken (en doe dat via View-source, niet in je browser venster zelf anders)

Dan kan je prima zien of er al output voorstaat, bijv lege regels erboven, spaties etc.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Als ik me niet vergis geven nieuwere versies van PHP heel aardig aan waar de eerste ouput precies begint zodra je een header-call doet na wat output. Misschien een idee om je php versie te upgraden?

|_____vakje______|


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

ACM schreef op 13 oktober 2002 @ 22:49:
[nohtml]
[...]
[/nohtml]
Dan komt er toch echt output....
Evt van included files etc etc.

Wat je kan doen is alles wat je nu ook doet, maar dan de Header-functie even uitzetten en bijv "print('Geen output voor dit statement');" zodat je alle output die komt kan bekijken (en doe dat via View-source, niet in je browser venster zelf anders)

Dan kan je prima zien of er al output voorstaat, bijv lege regels erboven, spaties etc.


Maar juist ob_start() zou er voor moeten zorgen dat er geen output plaats vindt voor dat je script klaar is.. En je dus op ieder willekeurig moment nog headers toe kan voegen.

Tenminste zo interpreteer ik output buffering en zo werkt het bij mij ook :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

CyberSnooP:
Als ik me niet vergis geven nieuwere versies van PHP heel aardig aan waar de eerste ouput precies begint zodra je een header-call doet na wat output. Misschien een idee om je php versie te upgraden?


Inderdaad. De aard van zo'n error zou moeten zijn: "Cannot send output, headers already sent. Output started at line x in file y". Eitje debuggen lijkt me :Y)
chem: if ($submit)
:X ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

elviver schreef op 13 oktober 2002 @ 14:43:

Gaat het ook fout hè? Die <? moet op de eerste regel staan. Of praat ik nou poep? 8)7
Hou het er maar op dat je poep praat. Als je header already send hebt kun je er vanuit gaat dan je al iets echo'ed voordat je de header send.

Verwijderd

Verwijderd schreef op 14 oktober 2002 @ 01:38:
[...]
Hou het er maar op dat je poep praat. Als je header already send hebt kun je er vanuit gaat dan je al iets echo'ed voordat je de header send.
Jij praat poep want je leest niet eens wat hij schrijft.
Toepasselijke nick trouwens :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 14 oktober 2002 @ 01:38:
[...]


Hou het er maar op dat je poep praat. Als je header already send hebt kun je er vanuit gaat dan je al iets echo'ed voordat je de header send.
je praat zelf poep. Alle tekens die niet tussen <? en ?> staan worden gewoon direct naar de output geschreven. Als de <? niet op de eerste regel staat zal er dus een enter geoutput worden, en krijg je een error als je headers probeert te zenden.

Maar blijkbaar is het probleem opgelost, want het linkje dat ie eerder gaf werkt goed... fijn dat ie dat dan ook even in z'n topic meldt :{

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bosmonster schreef op 14 oktober 2002 @ 00:17:
Maar juist ob_start() zou er voor moeten zorgen dat er geen output plaats vindt voor dat je script klaar is.. En je dus op ieder willekeurig moment nog headers toe kan voegen.

Tenminste zo interpreteer ik output buffering en zo werkt het bij mij ook :)

outputbuffering start pas op het moment dat je ob_start() roept ;)

Dus:
PHP:
1
2
3
4
// Lege regel
<?
ob_start();
?>

Gaat net zo goed fout.
Pagina: 1