session_start();

Status
Niet open voor verdere reacties.

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:

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&amp;source=s_q&amp;hl=nl&amp;geocode=&amp;q=Hemmemaweg+24,+St.+Annaparochie&amp;sll=52.469397,5.509644&amp;sspn=5.428778,9.876709&amp;ie=UTF8&amp;hq=&amp;hnear=Hemmemaweg+24,+Sint+Annaparochie,+Het+Bildt,+Friesland&amp;z=16&amp;ll=53.270579,5.658525&amp;output=embed">
		</iframe>
		<br />
		<small>
			<a href="http://maps.google.nl/maps?f=q&amp;source=embed&amp;hl=nl&amp;geocode=&amp;q=Hemmemaweg+24,+St.+Annaparochie&amp;sll=52.469397,5.509644&amp;sspn=5.428778,9.876709&amp;ie=UTF8&amp;hq=&amp;hnear=Hemmemaweg+24,+Sint+Annaparochie,+Het+Bildt,+Friesland&amp;z=14&amp;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:
Een veelvoorkomende oorzaak is een spatie na de ?>

Het is niet noodzakelijk om aan het einde van je document de PHP-tag af te sluiten.
Haal de "?>" eens weg op het einde van send.php en header.php :)

Verder mist er een ";" op de regels 8, 60, 62, 64 en 67 in contact.php volgens mij ;)
 
Laatst bewerkt:
Ik heb de "?>" weggehaald aan het einde van de send.php, in de header.php heb ik er geen.
Ook heb ik de ";" geplaatst op de plaatsen die je zei. Krijg nog steeds dezelfde warning.
 
Het zal ergens in de eerste paar regels van contact.php moeten zitten.
Maak daar dit eens van zodat alle tabs en/of spaties er uit zijn:
PHP:
<?php
$pageTitle = "Contact";
include("send.php");
include("header.php");
?>

Er wordt verder niks geïncludet? of wordt contact.php door een ander bestand geïncludet?
 
Als ik dit heb zonder spaties en/of tabs, en ook zonder die sessie_start(); verstuurd hij het formulier niet en krijg ik de melding van Onjuiste code.

PHP:
<?php
$pageTitle = "Contact";
include("send.php");
include("header.php");
?>

Er wordt verder niets, dan wat je hierboven in contact.php ziet, meer geincluded.
 
Laatst bewerkt:
Ik vind de regelnummers die in de waarschuwing genoemd worden vreemd. Dat je deze melding krijgt kan ik me verder wel voorstellen. "Session_start()" is de eerste regel van captcha.php en captcha.php wordt gebruikt op regel 41 van contact.php. Daarboven staat al een hoop HTML. Probeer eens om de regel "session_start();" in captcha.php weg te halen en plaats deze regel dan eens helemaal bovenaan (onder de regel "<?php") in contact.php.
 
Het lijkt mij ook niet te gaan om de session_start(); binnen captcha.php.

Met dat bestand doe je immers niks, je gebruikt alleen de URL om een afbeelding te krijgen.

Je moet overigens ook in send.php of in contact.php de functie session_start(); bovenaan aanroepen anders kun je op regel 13 van send.php die $_SESSION-variabele volgens mij niet uitlezen.

[edit]
Hoe kan het trouwens dat het nu ineens niet meer werkt terwijl wij dit voorheen in orde hadden gemaakt? http://www.helpmij.nl/forum/showthread.php/728981-PHP-formulier-checken-en-spam-vrij-versturen/page3[/edit]
 
Laatst bewerkt:
Ik maakte toen nog geen gebruik van .php bestanden. Ik heb nu alle pagina's omgezet in .php en daarbij de header, het menu en de footer apart in een .php bestand, zodat wanneer ik bv iets moest veranderen niet bij alle pagina's hoefde langs te gaan. De header, het menu en de footer bestanden include ik nu in de andere pagina's.

Ik heb nu dit gedaan:
PHP:
<?php
session_start();
$pageTitle = 'Contact';
include('send');
include('header');
?>

en dan werkt het wel. Ik had dit eerst ook geprobeert, maar dan met tabs ertussen. Ik dacht dat tabs niet veel uitmaakte.
oh en ik heb session_start(); in de captcha.php
 
mischien dit iets voor je

miisschien is dit is voor je

noem deze pagia contact.html
PHP:
<h2 align="center"><font size="6">Contact</font></h2>
<p align="center"><body><!------Created by www.moffia.nl------->
<form method="post" action="process.php">
<table width="455" bgcolor="#EEEEEE" border="0">
<tr><td valign="top">Naam :</td>
<td valign="top"><input type="text" name="t1"></td></tr>
<tr><td valign="top">Email :</td>
<td valign="top"><input type="email" name="t2"></td></tr>
<tr><td valign="top">Onderwerp :</td>
<td valign="top"><input type="text" name="t3"></td></tr>
<tr><td valign="top">opmerking</td>
<td valign="top"><textarea name="t4" cols="20" rows="10">plaats uwe bericht</textarea></td></tr>
<tr><td>gemaakt door  <a href="www.moffia.nl/">John pagina</a></td>
<td><input type="submit" value="Verzenden"></td></tr></table>
    <p align="center">&copy; copyright made bij john <BR>



noem de volgende pagina process.php
PHP:
<?php 
//This script is created by http://www.moffia.nl 
//You can remain use this free service as long as you retain the credit link 
 
$mailTo = 'vul hier je email in '; 
$mailSubject = 'vul hier je website aderss in'; 
 
$mailMessage = 
'Naam:: '. $_POST['t1'] ."\r\n". 
'E-mail :: '. $_POST['t2'] ."\r\n". 
'Onderwerp :: '. $_POST['t3'] ."\r\n". 
'Opmerking :: '. $_POST['t4']; 
 
$mailHeaders = 'From '. $_POST['t1'] .' <'. $_POST['t2'] .'>'. "/r/n"; 
$mailHeaders .= 'X-Mailer: PHP/' . phpversion(); 
 
if(mail($mailTo, $mailSubject, $mailMessage, $mailHeaders)) { 
  echo '<html><head>'; 
  echo '<meta http-equiv="refresh" content="0;URL=http://www.moffia.nl/">'; 
  echo '</head><body>Email send....'; 
  echo '</body></html>'; 
} 
?>
ik hoop dat je hier wat aan heb
 
moet wel be kennen hiewr zit geen enkle check in of email goed is of scheldwoorden
 
en in html 5 is een extra pagina niet eens meer nodig
simpel kan al met een formulier
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan