Hallo,

Hoop dat ik dit op de juiste plek zet.

Ik ben bezig met een nieuw contactformulier voor de website van het werk van mijn vrouw, omdat de vorige pagina met Recaptha V3 niet goed werkte.

De nieuwe versie heb ik wel werkend, maar er duikt een probleem op met de optie "Stuur kopie".
Deze wordt wel afgehandeld, maar bij de bedanktekst blijft de optie (incl. verzenden / wis knoppen staan).
Van alles geprobeerd, maar ik zie het niet. Script heb ik niet zelf geschreven. Zo ervaren ben ik nu ook weer niet.

Of de Recaptcha nu wel werkt blijft even afwachten.

Hopelijk zien jullie het probleem. P.s. Testen mag... https://boefjesenelfjes.nl/contact_test6_-page.php
Mails zal ik verwijderen en zeker niet (mis)gebruiken.


<?php
define('SITE_KEY', '__SITEKEY__');
define('SECRET_KEY', '__SECRETKEY__');
?>

//in de head
    <title>ReCaptcha V3</title>
    <script src='https://www.google.com/recaptcha/api.js?render=<?php echo SITE_KEY; ?>'></script>
    <script>
function myFunction(x) { document.getElementById("mySidenav").classList.toggle("open");
    x.classList.toggle("change");
}
</script>


</header>
<?php

// Config Gedeelte
$cfg['url'] = "www.boefjesenelfjes.nl";// Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg['naam'] = "Rob";                // Webmaster naam
$cfg['email'] = "__mijn e-mail__";        // Webmaster E-mail
$cfg['spam'] = 0;                        // 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 )

// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail($email)
{
    if(preg_match("^[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(empty($naam) || (strlen($naam) < 3) || ( preg_match("[<>]", $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(!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['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 />
                <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 />
                </body>
                </html>';
            }
            else 
            {
                $bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
                // Headers
 //tijdelijk uit  $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']))
                {
 //tijdelijk uit      $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);
//tijdelijk uit                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";
            }
//tijdelijk uit            header("refresh:3;url=".$cfg['url']."");
        }
    }
    if($formulier)
    {
    ?>
    <body>
    <div id="container">   
    <?php
    if(isset($errors)) {
        echo $errors;
    }
    ?>

        <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
        <p>
        <label <?php if(isset($fout['text']['naam'])) { echo 'class="fout"'; } ?>>Naam:</label>
        <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); } ?>" /><b>
        
        <label <?php if(isset($fout['text']['email'])) { echo 'class="fout"'; } ?>>Email:</label>
        <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 />
        
        <label <?php if(isset($fout['text']['onderwerp'])) { echo 'class="fout"'; } ?>>Onderwerp:</label>
        <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 />
        
        <label <?php if(isset($fout['text']['bericht'])) { echo 'class="fout"'; } ?>>Bericht:</label>
        <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 />

        <?php 
        }
        ?>
        <label for="stuurkopie">Stuur mij een kopie</label><input type="checkbox" id="stuurkopie" name="stuurkopie" value="1" /><br />
        
        <label></label>
        <input type="submit" id="verzenden" name="verzenden" value="verzenden" />
        <input type="submit" id="wis" name="wis" value="Wis velden" />
        </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']."");
}
?> 
<script>
    grecaptcha.ready(function() {
    grecaptcha.execute('<?php echo SITE_KEY; ?>', {action: 'homepage'})
    .then(function(token) {
        //console.log(token);
        document.getElementById('g-recaptcha-response').value=token;
    });
    });
    </script>
<?php 
if($_POST){
    function getCaptcha($SecretKey){
        $Response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".SECRET_KEY."&response={$SecretKey}");
        $Return = json_decode($Response);
        return $Return;
    }
    $Return = getCaptcha($_POST['g-recaptcha-response']);
    //var_dump($Return);
    if($Return->success == true && $Return->score > 0.5){
        echo "Succes!";
    }else{
        echo "You are a Robot!!";
    }
}
?>

	
</body>
</html>
maar als phphulp.nl geen MX record zou hebben, wordt de mail aangeboden aan het A record voor phphulp.nl.

Is was slordiger qua dns-beheer, maar wel een standaard.
Ah, dus je wilt eigenlijk zeggen dat de afwezigheid van een MX-record niet hoeft in te houden dat het domein géén mailserver heeft. Mja, lekker duidelijk :p.

In dat geval zou je de test wat kunnen versoepelen door aan $test een case toe te voegen. Ingeval de MX-check slaagt dan zal de A-check niet uitgevoerd worden als je een logische OR (||) gebruikt vanwege lazy evaluation.

Of enkel op een A-record controleren? Of zijn er ook domeinen die wel een MX-record hebben maar geen A-record? Dat zou misschien theoretisch ook kunnen?

Deze test is specifiek bedoeld om (verder) aannemelijk te maken dat een e-mailadres valide is. Idealiter is dit een controle die alles of ten minste zoveel mogelijk gevallen dekt. En de ultieme test is nog steeds een bevestiging per mail natuurlijk.

Reageren