Naughtygirl
Gebruiker
- Lid geworden
- 17 jan 2009
- Berichten
- 174
Ik heb een contactpagina met een formulier die verstuurd wordt naar een mailadres.
Dit is de contact.php:
Dit is de send.php:
En dit is de captcha.php:
Nu is het zo dat er een session_start(); bovenaan de pagina moet staan. Als ik dat doe, komt er de volgende tekst te staan:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\mnddb\Contact.php:1) in C:\xampp\htdocs\mnddb\Contact.php on line 2
Als ik de session_start(); weglaat, verstuurt ie het contactformulier niet. Hoe moet ik die session_start(); dan verwerken, zonder die warning te krijgen?
Dit is de contact.php:
PHP:
<?php
$pageTitle = "Contact";
include("send.php");
include("header.php");
?>
<div id="menu">
<?php include('menu.php') ?>
</div>
<div id="content">
<h1 class="architects">Contact</h1>
<p>
Heeft u nog vragen en/of opmerkingen, schroom dan niet om ons te bellen of stuur een bericht via onderstaand contact formulier.
</p><br /><br />
<h2>Wanneer zijn wij open</h2>
<p>
Dinsdagavond van 18:30 uur tot 23:00 uur<br />
Donderdagavond van 19:00 uur tot 23:00 uur<br /><br />
Wilt u eens komen kijken, maak dan een afspraak per telefoon.<br /><br />
Slotraceclub - Met Nocht Deur De Bocht<br />
Hemmemaweg 24<br />
9076 PH Sint Annaparochie<br />
Tel: 0518-409600
</p><br /><br />
<form class="contact" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label class="contact-label" for="naam">Naam*:</label>
<input class="contact-input" type="text" id="naam" name="naam" /><br />
<label class="contact-label" for="email">E-mail*:</label>
<input class="contact-input" type="text" id="email" name="email" /><br />
<label class="contact-label" for="bericht">Bericht*:</label>
<textarea class="contact-textarea" id="bericht" name="bericht"></textarea><br />
<label class="contact-label" for="code">Typ de code*:</label>
<input class="captcha-input" type="text" id="code" name="code" />
<img class="cap" src="captcha.php" /><br />
Velden met een * zijn verplicht.<br />
<?php if(!empty($error)) echo '<div class="error">'.$error.'</div>'; ?>
<?php if(!empty($accept)) echo '<div class="accept">'.$accept.'</div>'; ?>
<input class="verz" type="submit" value="Verzenden" name="submit" />
</form><br /><br /><br />
<iframe width="550" height="400" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.nl/maps?f=q&source=s_q&hl=nl&geocode=&q=Hemmemaweg+24,+St.+Annaparochie&sll=52.469397,5.509644&sspn=5.428778,9.876709&ie=UTF8&hq=&hnear=Hemmemaweg+24,+Sint+Annaparochie,+Het+Bildt,+Friesland&z=16&ll=53.270579,5.658525&output=embed">
</iframe>
<br />
<small>
<a href="http://maps.google.nl/maps?f=q&source=embed&hl=nl&geocode=&q=Hemmemaweg+24,+St.+Annaparochie&sll=52.469397,5.509644&sspn=5.428778,9.876709&ie=UTF8&hq=&hnear=Hemmemaweg+24,+Sint+Annaparochie,+Het+Bildt,+Friesland&z=14&ll=53.270579,5.658525" style="color:#ff0000;text-align:left">Grotere kaart weergeven</a>
</small>
</div>
<div id="blokken">
<?php include('mini_agenda.php') ?>
<?php include('mini_nieuws.php') ?>
<?php include('mini_sponsor.php') ?>
</div>
<?php include('footer.php') ?>
Dit is de send.php:
PHP:
<?php
function checkEmail($email)
{
return preg_match('/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i', $email);
}
$name = '';
$email = '';
$bericht = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if($_POST['code'] == $_SESSION['rand_code']){
$naam = htmlentities($_POST['naam']);
$email = htmlentities($_POST['email']);
$bericht = htmlentities($_POST['bericht']);
// Controleer of er lege velden tussen zitten
if(!empty($_POST['naam']) && !empty($_POST['email']) && !empty($_POST['bericht']) && !empty($_POST['code'])) {
// Controleer of er een geldig e-mailadres is ingevoerd
if(checkEmail($email)) {
// send email
$to = 'mijn_email';
$subject = 'Contactformulier';
$msg = "Naam: $naam\n" .
"E-mail: $email\n" .
"Bericht: \n$bericht";
mail($to, $subject, $msg, 'From:' . $email);
$accept = "Formulier is verstuurd!";
} else {
$error = "Ongeldig e-mailadres";
}
} else {
$error = "Niet alles is ingevuld.";
}
} else {
$error = "Onjuiste code";
}
}
?>
En dit is de captcha.php:
PHP:
<?php
session_start();
$string = '';
for ($i = 0; $i <5; $i++) {
$string .= chr(rand(97, 122));
}
$_SESSION['rand_code'] = $string;
$dir = 'Gastenboek/';
// image grootte
$image = imagecreatetruecolor(100, 25);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 200, 100, 90); // red
$white = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, 399, 99, $white);
// text grootte, diagonaal, padding left, padding top
imagettftext ($image, 15, 0, 5, 18, $color, $dir."calibri.ttf", $_SESSION['rand_code']);
header("Content-type: image/png");
imagepng($image);
?>
Nu is het zo dat er een session_start(); bovenaan de pagina moet staan. Als ik dat doe, komt er de volgende tekst te staan:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\mnddb\Contact.php:1) in C:\xampp\htdocs\mnddb\Contact.php on line 2
Als ik de session_start(); weglaat, verstuurt ie het contactformulier niet. Hoe moet ik die session_start(); dan verwerken, zonder die warning te krijgen?
Laatst bewerkt door een moderator: