Goedemorgen allemaal,

Ik heb een probleem met een stuk codering.
Dit is het html gedeelte
						<form name="ajax-form" id="ajax-form" action="formulier.php" method="post">
							<label for="name">Naam: * 
								<span class="error" id="err-name">Vul alsjeblieft uw naam in</span>
							</label>
							<input name="name" id="name" type="text" />
							<label for="subject">Onderwerp: *
								<span class="error" id="err-name">Vul alsjeblieft een onderwerp in</span>
							</label>
							<input name="subject" id="subject" type="text" />
							
							<label for="email">E-Mail: * 
								<span class="error" id="err-email">Vul alsjeblieft uw e-mail in</span>
								<span class="error" id="err-emailvld">e-mail is niet geldig</span>
							</label>
							<input name="email" id="email" type="text" />
							<label for="message">Commentaar:</label>
							<textarea name="message" id="message"></textarea>
							<div id="button-con"><button class="send_message" id="send">Verzenden</button></div>	
							<div class="error text-align-center" id="err-form">There was a problem validating the form please check!</div>
							<div class="error text-align-center" id="err-timedout">The connection to the server timed out!</div>
							<div class="error" id="err-state"></div>
						</form>
						<div id="ajaxsuccess">Successfully sent!!</div>	 


En dit het php gedeelte
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!

// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // naam controle
    if (empty($_POST['name']))
        $naam_fout = 1;
    // e-mail controle
    if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
            $email_fout = 1;
    // antiflood controle
    if (!empty($_SESSION['antiflood']))
    {
        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }
}

// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['name']) || !empty($naam_fout) || empty($_POST['email']) || !empty($email_fout) || empty($_POST['message']) || empty($_POST['subject']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (!empty($naam_fout))
            echo '<p>Uw naam is niet ingevuld.</p>';
        elseif (!empty($email_fout))
            echo '<p>Uw e-mailadres is niet juist.</p>';
        elseif (!empty($antiflood))
            echo '<p>U mag slechts &eacute;&eacute;n bericht per ' . $seconde . ' seconde versturen.</p>';
        else
            echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
    }

// versturen naar
else
{      
  // set datum
  $datum = date('d/m/Y H:i:s');
    
  $inhoud_mail = "===================================================\n";
  $inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
  $inhoud_mail .= "===================================================\n\n";
  
  $inhoud_mail .= "Naam: " . htmlspecialchars($_POST['name']) . "\n";
  $inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['email']) . "\n";
  $inhoud_mail .= "Bericht:\n";
  $inhoud_mail .= htmlspecialchars($_POST['message']) . "\n\n";
    
  $inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
    
  $inhoud_mail .= "===================================================\n\n";
  
  // --------------------
  // spambot protectie
  // ------
  // van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
  // ------
  
  $headers = 'From: ' . htmlspecialchars($_POST['name']) . ' <' . $_POST['email'] . '>';
  
  $headers = stripslashes($headers);
  $headers = str_replace('\n', '', $headers); // Verwijder \n
  $headers = str_replace('\r', '', $headers); // Verwijder \r
  $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
  
  $_POST['subject'] = str_replace('\n', '', $_POST['subject']); // Verwijder \n
  $_POST['subject'] = str_replace('\r', '', $_POST['subject']); // Verwijder \r
  $_POST['subject'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['subject'])); // Slashes van quotes
  
  if (mail($mail_ontv, $_POST['subject'], $inhoud_mail, $headers))
  {
      // zorg ervoor dat dezelfde persoon niet kan spammen
      $_SESSION['antiflood'] = time();
      
      echo '<h1>Het contactformulier is verzonden</h1>
      
      <p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
  }
  else
  {
      echo '<h1>Het contactformulier is niet verzonden</h1>
      
      <p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
  }
}
?>


Als ik met HTML bij de php zet werkt die wel, maar zodra mijn html doorverwijst naar een andere pagina werkt hij niet.
Zou iemand mij op weg kunnen helpen?

Met vriendelijke groet,
Staat de PHP-code met session_start() wel helemaal aan het begin?

Voor een PHP-sessie worden sessiecookies gebruikt. En cookies zijn HTTP-headers, die moet worden verzonden vóór HTML-output.
TonnyBoy Verweij op 20/03/2014 10:44:25

Als ik met HTML bij de php zet werkt die wel, maar zodra mijn html doorverwijst naar een andere pagina werkt hij niet.

Ik heb geen idee wat je hier mee bedoelt.

Wat is "Met html bij de php"?
Waarnaar en hoe verwijs je?
Wat werkt er dan niet? Krijg je een foutmelding?
Sorry voor mijn warrige informatie!

Als ik mijn HTML codering met de PHP codering samenvoeg tot 1 bestand dan werkt de code wel.
Maar als ik mijn HTML op index.html zet en de PHP op formulierverzenden.php
En ik richt mijn php file als target dan doet hij het niet.
je moet de formulierverzenden.php in je action hebben staan en niet in je target.


<form name="ajax-form" id="ajax-form" action="formulierverzenden.php" method="post">


en je button als volgt.


 <div id="button-con"><input type="submit" value="verzenden"></div>


Je verwijst nu niet naar de php gedeelte maar naar formulier.php ( wat waarschijnlijk je form is ) maar dat moet dus leeg zijn als het in hetzelfde bestand staat en anders de naam van het bestand waar het in staat.
Reshad F op 20/03/2014 13:15:38

je moet de formulierverzenden.php in je action hebben staan en niet in je target.


<form name="ajax-form" id="ajax-form" action="formulierverzenden.php" method="post">


en je button als volgt.


 <div id="button-con"><input type="submit" value="verzenden"></div>


Je verwijst nu niet naar de php gedeelte maar naar formulier.php ( wat waarschijnlijk je form is ) maar dat moet dus leeg zijn als het in hetzelfde bestand staat en anders de naam van het bestand waar het in staat.


Met mijn HTML is niks verkeerd.
<form name="ajax-form" id="ajax-form" action="formulier.php" method="post">
							<label for="name">Naam: * 
								<span class="error" id="err-name">Vul alsjeblieft uw naam in</span>
							</label>
							<input name="name" id="name" type="text" />
							<label for="subject">Onderwerp: *
								<span class="error" id="err-name">Vul alsjeblieft een onderwerp in</span>
							</label>
							<input name="subject" id="subject" type="text" />
							
							<label for="email">E-Mail: * 
								<span class="error" id="err-email">Vul alsjeblieft uw e-mail in</span>
								<span class="error" id="err-emailvld">e-mail is niet geldig</span>
							</label>
							<input name="email" id="email" type="text" />
							<label for="message">Commentaar:</label>
							<textarea name="message" id="message"></textarea>
							<div id="button-con"><button class="send_message" id="send">Verzenden</button></div>	
							<div class="error text-align-center" id="err-form">There was a problem validating the form please check!</div>
							<div class="error text-align-center" id="err-timedout">The connection to the server timed out!</div>
							<div class="error" id="err-state"></div>
						</form
Behalve dat het niet is ingesprongen.
TonnyBoy Verweij op 20/03/2014 13:18:51

Met mijn HTML is niks verkeerd.
<form name="ajax-form" id="ajax-form" action="formulier.php" method="post">
</form


Misschien toch wel?

TonnyBoy Verweij op 20/03/2014 13:10:20

Maar als ik mijn HTML op index.html zet en de PHP op formulierverzenden.php
En ik richt mijn php file als target dan doet hij het niet.


In je html heb je het over formulier.php en niet over formulierverzenden.php
Obelix en Idefix op 20/03/2014 14:36:09

[quote="TonnyBoy Verweij op 20/03/2014 13:18:51"]
Met mijn HTML is niks verkeerd.
<form name="ajax-form" id="ajax-form" action="formulier.php" method="post">
</form


Misschien toch wel?

TonnyBoy Verweij op 20/03/2014 13:10:20

Maar als ik mijn HTML op index.html zet en de PHP op formulierverzenden.php
En ik richt mijn php file als target dan doet hij het niet.


In je html heb je het over formulier.php en niet over formulierverzenden.php

[/quote]

Ik noemde het als voorbeeld formulierverzenden.php
Het oorspronkelijke bestand is gewoon formulier.php

Reageren