Recaptcha V2 wordt niet gecontroleerd - andere code

Status
Niet open voor verdere reacties.
Vervang dit:
PHP:
 $captcha_success=json_decode($verify);

door:

PHP:
$captcha_success=json_decode($verify);
echo "<pre>".print_r($captcha_success,true)."</pre>";

Welke melding zie je?
Dit is een debug-tekst, dus dit moet je niet in productie gebruiken.

Hmm... is die POST variabele voor de response niet:
$_POST["g-recaptcha-response"]?
 
Laatst bewerkt:
Zet het <script> vlak boven </form> of vlak boven de Verstuur/Reset buttons.
Optioneel kan je met ?hl=nl de NL taal forceren voor Nederlandse bezoekers met een Engelstalige browser.
Code:
<div class="g-recaptcha" data-sitekey="JOUW_SITE_KEY"></div>
<script src='https://www.google.com/recaptcha/api.js?hl=nl'></script>
</form>

Voor de reCaptcha controle kan je het beste de Google library gebruiken, die werkt goed.
De reCaptcha v2 kan je er als hieronder tussen zetten. De benodigde library heb ik in de 'src' bijlage gezet.
Code:
<?php
date_default_timezone_set('Europe/Amsterdam');

if (isset($_POST['submit'])) {

    // Hieronder zelf invullen voor email
    $emailkruse = "bedrijf@bedrijf.nl";     // Emailadres waarnaar de mail verzonden wordt
    $onderwerp  = "Bericht van de website"; // Onderwerp van de email
    $nextpage   = "Verzonden.php";          // Laat deze pagina als de mail verzonden is
    $emailreply = "noreply@bedrijf.nl";     // Van emailadres + Beantwoorden aan emailadres
    
    // Hieronder zelf invullen voor reCaptcha v2 
    $siteKey    = "SITE_KEY";
    $secret     = "SECRET_KEY";
    $lang       = "nl";

    // Meer uitgebreide header geeft kleinere kans dat email in spambox terecht komt
    $headers[]  = 'MIME-Version: 1.0';
    $headers[]  = 'Content-type: text/html; charset=iso-8859-1';
    $headers[]  = 'To: ' . $emailkruse;
    $headers[]  = 'From: BEDRIJF Online <' . $emailreply . '>';
    $headers[]  = 'Reply-To: ' . $emailreply;
    $headers[]  = 'X-Mailer: PHP/' . phpversion();

    // hier je bercicht samenstellen
    $postcode = $_POST['pc1'] . " " . strtoupper($_POST['pc2']);
    $bericht  = "........";

    // reCaptcha token uit formulier
    $capInput = (isset($_POST['g-recaptcha-response'])) ? $_POST['g-recaptcha-response'] : '';
    $hasToken = (strlen($capInput) == 0) ? false : true;

    // reCaptcha library
    require_once __DIR__ . '/src/autoload.php';

    // Nieuwe instance van de ReCaptcha service
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);

    // Mogelijk is file_get_contents('url') geblokkeerd bij jouw provider.
    // Een alsternatief is fsockopen(). Haal bovenstaande $recaptcha = ... weg en gebruik volgende regel.
    //$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());

    // Verificatie van de response waarbij ook de bezoekers IP wordt gecontroleerd
    $resp = $recaptcha->setExpectedHostname($_SERVER['SERVER_NAME'])
                      ->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
    
    // Controleer de response van $recaptcha->verify
    if ($resp->isSuccess()) {
        $capVerify = true;  // Verificatie gelukt
    } else {
        $capVerify = false; // Verificatie is niet gelukt
    }

    if ($hasToken === true && $capVerify === true) {
        if (mail($emailkruse, $onderwerp, $bericht, $headers)) {
            $mailsuccess = true;
        } else {
            $mailsuccess = false;
        }
    }

    include($nextpage); // Toon de volgende pagina

} else {
?>
 

Bijlagen

  • src.zip
    15,9 KB · Weergaven: 28
Laatst bewerkt:
Code:
$verify=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}")
Het voordeel van een GET request ( siteverify?secret={$secret} ) is weinig code, nadeel is dat iedereen je "secret" kan zien.
Gebruik dus altijd een POST request zoals geadviseerd door Google.
 
Bedankt @php4u en @bron voor de reacties, top weer :thumb:
Ik ga met de voorgestelde / aangepast code mee aan de slag en probeer het uit. Laat het straks weten hoe het loopt.
 
@php4u ik heb jouw regeltje code toegevoegd en dit is de uitslag:

zonder captcha:
PHP:
stdClass Object
(
    [success] => 
    [error-codes] => Array
        (
            [0] => missing-input-response
            [1] => invalid-input-secret
        )

)

met captcha:
PHP:
stdClass Object
(
    [success] => 
    [error-codes] => Array
        (
            [0] => missing-input-response
            [1] => invalid-input-secret
        )

)

zal nu met de code van @bron verder gaan
 
@php4u had wat verkeerd gedaan, de sitekey met de secretkey omgewisseld. De foutcode die ik nu krijg:

PHP:
stdClass Object
(
    [success] => 
    [error-codes] => Array
        (
            [0] => missing-input-response
        )

)
 
@bron begrijp ik goed dat ik een mapje src en een mapje ReCaptacha moet hebben waarin bij src de bestanden appengine-https.php en autoload.php staan?

Als ik dat doe met de aangepaste code krijg ik de volgende melding bij het invullen of niet invullen van de captcha:
Fatal error: Uncaught Error: Class 'ReCaptcha\ReCaptcha' not found in C:\domains\bedrijfsnaam.nl\wwwroot\contact_nl-bron.php:37 Stack trace: #0 {main} thrown in C:\domains\bedrijfsnaam.nl\wwwroot\contact_nl-bron.php on line 37
 
Controleer je paden eens?

Welke PHP-versie draai je nu wel?
 
Hoi! Heb inderdaad wat met de bestanden denk ik toch niet goed gezet; heb nu de map src in de root gezet waar weer de map ReCaptcha in staat met in beide mappen de juiste bestanden.
En wat aangepast. Nu gaat het wel een stuk beter maar nog niet goed.

1. als ik captcha aanvink dan wordt formulier verzonden, krijg ik wel meldingen:
Warning: mail(): Found numeric header (0) in C:\domains\kemp-bv.nl\wwwroot\contact_nl-bron.php on line 55
Warning: mail(): Found numeric header (1) in C:\domains\kemp-bv.nl\wwwroot\contact_nl-bron.php on line 55
Warning: mail(): Found numeric header (2) in C:\domains\kemp-bv.nl\wwwroot\contact_nl-bron.php on line 55
Warning: mail(): Found numeric header (3) in C:\domains\kemp-bv.nl\wwwroot\contact_nl-bron.php on line 55
Warning: mail(): Found numeric header (4) in C:\domains\kemp-bv.nl\wwwroot\contact_nl-bron.php on line 55
Warning: mail(): Found numeric header (5) in C:\domains\kemp-bv.nl\wwwroot\contact_nl-bron.php on line 55

2. als ik zonder captcha op verzenden klik dan ga ik naar de bedankpagina, mail wordt niet verzonden

3. oh ik krijg ook als mail alleen puntjes te zien.

Hieronder zal ik weer de PHP code zetten.
Kan het kloppen dat regels 189,190,191 eruit moeten?

PHP:
<?php
date_default_timezone_set('Europe/Amsterdam');

if (isset($_POST['submit'])) {

    // Hieronder zelf invullen voor email
    $emailkruse = "info@xxxxxxxxxx.nl";     // Emailadres waarnaar de mail verzonden wordt
    $onderwerp  = "Bericht van de website"; // Onderwerp van de email
    $nextpage   = "Verzonden.php";          // Laat deze pagina als de mail verzonden is
    $emailreply = "noreply@xxxxxxxxxxxxx.nl";     // Van emailadres + Beantwoorden aan emailadres
    
    // Hieronder zelf invullen voor reCaptcha v2 
    $siteKey    = "xxxxxx";
    $secret     = "xxxxxxxxxxx-Dvf-_roBpr";
    $lang       = "nl";

    // Meer uitgebreide header geeft kleinere kans dat email in spambox terecht komt
    $headers[]  = 'MIME-Version: 1.0';
    $headers[]  = 'Content-type: text/html; charset=iso-8859-1';
    $headers[]  = 'To: ' . $emailkruse;
    $headers[]  = 'From: BEDRIJF Online <' . $emailreply . '>';
    $headers[]  = 'Reply-To: ' . $emailreply;
    $headers[]  = 'X-Mailer: PHP/' . phpversion();

    // hier je bercicht samenstellen
    $postcode = $_POST['pc1'] . " " . strtoupper($_POST['pc2']);
    $bericht  = "........";

    // reCaptcha token uit formulier
    $capInput = (isset($_POST['g-recaptcha-response'])) ? $_POST['g-recaptcha-response'] : '';
    $hasToken = (strlen($capInput) == 0) ? false : true;

    // reCaptcha library
    require_once __DIR__ . '/src/autoload.php';

    // Nieuwe instance van de ReCaptcha service
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);

    // Mogelijk is file_get_contents('url') geblokkeerd bij jouw provider.
    // Een alsternatief is fsockopen(). Haal bovenstaande $recaptcha = ... weg en gebruik volgende regel.
    //$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());

    // Verificatie van de response waarbij ook de bezoekers IP wordt gecontroleerd
    $resp = $recaptcha->setExpectedHostname($_SERVER['SERVER_NAME'])
                      ->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
    
    // Controleer de response van $recaptcha->verify
    if ($resp->isSuccess()) {
        $capVerify = true;  // Verificatie gelukt
    } else {
        $capVerify = false; // Verificatie is niet gelukt
    }

    if ($hasToken === true && $capVerify === true) {
        if (mail($emailkruse, $onderwerp, $bericht, $headers)) {
            $mailsuccess = true;
        } else {
            $mailsuccess = false;
        }
    }

    include($nextpage); // Toon de volgende pagina

} else {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Kemp-bv | Contactformulier Nederlands</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <!-- **** layout stylesheet **** -->
  <link rel="stylesheet" type="text/css" href="css/style/style.css" />

  <!-- **** colour scheme stylesheet **** -->
  <link rel="stylesheet" type="text/css" href="css/style/colour.css" />
</head>

<body>
  <div id="main">
    <div id="logo">
    </div>
    <div id="menu">
      <ul>
        <li><a href="index_nl3.php">Home</a></li>
        <li><a href="technischadvies.php">Technisch advies</a></li>
        <li><a href="projectmanagement.php">Projectmanagement</a></li>
        <li><a href="onderhoud.php">Onderhoud</a></li>
        <li><a href="producten_nl.php">Producten</a></li>
        <li><a href="referentielijst.php">Referentielijst</a></li>
        <li><a id="selected" href="contact_nl.php">Contact</a></li>
        <li><a href="route.php">Route</a></li>
		</ul>
    </div>
    <div id="content">
      <div id="column1">
	    <?php include("include/vlag.php"); ?>
        <?php include("nieuws/laatste.php"); ?>
        <?php include("nieuws/archief.php"); ?>
        <?php include("nieuws/links.php"); ?>
        <?php include("nieuws/beursbericht.php"); ?>
      </div>
      <div id="column2">
                
        <div><p></p>
          <p><span class="left"><img src="images/xxxxxxxxx.png" alt="Logo xxxxxxxxxxxxxx" width="193" height="107" /></span></p>
	          
        </div>
        <!-- **** INSERT PAGE CONTENT HERE **** -->
       
       <form name="form1" id="form1" method="post" action="">
		<table border=0 bordercolor=#ffffff>
 			<tr>
  				<td width="138"><span class="story">Bedrijfsnaam</span></td>
  				<td width="15">:</td>
  				<td><input type="text" maxlenght="50" size="45" name="bedrijf" /></td>
 			</tr>
 			<tr>
   				<td><span class="story">Aanhef</span></td>
  				<td width="15">:</td>
  				<td><select name="aanhef">
                  <option value="Dhr.">De Heer</option>
                  <option value="Mevr.">Mevrouw</option>
                </select></td>
		  </tr>
			<tr>
  				<td><span class="story">Naam Contactpersoon</span></td>
  				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="naam" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">Adres</span></td>
  				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="adres" /></td>
		 	</tr>
		 	<tr>
  				<td><span class="story">Postcode</span></td>
				<td width="15">:</td>
  				<td>
					<input type="text" malenght="4" size="8" name="pc1" />
					<input type="text" malenght="2" size="4" name="pc2" />				</td>
 			</tr>
 			<tr>
				<td><span class="story">Plaats</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="plaats" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">Land</span></td>
				<td width="15">:</td>
  				<td> 
					<select name="land">
     				<?php
						include("include/inc.landen.php");
						foreach($countries as $land){
							echo "<option value=\"".$land."\">".$land."</option>\n";
						}
					?>
   					</select>				</td>
 			</tr>
 			<tr>
  				<td><span class="story">Telefoonnummer</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="telnr" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">E-mail adres</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="email" /></td>
 			</tr>
 			<tr>
   				<td valign="top"><span class="story">A.u.b. neem contact</span></td>
  				<td width="15" valign="top">:</td> 
   				<td><input type="radio" name="contact" value="Via email" id="mail" checked /><span class="story"><label for="mail">via email<br>
</label>
			    </span><input type="radio" name="contact" value="Via telefoon" id="tel" /><span class="story"><label for="tel">via telefoon </label>
			    </span></td>
		   	</tr>
			<tr>
  				<td valign=top><span class="story">Opmerkingen</span></td>
				<td valign=top width="15">:</td>
 				<td><textarea name="opmerkingen" cols="47" rows="5"></textarea></td>
 			</tr>
 			<tr>
  				<td colspan="2"></td>
				<td>
                <!--google recaptcha toegevoegd door DV-->
                <div class="g-recaptcha" data-sitekey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"></div>
                <script src='https://www.google.com/recaptcha/api.js?hl=nl'></script>
                    
					<input name="submit" type="submit" value="Verstuur">&nbsp;
					<input type="reset" value="Reset">				</td>
 			</tr>
		</table>
	  <br/>
 	</form>
          
        <blockquote>
        </blockquote>
      </div>
              <li></li>
		</ul>
    </div>
    <div id="footer">
    </div>
  </div>

</body>
</html>

<?php
}
?>
 
Alle mapjes en bestanden in "src" zijn bij elkaar de Google ReCaptcha library. Hiermee kan je elke ReCaptcha versie maken. Dus niets veranderen in deze mappen en bestanden. Alleen 'appengine-https.php' mag je eventueel verwijderen, die wordt niet gebruikt.

In de ReCaptcha Admin kan je als extra domein "localhost" opgeven zodat je in Xampp (of andere wamp) op je pc kan testen.
Let op: Je moet op je pc dan naar http://localhost/..../ gaan anders werkt het niet.

Mapje src moet in dezelfde map komen als jouw bestand "contact_nl-bron.php".

RE: Warning: mail(): Found numeric header
Heb je newline's \r\n toegevoegd bij de headers?

RE: als ik zonder captcha op verzenden klik dan ga ik naar de bedankpagina, mail wordt niet verzonden
Kan je oplossen met
Code:
if ($mailsuccess === true) {
    // ga naar bedankpagina
} else {
    // een bericht dat mail niet is verstuurd
}

RE: ik krijg ook als mail alleen puntjes te zien.
Deze regel $bericht = "........"; is aan jou om van een tekst te voorzien

RE: Bij #29 zal ik weer de PHP code zetten.
Zal ik even naar kijken.
 
Voor wat betreft de ReCaptcha werkt je code prima, zonder problemen.

Nog even over $headers. Het werken met een array $headers[] werkt alleen vanaf php 7.2
Heb je in je live omgeving een lagere php versie gebruik dan
Code:
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: ' . $emailkruse . "\r\n";
$headers .= 'From: BEDRIJF Online <' . $emailreply . '>' . "\r\n";
$headers .= 'Reply-To: ' . $emailreply . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
 
Hoi @bron, dank je wel voor je reactie. Ondanks dat het php 7.2 is heb ik toch de $headers aangepast en nu gaat het met jouw extra stukje code goed!
Als ik geen captcha invul komt de $faultpage te voorschijn (die regel heb ik toegevoegd).
Als ik wel captcha invul krijg ik de $nextpage = verzondenpagina te zien.
Alleen... de mail komt niet aan. Dat snap ik niet. Ik heb mijn mail adres ingevuld (in onderstaande code vervangen door info@mijnbedrijf)

Hier de volledige code van de pagina:

PHP:
<?php
date_default_timezone_set('Europe/Amsterdam');

if (isset($_POST['submit'])) {

    // Hieronder zelf invullen voor email
    $emailkruse = "info@mijnbedrijf.nl";     // Emailadres waarnaar de mail verzonden wordt
    $onderwerp  = "Bericht van de website"; // Onderwerp van de email
    $nextpage   = "Verzonden.php";          // Laat deze pagina als de mail verzonden is
    $faultpage = "niet-verzonden.php"; //Laat deze pagina als de mail verzonden is.
    $emailreply = "noreply@mijnbedrijf.nl";     // Van emailadres + Beantwoorden aan emailadres
    
    // Hieronder zelf invullen voor reCaptcha v2 
    $siteKey    = "KNIP";
    $secret     = "KNIP";
    $lang       = "nl";

    // Meer uitgebreide header geeft kleinere kans dat email in spambox terecht komt
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'To: ' . $emailkruse . "\r\n";
    $headers .= 'From: BEDRIJF Online <' . $emailreply . '>' . "\r\n";
    $headers .= 'Reply-To: ' . $emailreply . "\r\n";
    $headers .= 'X-Mailer: PHP/' . phpversion();

    // hier je bercicht samenstellen
    $postcode = $_POST['pc1'] . " " . strtoupper($_POST['pc2']);
    $bericht  = "Het volgende bericht is binnengekomen op de website op ".date("d-m-Y H:i:s")."\n".
				"\n".
				"Bedrijf:         ".$_POST['bedrijf']."\n".
				"Contactpersoon:  ".$_POST['aanhef']." ".$_POST['naam']."\n".
				"Adres:           ".$_POST['adres']."\n".
				"                 ".$postcode." ".strtoupper($_POST['plaats'])."\n".
				"                 ".$_POST['land']."\n".
				"Telefoonnummer:  ".$_POST['telnr']."\n".
				"Faxnummer:       ".$_POST['faxnr']."\n".
				"Emailadres:      ".$_POST['email']."\n".
				"\n".
				"Zoek contact ".strtolower($_POST['contact'])."\n".
				"\n".
				"*****************************************************************************\n".
				"Opmerkingen:\n".
				"\n".
				$_POST['opmerkingen']."\n".
				"*****************************************************************************\n";

    // reCaptcha token uit formulier
    $capInput = (isset($_POST['g-recaptcha-response'])) ? $_POST['g-recaptcha-response'] : '';
    $hasToken = (strlen($capInput) == 0) ? false : true;

    // reCaptcha library
    require_once __DIR__ . '/src/autoload.php';

    // Nieuwe instance van de ReCaptcha service
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);

    // Mogelijk is file_get_contents('url') geblokkeerd bij jouw provider.
    // Een alsternatief is fsockopen(). Haal bovenstaande $recaptcha = ... weg en gebruik volgende regel.
    //$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());

    // Verificatie van de response waarbij ook de bezoekers IP wordt gecontroleerd
    $resp = $recaptcha->setExpectedHostname($_SERVER['SERVER_NAME'])
                      ->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
    
    // Controleer de response van $recaptcha->verify
    if ($resp->isSuccess()) {
        $capVerify = true;  // Verificatie gelukt
    } else {
        $capVerify = false; // Verificatie is niet gelukt
    }

    if ($hasToken === true && $capVerify === true) {
        if (mail($emailkruse, $onderwerp, $bericht, $headers)) {
            $mailsuccess = true;
            include($nextpage); // Toon de volgende pagina
        } else {
            $mailsuccess = false;
        }
    }

    if ($mailsuccess === true) {
        // ga naar bedankpagina
        include($nextpage); // Toon de volgende pagina
    } else {
        // een bericht dat mail niet is verstuurd
        include($faultpage); // Toon de volgende pagina
    }
    

} else {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Kemp-bv | Contactformulier Nederlands</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <!-- **** layout stylesheet **** -->
  <link rel="stylesheet" type="text/css" href="css/style/style.css" />

  <!-- **** colour scheme stylesheet **** -->
  <link rel="stylesheet" type="text/css" href="css/style/colour.css" />
</head>

<body>
  <div id="main">
    <div id="logo">
    </div>
    <div id="menu">
      <ul>
        <li><a href="index_nl3.php">Home</a></li>
        <li><a href="technischadvies.php">Technisch advies</a></li>
        <li><a href="projectmanagement.php">Projectmanagement</a></li>
        <li><a href="onderhoud.php">Onderhoud</a></li>
        <li><a href="producten_nl.php">Producten</a></li>
        <li><a href="referentielijst.php">Referentielijst</a></li>
        <li><a id="selected" href="contact_nl.php">Contact</a></li>
        <li><a href="route.php">Route</a></li>
		</ul>
    </div>
    <div id="content">
      <div id="column1">
	    <?php include("include/vlag.php"); ?>
        <?php include("nieuws/laatste.php"); ?>
        <?php include("nieuws/archief.php"); ?>
        <?php include("nieuws/links.php"); ?>
        <?php include("nieuws/beursbericht.php"); ?>
      </div>
      <div id="column2">
                
        <div><p></p>
          <p><span class="left"><img src="images/logo_bedrijf.png" alt="Logo Bedrijf" width="193" height="107" /></span></p>
          <h2>KNIP</h2>
          <p> KNIP </p>
	          
        </div>
        <!-- **** INSERT PAGE CONTENT HERE **** -->
       
       <form name="form1" id="form1" method="post" action="">
		<table border=0 bordercolor=#ffffff>
 			<tr>
  				<td width="138"><span class="story">Bedrijfsnaam</span></td>
  				<td width="15">:</td>
  				<td><input type="text" maxlenght="50" size="45" name="bedrijf" /></td>
 			</tr>
 			<tr>
   				<td><span class="story">Aanhef</span></td>
  				<td width="15">:</td>
  				<td><select name="aanhef">
                  <option value="Dhr.">De Heer</option>
                  <option value="Mevr.">Mevrouw</option>
                </select></td>
		  </tr>
			<tr>
  				<td><span class="story">Naam Contactpersoon</span></td>
  				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="naam" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">Adres</span></td>
  				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="adres" /></td>
		 	</tr>
		 	<tr>
  				<td><span class="story">Postcode</span></td>
				<td width="15">:</td>
  				<td>
					<input type="text" malenght="4" size="8" name="pc1" />
					<input type="text" malenght="2" size="4" name="pc2" />				</td>
 			</tr>
 			<tr>
				<td><span class="story">Plaats</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="plaats" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">Land</span></td>
				<td width="15">:</td>
  				<td> 
					<select name="land">
     				<?php
						include("include/inc.landen.php");
						foreach($countries as $land){
							echo "<option value=\"".$land."\">".$land."</option>\n";
						}
					?>
   					</select>				</td>
 			</tr>
 			<tr>
  				<td><span class="story">Telefoonnummer</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="telnr" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">E-mail adres</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="email" /></td>
 			</tr>
 			<tr>
   				<td valign="top"><span class="story">A.u.b. neem contact</span></td>
  				<td width="15" valign="top">:</td> 
   				<td><input type="radio" name="contact" value="Via email" id="mail" checked /><span class="story"><label for="mail">via email<br>
</label>
			    </span><input type="radio" name="contact" value="Via telefoon" id="tel" /><span class="story"><label for="tel">via telefoon </label>
			    </span></td>
		   	</tr>
			<tr>
  				<td valign=top><span class="story">Opmerkingen</span></td>
				<td valign=top width="15">:</td>
 				<td><textarea name="opmerkingen" cols="47" rows="5"></textarea></td>
 			</tr>
 			<tr>
  				<td colspan="2"></td>
				<td>
                <!--google recaptcha toegevoegd door DV-->
                <div class="g-recaptcha" data-sitekey="KNIP"></div>
                <script src='https://www.google.com/recaptcha/api.js?hl=nl'></script>
                    
					<input name="submit" type="submit" value="Verstuur">&nbsp;
					<input type="reset" value="Reset">				</td>
 			</tr>
		</table>
	  <br/>
 	</form>
          
        <blockquote>
          <p> KNIP <br />
          </p>
        </blockquote>
      </div>
    </div>
    <div id="footer">
      KNIP
    </div>
  </div>

</body>
</html>

<?php
}
?>
 
Test in een apart bestandje "testmail.php" even de mail() functie
Code:
<?php
$emailkruse = "info@mijnbedrijf.nl";    // wijzig AAN emailadres
$emailreply = "noreply@mijnbedrijf.nl"; // wijzig VAN emailadres
$onderwerp  = "Dit is een testbericht";
$bericht    = "Een kort bericht om te zien of het werkt";

// in mail() mogen regels max 70 lang zijn (php.net/manual)
$bericht = wordwrap($bericht, 70, "\r\n");

$headers  = "From: " . $emailreply . "\r\n";
$headers .= "Reply-To: " . $emailreply . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();

$mailsuccess = mail($emailkruse, $onderwerp, $bericht, $headers);
if ($mailsuccess == true) {
	echo "Email verstuurd";
} else {
	echo "Email is niet verstuurd";
}
?>
 
Gebruik \r\n in je bericht.
Zet bij een lege regel een spatie voor de \r\n
De laatste regel geen \r\n
Code:
$bericht  = "Het volgende bericht is binnengekomen op de website op " . date("d-m-Y H:i:s") . "\r\n";
$bericht .= " " . "\r\n";
$bericht .= "Bedrijf:         " . $_POST['bedrijf'] . "\r\n";
$bericht .= "Contactpersoon:  " . $_POST['aanhef'] . " " . $_POST['naam'] . "\r\n";
// enzovoort...
$bericht .= "**************************************************************"; // laatste regel geen \r\n
 
Bedankt voor je reacties @bron! Het bestand testmail.php geeft melding dat Email is verstuurd maar er verschijnt in mijn mailbox geen mailtje.

Heb bij het contact_nl-bron.php bestand de \n vervangen door \r\n behalve laatste regel ;) Maar ook dat helpt niet.
 
Ikzelf gebruik bij het gebruik van mail altijd deze headers:
PHP:
<?php
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;

// De headers samenstellen
$headers	 = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers	.= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers	.= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers	.= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers	.= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers	.= 'X-Priority: Normal' . "\r\n";
$headers	.= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers	.= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
?>
Sommige webhosting-providers verplichten dat het adres is de From:-header (in dit script in: $eigen_emailadres) aangemaakt moet zijn als bestaande mailbox.
Dit om misbruik te voorkomen.

Maar waar het mis gaat, is lastig te zeggen. Wat er gebeurt is dat PHP namens je webhosting-provider zegt: "Dankjewel voor de mail. Ik heb hem op onze postkamer afgeleverd. Meer dan dat kan ik niet doen."

Wil je meer controle hebben over je mail, dan moet je die zelf bij een mailserver afleveren via SMTP.
Dit is lastig te doen met de mail()-functie van PHP, maar kan wel eenvoudig met PHPmailer.
Plus dat je stap-voor-stap kan debuggen waar het fout gaat in de bezorging naar de mailserver.
 
bedankt @php4u, zal dit zo even proberen hoe dat werkt.

Heb een php mail test script gevonden die het in ieder geval doet :)
PHP:
<?php
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );
    $from = "test@bedrijfsnaam.nl";
    $to = "mijnnaam@mijnbedrijf.nl";
    $subject = "Checking PHP mail";
    $message = "PHP mail works just fine";
    $headers = "From:" . $from;
    mail($to,$subject,$message, $headers);
    echo "The email message was sent.";
?>

Nu nog uitvinden waarom het met deze code wel werkt en niet met code die ik hierboven heb geprobeerd.
 
Gewoon de variabelen goed vullen, en de $headers in je mail()-functie zetten.

Waarom dit wel werkt, zou misschien met het gebruik van de header te maken kunnen hebben.
 
Met invullen van de gegevens en met je code @php4u die ik in de code van @bron heb gezet werkt het nu! hè hè...

Dus kei bedankt voor de hulp :thumb: en het geduld ook :D

PHP:
<?php
date_default_timezone_set('Europe/Amsterdam');

if (isset($_POST['submit'])) {

    // Hieronder zelf invullen voor email
    $website_naam = 'BEDRIJFSNAAM BV';
    $emailkruse = "info@bedrijfsnaam.nl";     // Emailadres waarnaar de mail verzonden wordt
    $onderwerp  = "Bericht van de website"; // Onderwerp van de email
    $nextpage   = "Verzonden.php";          // Laat deze pagina als de mail verzonden is
    $faultpage = "niet-verzonden.php"; //Laat deze pagina als de mail verzonden is.
    $emailreply = "noreply@bedrijfsnaam.nl";     // Van emailadres + Beantwoorden aan emailadres
    $from = "test@bedrijfsnaam.nl";
    // Hieronder zelf invullen voor reCaptcha v2 
    $siteKey    = "xxxxxxxxxxxxx";
    $secret     = "xxxxxxxxxxxxxxx";
    $lang       = "nl";

    
    // De headers samenstellen
    $headers     = 'From: ' . $website_naam . ' <' . $from . '>' . "\r\n";
    $headers    .= 'Reply-To: ' . $website_naamr . ' <' . $from . '>' . "\r\n";
    $headers    .= 'Return-Path: Mail-Error <' . $from . '>' . "\r\n";
    $headers    .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
    $headers    .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
    $headers    .= 'X-Priority: Normal' . "\r\n";
    $headers    .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
    $headers    .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
    
    // hier je bercicht samenstellen
    $postcode = $_POST['pc1'] . " " . strtoupper($_POST['pc2']);
    $bericht  = "Het volgende bericht is binnengekomen op de website op ".date("d-m-Y H:i:s")."\r\n".
				"\r\n".
				"Bedrijf:         ".$_POST['bedrijf']."\r\n".
				"Contactpersoon:  ".$_POST['aanhef']." ".$_POST['naam']."\r\n".
				"Adres:           ".$_POST['adres']."\r\n".
				"                 ".$postcode." ".strtoupper($_POST['plaats'])."\r\n".
				"                 ".$_POST['land']."\r\n".
				"Telefoonnummer:  ".$_POST['telnr']."\r\n".
				"Faxnummer:       ".$_POST['faxnr']."\r\n".
				"Emailadres:      ".$_POST['email']."\r\n".
				"\r\n".
				"Zoek contact ".strtolower($_POST['contact'])."\r\n".
				"\r\n".
				"*****************************************************************************\r\n".
				"Opmerkingen:\r\n".
				"\r\n".
				$_POST['opmerkingen']."\r\n".
				"*****************************************************************************"; // laatste regel geen \r\n

    // reCaptcha token uit formulier
    $capInput = (isset($_POST['g-recaptcha-response'])) ? $_POST['g-recaptcha-response'] : '';
    $hasToken = (strlen($capInput) == 0) ? false : true;

    // reCaptcha library
    require_once __DIR__ . '/src/autoload.php';

    // Nieuwe instance van de ReCaptcha service
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);

    // Mogelijk is file_get_contents('url') geblokkeerd bij jouw provider.
    // Een alsternatief is fsockopen(). Haal bovenstaande $recaptcha = ... weg en gebruik volgende regel.
    //$recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\SocketPost());

    // Verificatie van de response waarbij ook de bezoekers IP wordt gecontroleerd
    $resp = $recaptcha->setExpectedHostname($_SERVER['SERVER_NAME'])
                      ->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
    
    // Controleer de response van $recaptcha->verify
    if ($resp->isSuccess()) {
        $capVerify = true;  // Verificatie gelukt
    } else {
        $capVerify = false; // Verificatie is niet gelukt
    }

    if ($hasToken === true && $capVerify === true) {
        if (mail($emailkruse, $onderwerp, $bericht, $headers)) {
            $mailsuccess = true;
            include($nextpage); // Toon de volgende pagina
        } else {
            $mailsuccess = false;
        }
    }

    if ($mailsuccess === true) {
        // ga naar bedankpagina
        include($nextpage); // Toon de volgende pagina
    } else {
        // een bericht dat mail niet is verstuurd
        include($faultpage); // Toon de volgende pagina
    }
    

} else {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Kemp-bv | Contactformulier Nederlands</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

  <!-- **** layout stylesheet **** -->
  <link rel="stylesheet" type="text/css" href="css/style/style.css" />

  <!-- **** colour scheme stylesheet **** -->
  <link rel="stylesheet" type="text/css" href="css/style/colour.css" />
</head>

<body>
  <div id="main">
    <div id="logo">
    </div>
    <div id="menu">
      <ul>
        <li><a href="index_nl3.php">Home</a></li>
        <li><a href="technischadvies.php">Technisch advies</a></li>
        <li><a href="projectmanagement.php">Projectmanagement</a></li>
        <li><a href="onderhoud.php">Onderhoud</a></li>
        <li><a href="producten_nl.php">Producten</a></li>
        <li><a href="referentielijst.php">Referentielijst</a></li>
        <li><a id="selected" href="contact_nl.php">Contact</a></li>
        <li><a href="route.php">Route</a></li>
		</ul>
    </div>
    <div id="content">
      <div id="column1">
	    <?php include("include/vlag.php"); ?>
        <?php include("nieuws/laatste.php"); ?>
        <?php include("nieuws/archief.php"); ?>
        <?php include("nieuws/links.php"); ?>
        <?php include("nieuws/beursbericht.php"); ?>
      </div>
      <div id="column2">
                
        <div><p></p>
          <p>KNIP</p>
	          
        </div>
        <!-- **** INSERT PAGE CONTENT HERE **** -->
       
       <form name="form1" id="form1" method="post" action="">
		<table border=0 bordercolor=#ffffff>
 			<tr>
  				<td width="138"><span class="story">Bedrijfsnaam</span></td>
  				<td width="15">:</td>
  				<td><input type="text" maxlenght="50" size="45" name="bedrijf" /></td>
 			</tr>
 			<tr>
   				<td><span class="story">Aanhef</span></td>
  				<td width="15">:</td>
  				<td><select name="aanhef">
                  <option value="Dhr.">De Heer</option>
                  <option value="Mevr.">Mevrouw</option>
                </select></td>
		  </tr>
			<tr>
  				<td><span class="story">Naam Contactpersoon</span></td>
  				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="naam" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">Adres</span></td>
  				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="adres" /></td>
		 	</tr>
		 	<tr>
  				<td><span class="story">Postcode</span></td>
				<td width="15">:</td>
  				<td>
					<input type="text" malenght="4" size="8" name="pc1" />
					<input type="text" malenght="2" size="4" name="pc2" />				</td>
 			</tr>
 			<tr>
				<td><span class="story">Plaats</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="plaats" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">Land</span></td>
				<td width="15">:</td>
  				<td> 
					<select name="land">
     				<?php
						include("include/inc.landen.php");
						foreach($countries as $land){
							echo "<option value=\"".$land."\">".$land."</option>\n";
						}
					?>
   					</select>				</td>
 			</tr>
 			<tr>
  				<td><span class="story">Telefoonnummer</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="telnr" /></td>
 			</tr>
 			<tr>
  				<td><span class="story">E-mail adres</span></td>
				<td width="15">:</td>
  				<td><input type="text" malenght="50" size="45" name="email" /></td>
 			</tr>
 			<tr>
   				<td valign="top"><span class="story">A.u.b. neem contact</span></td>
  				<td width="15" valign="top">:</td> 
   				<td><input type="radio" name="contact" value="Via email" id="mail" checked /><span class="story"><label for="mail">via email<br>
</label>
			    </span><input type="radio" name="contact" value="Via telefoon" id="tel" /><span class="story"><label for="tel">via telefoon </label>
			    </span></td>
		   	</tr>
			<tr>
  				<td valign=top><span class="story">Opmerkingen</span></td>
				<td valign=top width="15">:</td>
 				<td><textarea name="opmerkingen" cols="47" rows="5"></textarea></td>
 			</tr>
 			<tr>
  				<td colspan="2"></td>
				<td>
                <!--google recaptcha toegevoegd door DV-->
                <div class="g-recaptcha" data-sitekey="xxxxxxxxxx"></div>
                <script src='https://www.google.com/recaptcha/api.js?hl=nl'></script>
                    
					<input name="submit" type="submit" value="Verstuur">&nbsp;
					<input type="reset" value="Reset">				</td>
 			</tr>
		</table>
	  <br/>
 	</form>
          
        <blockquote>
          <p> KNIP </p>
        </blockquote>
      </div>
    </div>
    <div id="footer">
      KNIP
    </div>
  </div>

</body>
</html>

<?php
}
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan