Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/06/2009, 07:23
oscacio
 
Fecha de Ingreso: junio-2009
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
spam en formulario web con captcha

hola solicito ayuda porque ya no se como frenar el spam, probe con un filtro por cabeceras, y el spam siguio, probe con captchas que dicen que es lo mas infalible y el spam sigue en que estare fallando? ayuda


este es el codigo fuente del formulario

<?php
session_start();
if ($_POST['action'] == "checkdata") {
if ($_SESSION['tmptxt'] != $_POST['tmptxt']) {
echo "Intentalo nuevamente";
exit;
}
}
?>
<html>
<head>
<title>Comentarios</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK rel="stylesheet" href="estilos.css" type="text/css">
</head>

<body>
<div id="cuerpo">
<div id="barra"> <img src="image/titulo.png" border="0"> </div>

<div id="contenido">
<h2>Dejanos tu comentario</h2>
<?php
function ValidarDatos($campo){
//Array con las posibles cabeceras a utilizar por un spammer
$badHeads = array("Content-Type:",
"MIME-Version:",
"Content-Transfer-Encoding:",
"Return-path:",
"Subject:",
"From:",
"Envelope-to:",
"To:",
"bcc:",
"cc:");
//Comprobamos que entre los datos no se encuentre alguna de
//las cadenas del array. Si se encuentra alguna cadena se
//dirige a una página de Forbidden

foreach($badHeads as $valor){
if(strpos(strtolower($campo), strtolower($valor)) !== false){
header("HTTP/1.0 403 Forbidden");
exit;
}
}
}


$mail = $HTTP_POST_VARS['txtpopo'];
ValidarDatos($mail);
$comen = $HTTP_POST_VARS['txtjkjo'];
ValidarDatos($comen);
if ($mail != "" && $comen != "") {
$link = mysql_connect("localhost","mmmmmm","xxxxx");
mysql_select_db("jjjjjjjjj", $link);
$sql = "insert into comentarios (comentario, mail) values ('$comen', '$mail')";
$result = mysql_query($sql);

$header = "From: comentario web send \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "correo electronico: " .$mail. "\n Comentario: " .$comen. "\n\n\n fin del comentario";
$para = "direccion de mail";
$asunto = "Comentario";
mail($para,$asunto,$mensaje,$header);
}
?>
<form name="form1" method="post" action="<?PHP echo $_SERVER['PHP_SELF'] ?>">
<h1>Email</h1>
<input type="text" name="txtpopo" width="280">
<h1>Comentario</h1>
<h1>
<textarea name="txtjkjo" cols="50" rows="6"></textarea>
</h1>
<img src="captcha.php" width="100" height="30" vspace="3"><br>
<input name="tmptxt" type="text">
<h1>Ingrese el código de la imágen</h1>
<p></p>
<input name="btget" type="submit" class="boton" value="Enviar">
<input name="action" type="hidden" value="checkdata">
</form>
<?php
$link = mysql_connect("localhost","mmmm","xxxxx");
mysql_select_db("jjjjjjj", $link);
$result = mysql_query("SELECT * FROM comentarios", $link);

while ($row = mysql_fetch_row($result)) { echo "<div id='cuento'>$row[1]</div>\n";}
?>
</div>
<div id="base"></div>
</div>
</body>
</html>


y este el codigo fuente del archivo que genera el captcha

<?php
session_start();
function randomText($length) {
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,35)};
}
return $key;
}

$_SESSION['tmptxt'] = randomText(8);
$captcha = imagecreatefromgif("bgcaptcha.gif");
$colText = imagecolorallocate($captcha, 0, 0, 0);
imagestring($captcha, 5, 16, 7, $_SESSION['tmptxt'], $colText);

header("Content-type: image/gif");
imagegif($captcha);
?>