Archief - PHP: contact formulier probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

dahousecatfelix

Legacy Member
Hallo,

Ik heb hier een probleem met een php contact formulier. Ikzelf weet niet echt veel af van php en heb dit script van sitemasters.be gehaald.
Het werkt wel, maar het probleem is dat als je het bericht verzend het meerdere malen verzonden wordt.

iemand die mij kan helpen? :)

Dank bij voorbaat

PHP:
<?
////////////////////////////////////////////////
//////// [url]www.sitemasters.be[/url] ////////////////////
//////// Door Tuinstoel ////////////////////////
//////// Een eenvoudig mailformuliertje ////////
////////////////////////////////////////////////

ob_start(); // Voor het cookie setten, anders zal dat hoogst waarschijnlijk niet werken.
$cNaam = ''; // Je naam...
$cEmail = '[email protected]'; // email waar het heen moet
$cOndPre = ''; // prefix voor onderwerp
$cOndSuf = ''; // suffix achter onderwerp
$cSpam = 5; // Anti Spam, X aantal minuten
?>
<?
if(!empty($_POST['verstuur']))
    { // Er is op de knop 'verstuur e-mail' gedrukt...
    $pError = ''; // Een begin met de errors als die er zijn
    $pI = 0; // Deze telt het aantal erros.
    if(strlen($_POST['naam']) < 2)
        { $pError .= '- Je hebt je naam niet ingevuld!<br>'; $pI++; }
    if(strlen($_POST['email']) < 6 || !ereg('@',$_POST['email']) || !ereg('.',$_POST['email']))
        { $pError .= '- Je hebt geen geldig email-adres ingevuld!<br>'; $pI++; }
    if(strlen($_POST['onderwerp']) < 3)
        { $pError .= '- Je hebt geen geldig onderwerp ingevuld!<br>'; $pI++; } 
    if(strlen($_POST['bericht']) < 10)
        { $pError .= '- Je hebt geen geldig bericht ingevuld!<br>'; $pI++; }
        
    if(!empty($pError))
        { // Als er dan toch errors zijn..
        echo ($pI == 1) ? 'De volgende fout is opgetreden:<br>' : 'De volgende fouten zijn opgetreden:<br>'; // even kijken of het meervoud of enkelvoud is.
        echo $pError; // echoën van de error(s)
        }
    else
        {
        // uiteindelijk toch mailen :)
        $pHeader  = "MIME-Version: 1.0\r\n";
        $pHeader .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $pHeader .= "To: ".$cNaam." <".$cEmail.">\r\n";
        $pHeader .= "From: ".$_POST['naam']." <".$_POST['email'].">\r\n";
        $website = (!empty($_POST['website'])) ? '<br><br>Website: '.$_POST['website'] : '';
        $pBericht = 'Het volgende bericht is gestuurd via het contact formulier:<br><hr><br>'.$_POST['bericht'].$website;
        mail($cEmail,$cOndPre.' '.$_POST['onderwerp'].' '.$cOndSuf,$pBericht,$pHeader);
        
        if(isset($_POST['usermail']))
            { // Als de persoon het vakje 'Ook naar mezelf mailen' heeft aangevinkt...
            $pBerichtUser = 'Het volgende bericht heb je verstuurd via contact formulier:<br><hr><br>'.$_POST['bericht'];
            mail($_POST['email'],$cOndPre.' '.$_POST['onderwerp'].' '.$cOndSuf,$pBerichtUser,$pHeader);
            }
            
        echo 'De e-mail is succesvol verzonden!';
        setcookie('mailform',1,time()+($cSpam*60)); // cookie zetten tegen spam
        
        $pShow = true; // formulier wordt niet weer getoond
        }
    }
    // Kijken of er een waarde moet worden gegeven aan velden...
    $pNaam = (isset($_POST['naam'])) ? $_POST['naam'] : '';
    $pEmail = (isset($_POST['email'])) ? $_POST['email'] : '';
    $pWebsite = (isset($_POST['website'])) ? $_POST['website'] : '';
    $pOnderwerp = (isset($_POST['onderwerp'])) ? $_POST['onderwerp'] : '';
    $pBericht = (isset($_POST['bericht'])) ? $_POST['bericht'] : '';
    
    // kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond.
    if(isset($_COOKIE['mailform']))
        { $pShow = true; echo 'Je kunt maar eens in de '.$cSpam.' minuten een e-mail versturen!'; }
        
    if(!isset($pShow))
        { // het formulier als $pShow niet bestaat.
        ?>
        <form method="post" action="<?= $_SERVER['PHP_SELF']; ?>">
        <dl>
            <dt>&nbsp;Naam:<font class="style4"> *</font></dt>
                <dd><input type="text" name="naam" size="30" value="<?= $pNaam; ?>"></dd>
            <dt>&nbsp;Email:<font class="style4"> *</font></dt>
                <dd><input type="text" name="email" size="30" value="<?= $pEmail; ?>"></dd>
            <dt>&nbsp;Website:</dt>
                <dd><input type="text" name="website" size="30" value="<?= $pWebsite; ?>"></dd>
            <dt>&nbsp;Onderwerp:<font class="style4"> *</font></dt>
                <dd><input type="text" name="onderwerp" size="30" value="<?= $pOnderwerp; ?>"></dd>
            <dt>&nbsp;Bericht:<font class="style4"> *</font></dt>
                <dd><textarea name="bericht" cols="40" rows="7"><?= $pBericht; ?></textarea></dd>
            <dt>&nbsp;Ook naar mezelf mailen:</dt>
                <dd><input type="checkbox" name="usermail"></dd>
            <dt>&nbsp;Formulier opties:</dt>
                <dd>
                <input type="submit" value="Verstuur e-mail" name="verstuur"> <input type="reset" value="Wis velden"></dd>
        <div class="style4">&nbsp;&nbsp;* = verplichte velden</div>
		</dl>
        </form>
        <?
        }
        ?>

*edit*
Ik heb juist ondervonden dat het alleen in firefox een stuk of 3 keer verzonden wordt. In ie kreeg ik maar 1 keer de mail? :unsure:

Bunz

Legacy Member
als ge parkinson hebt is IE idd een voordeel (dat reageerd zo snel nie :p)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan