Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

PHP Gastenboek Error

None
7 antwoorden
  • >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("
    ",'{{{',$_GET['message']);
    fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y H:i:s').'|||'.$_GET['url'].'|||'.$message."
    ");
    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('{{{',"
    ",$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>'."
    ";
    echo '<TR><TD colspan="3"><SPAN class="SUR">'.str_replace("
    ",'<BR>',htmlspecialchars($message)).'</SPAN></TD></TR>'."
    ";
    echo '<TR><TD colspan="3"><HR></TD></TR>'."
    ";
    }
    ?>
    </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("
    ",'{{{',$_GET['message']);
    fwrite($file,$_GET['name'].'|||'.$_GET['email'].'|||'.date('d-m-Y H:i:s').'|||'.$_GET['url'].'|||'.$message."
    ");
    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]
  • 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 conditioneel te tonen of buffering in te bouwen. Aan jouw de keuze.
  • Daarnaast moet je nooit en te nimmer files die je include de extensie .inc geven, die worden vrijwel nooit door de php-parser verwerkt en zullen dus of te downloaden zijn als je ze aanroept, of als tekst weergegeven worden. Mag jij zelf raden wat je daar allemaal mee zou kunnen doen ;)
  • jeuh! mag ik raden ?????
    en wat kan ik winnen?
    ;) :P
  • Mag je wel *.inc.php?
  • ja.

    t.
  • Thnx

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.