Ga naar inhoud

PHP Gastenboek Error


anoniem

Aanbevolen berichten

>PHP 4.2.3< ik heb een gastenboek die niet goed werkt.. hij schrijft het na het posten wel naar gastenboek.txt maar laad een error zien op het scherm zodra je dan weer naar het gastenboek word doorgelinkt; [quote:bad200432e]Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\Layout\Includes\Gastenboek.inc:6) in c:\phpdev\www\files\gastenboek\gastenboek_overzicht.php on line 14[/quote:bad200432e] gastenboek_overzicht.php; [quote:bad200432e]<?php include("../../Layout/Includes/Gastenboek.inc") ?> <? $amount=15; if ($_GET['action']=='write') { $file=fopen('gastenboek.txt','a'); $message=str_replace("\r",'',$message); $message=str_replace("\n",'{{{',$_GET['message']); fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y H:i:s').'|||'.$_GET['url'].'|||'.$message."\n"); fclose($file); header('location: gastenboek_overzicht.php?action=read&start=0'); } $start=(isset($_GET['start'])?$_GET['start']:0); $gastenboek=Array(); $gastenboek=file('gastenboek.txt'); ?> <HTML><HEAD> <center> <SCRIPT language="JavaScript"> function validate(form) { if (form.name.value=="") { alert("Vul je naam in"); return false; } else if (form.message.value=="") { alert("Vul je bericht in"); return false; } } </SCRIPT> </HEAD> </center> <BODY onLoad="//SUR()"> <P> <TABLE width="100%" cellspacing="0" cellpadding="0"> <TR> <TD height="19" class="tittd"><div align="center"><a href="gastenboek_invul.php" target="_parent">Schrijf een bericht in het gastenboek</a></div></TD> </TR> </TABLE> <TABLE width="100%" cellspacing="0" cellpadding="0"> <TR> <TD class="conttd"> <div align="center">Berichten <? echo $start+1; ?> tot en met <? echo min($start+$amount,sizeof($gastenboek)); ?>.</div> <HR align="center"> <div align="center"> <TABLE width="100%"> <? $gastenboek=array_reverse($gastenboek); for ($i=$start;$i<$start+$amount && $i<sizeof($gastenboek);$i++) { list($name,$email,$date,$url,$message)=explode('|||',$gastenboek[$i]); $message=str_replace('{{{',"\n",$message); echo '<TR><TD><B>'.($email!=""?'<A href="mailto:'.$email.'">'.$name.'</A>':$name).'</B></TD><TD align="center"><B><A href="'.$url.'" target="_blank">'.$url.'</B></TD><TD align="right"><B>'.$date.'</B></TD></TR>'."\n"; echo '<TR><TD colspan="3"><SPAN class="SUR">'.str_replace("\n",'<BR>',htmlspecialchars($message)).'</SPAN></TD></TR>'."\n"; echo '<TR><TD colspan="3"><HR></TD></TR>'."\n"; } ?> </TABLE> <?php if ($start>0) echo '<A href="gastenboek_overzicht.php?start='.max(0,$start-$amount).'"><<<</A> '; if ($start+$amount<sizeof($gastenboek)) echo ' <A href="gastenboek_overzicht.php?start='.($start+$amount).'">>>></A>'; ?> </div></TD> </TR> </TABLE> <P> <TABLE width="100%" cellspacing="0" cellpadding="0"> <TR> <TD class="tittd"><div align="center"></div></TD> </TR> </TABLE> </BODY> </HTML>[/quote:bad200432e] gastenboek_invul.php; [quote:bad200432e] <?php include("../../Layout/Includes/Gastenboek.inc") ?> <? $amount=15; if ($_GET['action']=='write') { $file=fopen('gastenboek.txt','a'); $message=str_replace("\r",'',$message); $message=str_replace("\n",'{{{',$_GET['message']); fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y H:i:s').'|||'.$_GET['url'].'|||'.$message."\n"); fclose($file); header('location: gastenboek_overzicht.php?action=read&start=0'); } $start=(isset($_GET['start'])?$_GET['start']:0); $gastenboek=Array(); $gastenboek=file('gastenboek.txt'); ?> <HTML> <HEAD> <body link="#000000" vlink="#000000" alink="#000000" text="#000000" bgcolor="CAD1D9"> <center> <SCRIPT language="JavaScript"> function validate(form) { if (form.name.value=="") { alert("Vul je naam in"); return false; } else if (form.message.value=="") { alert("Vul je bericht in"); return false; } } </SCRIPT> </HEAD> </center> <BODY onLoad="//SUR()"> <P> <TABLE width="100%" "cellspacing="0" cellpadding="0"> <TR> <TD class="tittd"><div align="center">Invullen gastenboek</div></TD> </TR> </TABLE> <P> <TABLE width="100%" cellspacing="0" cellpadding="0"> <TR> <TD class="tittd"><div align="center"></div></TD> </TR> </TABLE> <TABLE width="100%" cellspacing="0" cellpadding="0"> <TR> <TD class="conttd"> <FORM action="gastenboek_overzicht.php" method="GET" onSubmit="return validate(this);"> <div align="center"> <INPUT type="hidden" name="action" value="write"> <TABLE> <TR> <TD>Naam:</TD> <TD><INPUT type="text" name="name" size="30"></TD> </TR> <TR> <TD>E-Mail:</TD> <TD><INPUT type="text" name="email" size="30"> </TD> </TR> <TR> <TD>Homepage:</TD> <TD><INPUT type="text" name="url" size="30"> </TD> </TR> <TR> <TD height="129">Bericht:</TD> <TD><TEXTAREA name="message" cols="50" rows="5"></TEXTAREA></TD> </TR> </TABLE> <INPUT type="submit" value="Verstuur"> </div> </FORM></TD> </TR> </TABLE> </HTML> </table> </tr> </td> </table>[/quote:bad200432e]
Link naar reactie
De foutmelding wordt veroorzaakt door het feit dat je al output naar de gebruiker hebt gestuurd op het moment dat je een header() wilt schrijven. Waar dat gebeurd staat netjes in de warning die je terugkrijgt (namelijk in de include file). De oplossing is dus om de include file een stukje naar onderen te plaatsen in het script, de output [url=http://www.php.net/manual/en/control-structures.php#control-structures.if]conditioneel[/url] te tonen of [url=http://www.php.net/manual/en/ref.outcontrol.php]buffering[/url] in te bouwen. Aan jouw de keuze.
Link naar reactie
  • 4 weken later...

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...