En primer lugar gracias que ElHacker.Net volvió! Ya se le extrañaba.
Amigos vengo con una duda, trate de hacerlo solo pero no pude, tengo una duda sobre un script en PHP que encontré en la Internet el cual se encarga de enviar los datos de un formulario al e-mail.
Este es el script original:
Código:
<?php
// aki tu e-mail
$recipiente = "fulanito@dominio.com";
// URL o enlace a la pagina hogar
$home = "http://google.com";
// mensaje k te llegara al email con los datos
$msg = "Hola $nombre
$nombre, envia el formulario de contacto con los siguientes datos:\n
Nombre: $nombre
E-mail: $email
Pagina de internet: $web
Asunto: $asunto
Mensaje del visitante:
$mensaje\n\n";
// Comprobamos que los campos del formulario se encuentren completos.
if (empty($nombre)||empty($email)||empty($asunto)||empty($mensaje)){
echo 'No llenaste las casillas';
} else{
// Enviamos el formulario con todos los datos.
mail("$recipiente", "$asunto", "$msg", "From: $nombre");
//Damos las gracias al visitante por contactarnos.
echo"<font face=tahoma size=2>
<p align=center>Gracias <b>$nombre</b>.
<p align=center>Respondere a su mensaje en un plazo de 12 horas.<br><br>
<br>
<p align=center><br>
<strong><a href=$home>Regresar al inicio</strong></a>.</p>";
}
?>
El problema con este script es que no evita los ataques anti flood, ya que le pase la dirección de mi formulario de contacto a un amigo y me envio 200 emails en 1 hora por medio del mismo.
Buscando en la Internet encontré esta web:
http://www.webcheatsheet.com/php/create_captcha_protection.php
La cual explica muy bien como agregar un código de verificación a cualquier formulario para evitar los Floods pero no lo entendí muy bien. Si quieres visiten esa web para que lo entiendan
mejor, el caso es que tengo los siguientes archivos:
Contacto.html - este es mi formulario de contacto en HTML
Enviado.php - este es el script que les puse anteriormente, el cual envía los datos al email
Create_image.php – este se encarga de crear la imagen en PHP (el código de confirmación).
ajax_captcha.js - un código en java script que tiene que ver con create_image.php, este archivo lo tengo que incluir en mi formulario de contacto con un:
Código:
<script language="javascript" type="text/javascript" src="ajax_captcha.js"></script>
Vamos bien… Los ejemplos de la web me dio otro archivo llamado: captcha.php el cual verifica que campo del formulario (el campo del código de verificación) no este vacio y que corresponda con la imagen que se guardo para poder enviarse.
Capcha.php contiene el siguiente código:
Código:
<?
//Continue the session
session_start();
//Make sure that the input come from a posted form. Otherwise quit immediately
if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");
//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
(!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
echo "<h1>Test successful!</h1>";
} else {
echo "<h1>Test failed! Try again!</h1>";
}
?>
Ahora, yo pensé que podía agregarle el contenido de captcha.php a mi archivo con el script enviado.php pero algo salió mal… no puedo hacer funcionar el script enviado.php si agrego el otro (captcha.php)
Esto es lo que tengo en enviado.php hasta el momento:
Citar
<?php
//Continue the session
session_start();
//Make sure that the input come from a posted form. Otherwise quit immediately
if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");
// aki tu e-mail
$recipiente = "fulanito@dominio.com";
// URL o enlace a la pagina hogar
$home = "http://google.com";
// mensaje k te llegara al email con los datos
$msg = "Hola $nombre
$nombre, envia el formulario de contacto con los siguientes datos:\n
Nombre: $nombre
E-mail: $email
Pagina de internet: $web
Asunto: $asunto
Mensaje del visitante:
$mensaje\n\n";
// Comprobamos que los campos del formulario se encuentren completos.
if (empty($nombre)||empty($email)||empty($asunto)||empty($mensaje)){
echo 'No llenaste las casillas';
} else{
//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
(!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
echo "<h1>Test successful!</h1>";
} else {
echo "<h1>Test failed! Try again!</h1>";
}
// Enviamos el formulario con todos los datos.
mail("$recipiente", "$asunto", "$msg", "From: $nombre");
//Damos las gracias al visitante por contactarnos.
echo"<font face=tahoma size=2>
<p align=center>Gracias <b>$nombre</b>.
<p align=center>Su mensaje fue enviado con <b>&#161;exito!...</b>
<p align=center>Respondere a su mensaje en un plazo de 12 horas.<br><br>
<br>
<p align=center><br>
<strong><a href=$home>Regresar al inicio</strong></a>.</p>";
}
?>
//Continue the session
session_start();
//Make sure that the input come from a posted form. Otherwise quit immediately
if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("You can only reach this page by posting from the html form");
// aki tu e-mail
$recipiente = "fulanito@dominio.com";
// URL o enlace a la pagina hogar
$home = "http://google.com";
// mensaje k te llegara al email con los datos
$msg = "Hola $nombre
$nombre, envia el formulario de contacto con los siguientes datos:\n
Nombre: $nombre
E-mail: $email
Pagina de internet: $web
Asunto: $asunto
Mensaje del visitante:
$mensaje\n\n";
// Comprobamos que los campos del formulario se encuentren completos.
if (empty($nombre)||empty($email)||empty($asunto)||empty($mensaje)){
echo 'No llenaste las casillas';
} else{
//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
(!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
echo "<h1>Test successful!</h1>";
} else {
echo "<h1>Test failed! Try again!</h1>";
}
// Enviamos el formulario con todos los datos.
mail("$recipiente", "$asunto", "$msg", "From: $nombre");
//Damos las gracias al visitante por contactarnos.
echo"<font face=tahoma size=2>
<p align=center>Gracias <b>$nombre</b>.
<p align=center>Su mensaje fue enviado con <b>&#161;exito!...</b>
<p align=center>Respondere a su mensaje en un plazo de 12 horas.<br><br>
<br>
<p align=center><br>
<strong><a href=$home>Regresar al inicio</strong></a>.</p>";
}
?>
Nota:
Lo que esta en negrita del codigo citado es lo que le agregue al script original, pero no funciona... Creo que el problema es con esta parte:
Citar
//Check if the securidy code and the session value are not blank
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
(!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
echo "<h1>Test successful!</h1>";
} else {
echo "<h1>Test failed! Try again!</h1>";
}
//and if the input text matches the stored text
if ( ($_REQUEST["txtCaptcha"] == $_SESSION["security_code"]) &&
(!empty($_REQUEST["txtCaptcha"]) && !empty($_SESSION["security_code"])) ) {
echo "<h1>Test successful!</h1>";
} else {
echo "<h1>Test failed! Try again!</h1>";
}