Hoi!

Ik heb ff een vraagje over een php formulier. Op mijn website kun je middels een contactformulier mij iets vragen of iets dergelijks.
In het script zit een captcha verwerkt en godzijdank werkt het allemaal.
Wanneer je het formulier, hoe dan ook, foutief invult geeft ie inderdaad de melding dat er ontbrekende gegevens zijn. Wanneer je het formulier goed invult komt er inbeeld dat het opsturen is geslaagd, maar daar gaat het fout. Hij geeft dan een header error en stopt dan met het script omdat er na 3 seconden een doorverwijzing zou moeten zijn naar de homepage.

(De e-mail komt trouwens wel compleet aan)

Kan iemand me helpen?

Voor een voorbeeld moet je ff het formulier goed invullen op:
http://www.pds-galaxis.nl/contact.php

Gr

Bob
Heeft iemand een http header voorbeeld? Ik ben niet echt thuis is PHP scripts.

Bob

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Post het script hier anders eens. Ik denk dat we met zijn allen aan het miscommuniceren zijn. Als je niet weet welk stuk dan het liefst helemaal.
De gehele pagina:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Party Disco Show GALAXIS | Contact |</title>
<link href="opmaak.css" rel="stylesheet" type="text/css" />
</head>
<body>


<div id="container">

<div id="header1">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="698" height="227">
    <param name="movie" value="images/menu pds.swf" />
    <param name="quality" value="high" />
    <embed src="images/menu pds.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="698" height="227"></embed>
  </object>
</div>
<div id="content">
  <table width="550" align="center">
    <tr bgcolor="#191919">
      <td><div id="div"><p>
		<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

ob_start();
// Config Gedeelte
$cfg['url'] = "http://www.pds-galaxis.nl/index.html"; // Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg['naam'] = "Bob Laarmans";                // Webmaster naam
$cfg['email'] = "[email protected]";        // Webmaster E-mail
$cfg['spam'] = 60;                        // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$cfg['text'] = TRUE;                    // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['input'] = TRUE;                    // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['HTML'] = TRUE;                    // Een HTML email ( TRUE voor aan, FALSE voor uit )
$cfg['CAPTCHA'] = TRUE;                    // CAPTCHA ( TRUE voor aan, FALSE voor uit )


// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail($email)
{
    if(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email))
    {
        return TRUE;
    }
    return FALSE;
}

$formulier = TRUE;

if(!isset($_COOKIE['formulier']))
{
    if(isset($_POST['wis']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
    {
        foreach($_POST as $key => $value)
        {
            unset($value);
        }
        header("Location: ".$_SERVER['PHP_SELF']."");
    }

    if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
    {
        $aFout = array();

        $naam = trim($_POST['naam']);
        $email = trim($_POST['email']);
        $onderwerp = trim($_POST['onderwerp']);
        $bericht = trim($_POST['bericht']);

        if($cfg['CAPTCHA'])
        {
            $code = $_POST['code'];
        }

        if(empty($naam) || (strlen($naam) < 3) || eregi("[<>]", $naam) )
        {
            $aFout[] = "Er is geen naam ingevuld.";
            unset($naam);
            $fout['text']['naam'] = TRUE;
            $fout['input']['naam'] = TRUE;
        }
        if(empty($email))
        {
            $aFout[] = "Er is geen e-mail adres ingevuld.";
            unset($email);
            $fout['text']['email'] = TRUE;
            $fout['input']['email'] = TRUE;
        }
        elseif(checkmail($email) == 0)
        // Wanneer je PHP 5.2 > gebruikt
        //elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            $aFout[] = "Er is geen correct e-mail adres ingevuld.";
            unset($email);
            $fout['text']['email'] = TRUE;
            $fout['input']['email'] = TRUE;
        }
        if(empty($onderwerp))
        {
            $aFout[] = "Er is geen onderwerp ingevuld.";
            unset($onderwerp);
            $fout['text']['onderwerp'] = TRUE;
            $fout['input']['onderwerp'] = TRUE;
        }
        if(empty($bericht))
        {
            $aFout[] = "Er is geen bericht ingevuld.";
            unset($bericht);
            $fout['text']['bericht'] = TRUE;
            $fout['input']['bericht'] = TRUE;
        }
        if($cfg['CAPTCHA'])
        {
            if(strtoupper($code) != $_SESSION['captcha_code'])
            {
                $aFout[] = "Er is geen correcte code ingevuld.";
                $fout['text']['code'] = TRUE;
                $fout['input']['code'] = TRUE;
            }
        }
        if(!$cfg['text'])
        {
            unset($fout['text']);
        }
        if(!$cfg['input'])
        {
            unset($fout['input']);
        }
        if(!empty( $aFout ))
        {
            $errors = '
            <div id="errors">
            <ul>';
            foreach($aFout as $sFout)
            {
                $errors .= "    <li>".$sFout."</li>\n";
            }
            $errors .= "</ul>
            </div>";
        }
        else
        {
            $formulier = FALSE;


            if($cfg['HTML'])
            {
                // Headers
                $headers = "From: \"Contact Formulier\" <".$cfg['email'].">\r\n";
                $headers .= "Reply-To: \"".$naam."\" <".$email.">\n";
                $headers .= "Return-Path: Mail-Error <".$cfg['email'].">\n";
                $headers .= "MIME-Version: 1.0\n";
                $headers .= "Content-Transfer-Encoding: 8bit\n";
                $headers .= "Content-type: text/html; charset=iso-8859-1\n";


                $bericht = '





                <br />
                --------------------------------------------------------------------------<br />
                <u><i>HET VOLGENDE BERICHT IS VERSTUURD VIA HET CONTACTFORMULIER OP PDS-GALAXIS.NL:</i></u><br />
                <b>Naam:</b> '.$naam.'<br />
                <b>Email:</b> <a href=\"mailto:'.$email.'\">'.$email.'</a><br />
                <br />
                <b>Bericht:</b><br />
                '.$bericht.'
                <br />
                <br />
                <br />
                --------------------------------------------------------------------------<br />
                <b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
                <b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
                <b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
                ';
            }
            else
            {
                $bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
                // Headers
                $headers = "From: \"Contact Formulier\" <".$cfg['email'].">\n";
                $headers .= "MIME-Version: 1.0\n";
                $headers .= "Content-type: text/plain; charset='iso-8859-1'\n";

                // Bericht
                $message = "Naam: ".$naam."        \n";
                $message .= "E-mail: ".$email."     \n";
                $message .= "Bericht:\n".$bericht_wrap."     \n ";
                $message .= "               \n ";
                $message .= "Datum: ".date("d-m-Y H:i:s")." \n";
                $message .= "------------------------------------------------------- \n ";
                $message .= "IP: ".$_SERVER['REMOTE_ADDR']."                    \n ";
                $message .= "Host: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])."                \n ";

            }

            if(mail($cfg['email'], "[Contact] ".$onderwerp, $bericht, $headers))
            {
                if(isset($_POST['stuurkopie']))
                {
                    $headers = "From: \"Contact Formulier\" <".$email.">\r\n";
                    $headers .= "Reply-To: \"".$naam."\" <".$email.">\n";
                    $headers .= "Return-Path: Mail-Error <".$email.">\n";
                    $headers .= "MIME-Version: 1.0\n";
                    $headers .= "Content-Transfer-Encoding: 8bit\n";
                    $headers .= "Content-type: text/html; charset=iso-8859-1\n";

                    mail($email, "[Contact] ".$onderwerp, $bericht, $headers);

                }

                unset($naam, $email, $onderwerp, $bericht);
                setcookie("formulier", 1, time() + ( $cfg['spam'] * 60 ) );

                echo "
                <p>
                Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.<br />
                <br />
                Met vriendelijke groeten,<br />
                <b>".$cfg['naam']."</b>
                </p>
                ";
            }
            else
            {
                echo "Er is een fout opgetreden bij het verzenden van de email";
            }
            header("refresh:3;url=".$cfg['url']."");
        }
    }
    if($formulier)
    {
    ?>





    <div id="container">
    <?php
    if(isset($errors)) {
        echo $errors;
    }
    ?>

<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
  <table border="0" align="center" width="75%">
    <tr>
      <td><label <?php if(isset($fout['text']['naam'])) { echo 'class="fout"'; } ?>>Naam:</label></td>
	  <td><input type="text" id="naam" name="naam" maxlength="30" <?php if(isset($fout['input']['naam'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($naam)) { echo stripslashes($naam); } ?>" /><br /></td>
    </tr>
	<tr>
	  <td><label <?php if(isset($fout['text']['email'])) { echo 'class="fout"'; } ?>>Email:</label></td>
      <td><input type="text" id="email" name="email" maxlength="255" <?php if(isset($fout['input']['email'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($email)) { echo stripslashes($email); } ?>" /><br /></td>
    </tr>
	<tr>
	  <td><label <?php if(isset($fout['text']['onderwerp'])) { echo 'class="fout"'; } ?>>Onderwerp:</label></td>
      <td><input type="text" id="onderwerp" name="onderwerp" maxlength="40" <?php if(isset($fout['input']['onderwerp'])) { echo 'class="fout'; } ?> value="<?php if (!empty($onderwerp)) { echo stripslashes($onderwerp); } ?>" /><br /></td>
    </tr>
	<tr>
	 <td><label <?php if(isset($fout['text']['bericht'])) { echo 'class="fout"'; } ?>>Bericht:</label></td>
     <td><textarea id="bericht" name="bericht" <?php if(isset($fout['input']['bericht'])) { echo 'class="fout"'; } ?> cols="35" rows="6"><?php if (!empty($bericht)) { echo stripslashes($bericht); } ?></textarea><br /></td>
    </tr>
        <?php
        if($cfg['CAPTCHA'])
        {
        ?>
		 <tr>
          <td><label></label></td>
              <td><img src="captcha.php" alt="" /><br /></td>

		 </tr>
         <tr>
          <td><label <?php if(isset($fout['text']['code'])) { echo 'class="fout"'; } ?>>Code:</label></td>
          <td><input type="text" id="code" name="code" maxlength="4" size="4" <?php if(isset($fout['input']['code'])) { echo 'class="captcha fout"'; } ?> /><br /></td>
         </tr>
        <?php
        }
        ?>

		<tr>
		 <td colspan="2"><label for="stuurkopie">Stuur mij een kopie</label><input type="checkbox" id="stuurkopie" name="stuurkopie" value="1" /><br /></td>
        </tr>
        <tr>
         <td colspan="2"><label></label>
           <input type="submit" id="verzenden" name="verzenden" value="verzenden" /></td>
		</tr>
  </table>
        </p>
        </form>
    </div>

    <?php
    }
}
else
{
    echo "
    <p>
    U kunt maar eens in de ".$cfg['spam']." minuten een e-mail versturen!<br />
    U wordt nu automatisch doorgestuurd.
    </p>";
    header("refresh:3;url=".$cfg['url']."");
}
?>

      </div></td>
    </tr>
  </table>
  <p><center><script type="text/javascript"><!--
google_ad_client = "pub-2335145032074541";
/* 468x60, gemaakt 26-2-09 */
google_ad_slot = "6628201296";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center>
</div>

		<div id="afteller">
		<table style="width: 540px; text-align: left; margin-left: auto; margin-right: auto;">
        	<tbody>
          	<tr>
            <td valign="bottom">
	<br>
			</td>
          	</tr>
        	</tbody>
	</table>
		</div>

<div class="style1" id="footer"><br/>
© Party Disco Show GALAXIS 2009. Alle rechten voorbehouden.
  </div>

</div>


</body>
</html>


Ik ben zelf niet echt een held zoals ik al zei.

Bob
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

ob_start();
?>

pleur dat bovenaan de pagina (regel 0 dus) ipv halverwege, en tis opgelost... :)
Leon, haal die ob_start weg voordat het te laat is! Anders vergaat de aarde! (Nou ja, bij wijze van spreken)

edit: Enige is, dan is het nog niet opgelost :P
Zorg dat je alle output pas output als het nodig is, en niet eerder.

<?php
    // Verwerking
    // Checkje hier en daar
    $tekst = 'Succesvol verstuurd';
    header('Refresh: 3;url=pagina.php');
?>
<!DOCTYPE [..]

<p><?php echo $tekst; ?></p>
@wilemJan

hmm, ja idd, niet eens naar gekeken als ik eerlijk ben xD had gwn ff z'n headers gecopy paste :P

maar idd, ob_start == Earth Destruction...
Leon Kunst schreef op 18.03.2009 21:25
@wilemJan

hmm, ja idd, niet eens naar gekeken als ik eerlijk ben xD had gwn ff z'n headers gecopy paste :P

maar idd, ob_start == Earth Destruction...

Niet om meteen topic te jatten en kut te gaan doen. Maar dat is ook weer niet waar, ob_start op zichzelf is niks mis mee, maar om het te gebruiken om je headers een beetje te ontwijken is natuurlijk grote onzin.
@Topic starter

Leuke website maar de foto's bij crew zou ik nog even verkleinen of laten verkleinen voordat ze op de site komen. 1155px × 768px (geschaald naar 250px × 180px)

Scheelt weer laadtijd ;)

Reageren