Volledige versie bekijken : PHP - Script verstuurt spam!?



Trax
5 October 2007, 10:43
Kan iemand mij aub uitsluitsel geven dat met dit script géén spam wordt verstuurd?
Ik stuur gegevens vanuit flash, maar daar bouw ik een key in "geheim" zodat je niet kan versturen zonder dat flash die variabele heeft doorgestuurd.

Deze url kreeg ik om het na te kijken, maar zegt me niet veel.
http://support.combell.com/questions/278/



<?php

//## instellingen##
//#################


$extra_info = true;
$yourMail = 'xxx@xxx.com'; //je eigen e-mailadres
$yourName = 'Naam'; //je naam of de naam van je bedrijf (optioneel: indien niet van toepassing leeg laten)
$key = 'geheim'; // De geheime code die je in het flashbestand hebt ingestald in de var key

//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

//##verwerking##
//##############

if( !empty($_POST) ){ // is er wel iets verzonden?

// variabelen ophalen en aan een php-variabele toewijzen, php variabelen beginnen altijd met een $ en hier
// komen ze uit de superglobal $_POST, dit is een soort van ingebouwde array waar al je vars uit flash in
// worden gestoken
$sendName = $_POST['name'];
$sendBedrijf = $_POST['bedrijf'];
$sendAdres = $_POST['adres'];
$sendWoonplaats = $_POST['woonplaats'];
$sendMail = $_POST['mail'];
$sendTelefoon = $_POST['telefoon'];
$sendMessage = $_POST['message'];


$verzenderNaam = ( $yourName == '' ) ? $yourName : $sendName; //kijken of er een naam ingevuld is bij instellingen
$verzender = 'From: '.$verzenderNaam.' <'.$sendName.'>'; //deze naam krijg jij in je mailbox als "afzender"

//email checken
function check_email($tainted_email = null) {
$email_pattern = '/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i'; // zit er een @ in het adres enz
if ( preg_match($email_pattern, $tainted_email) && strlen($tainted_email) < 150) { //email niet langer dan 150 karakters
return true;
} else {
return false;
}
}

//de headers
$mailHeader .= 'Reply-To: '.$sendName.' <'.$sendMail.'>'."\r\n"; // reply-adres
$mailHeader .= $verzender."\r\n"; // de afzender van de mail
$mailHeader .= 'X-Mailer: PHP/'. phpversion() . "\r\n";
$mailHeader .= 'X-Priority: 1'."\r\n"; // 1 voor belangrijk
$mailHeader .= 'Priority: Urgent'."\r\n";
$mailHeader .= 'Content-Type: text/html'."\r\n";

// tijd en datum van verzenden opvragen via de php-functie date()
$sendDay = date("d.m.Y");//datum
$sendTime = date("H:i:s");//uur,minuten en seconden

// indien de optie extra informatie op true staat
if ($extra_info == false) {
}

//Wat komt er in het mailtje?
$mailContent = '

<body link="#C0C0C0" vlink="#808080" alink="#C0C0C0">
<table style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px" cellspacing="1" cellpadding="3">
<tr>
<td><b>BERICHT</b></td>
</tr>
<tr></tr>
<tr>
<td width="200" bgcolor="#E7E7E7">Naam:</td>
<td width="250" bgcolor="#E7E7E7">'.$sendName.'</td>
</tr>
<tr>
<td bgcolor="#E7E7E7">Email:</td>
<td bgcolor="#E7E7E7">'.$sendMail.'</td>
</tr>
<tr>
<td bgcolor="#E7E7E7">Adres:</td>
<td bgcolor="#E7E7E7">'.$sendAdres.'</td>
</tr>
<tr>
<td bgcolor="#E7E7E7">Woonplaats:</td>
<td bgcolor="#E7E7E7">'.$sendWoonplaats.'</td>
</tr>
<tr>
<td bgcolor="#E7E7E7">Bedrijf:</td>
<td bgcolor="#E7E7E7">'.$sendBedrijf.'</td>
</tr>
<tr>
<td bgcolor="#E7E7E7">Telefoon:</td>
<td bgcolor="#E7E7E7">'.$sendTelefoon.'</td>
</tr>
<tr>
<td bgcolor="#E7E7E7">Vraag en/of opmerking:</td>
<td bgcolor="#E7E7E7">'.$sendMessage.'</td>
</tr>
<tr>
<td><br></td>
<td> </td>
</tr>
<tr>
<td colspan="2"><br><br></td>
<td></td>
</tr>
</table>

</body>


'.$sendXtraInfo;

if (check_email($sendMail) && $_POST['geheim'] == $key ) { // is het e-mailadres wel juist getypt?
//de uiteindelijke mail sturen
$versturen = mail($yourMail, $sendName.' heeft een vraag en/of opmerking', $mailContent, $mailHeader); //de mailfunctie in een var steken
} else {
$versturen = false; //niet gelukt, slecht emailadres
}

$mailResult = ( $versturen ) ? true : false; // mail goed verzonden?
echo '&mailResult='.$mailResult.'&'; // het antwoord op alle vorige vragen terug naar flash sturen

} //[EINDE] zit er iets in het mailtje?
?>
Alvast bedankt!

Jelle
13 October 2007, 11:53
Weet je wel zeker dat die Flash key onzichtbaar is? Flash is ook te decompileren met bv. FlashDecompiler, dus zo veilig is het zeker niet volgens mij.

Veiligere methodes zijn captcha's, of een eenvoudige vraag (bv. een optelsom oplossen).