27/05/2010, 16:59
|
| | | Fecha de Ingreso: noviembre-2009 Ubicación: Perú
Mensajes: 65
Antigüedad: 15 años Puntos: 3 | |
Formulario de Contacto Seguro en PHP Bueno este es un formulario de contacto hecho en php. Esta funcionando OK, ya que renove un script antiguo e inseguro. La pregunta es la siguiente que tan seguro es este script que acabo de hacer. La verdad que recien estoy por el curso de seguridad en php, y px siempre hay dudas. Por otro lado este script sirve como aportación para los mas novatos en PHP. Código PHP: $name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars(str_replace(" ","",$_POST['email']));
$mensaje = htmlspecialchars($_POST['mensaje']);
function comprobar_email($email){
//compruebo unas cosas primeras
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
return true;
}
else {
return false;
}
}
}
}
}
}
if (empty($name) || empty($mensaje)) {
echo "Rellene todos los campos del formulario, Volver al <a href=\"form.html\">FORM</a>";
}
else
{
if (strlen ($name) > '100') {
echo "El Nombre no debe superar los 100 caracteres";
}
else
{
if (strlen ($mensaje) > '600') {
echo "Mensaje muy grande";
}
else
{
if (comprobar_email($email)) {
$remitente = "[email protected]"; /* Correo a donde se enviara el mensaje */
$destinatario = "[email protected]"; /* Correo que envia el mensaje, es util para que no envie siempre el mensaje a correo no deseado */
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "From: $destinatario \r\n";
$headers .= "Reply-To: $remitente \r\n";
$headers .= "Return-path: $remitente \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$body = "
<table><tr><td width=\"150\" valign=\"top\"><strong>Nombre:</strong></td><td> ".$name."</td></tr>"."
<tr><td valign=\"top\"><strong>Email:</strong></td><td> ".$email."</td></tr>"."
<tr><td valign=\"top\"><strong>Mensaje:</strong></td><td>".$mensaje."</td></tr></table>";
mail($remitente,"Probando",$body, $headers);
echo "Mensaje enviado con Exito";
} else
{
echo "Esta mal escrito el mail, porfavor volver a <a href=\"form.html\" >FORM</a>";
}
}
}
}
form.html Código HTML: <html>
<head>
<title>Formulario de Contacto</title>
<script type="text/javascript">
function setFocus(aField) {
document.forms[0][aField].focus();
}
function isAnEmailAddress(aTextField) {
if (document.forms[0][aTextField].value.length<5) {
return false;
}
else if (document.forms[0][aTextField].value.indexOf("@") < 3) {
return false;
}
else if (document.forms[0][aTextField].value.length -
document.forms[0][aTextField].value.indexOf("@") < 4) {
return false;
}
else { return true; }
}
function isEmpty(aTextField) {
if ((document.forms[0][aTextField].value.length==0) ||
(document.forms[0][aTextField].value==null)) {
return true;
}
else { return false; }
}
function validate() {
if (isEmpty("name")) {
alert("Por favor, rellene su nombre.");
setFocus("name");
return false;
}
if (isEmpty("mensaje")) {
alert("Por favor, Escriba su mensaje.");
setFocus("mensaje");
return false;
}
if (!isAnEmailAddress("email")) {
alert("La dirección de correo electrónico no es válida.");
setFocus("email");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="enviar.php" method="post" onSubmit="return validate();">
Nombre
<input type="text" name="name" /><br /><br />
Email
<input type="text" name="email" /><br /><br />
Mensaje
<textarea type="text" name="mensaje"></textarea><br /><br />
<input type="submit" value="Enviar" />
</form>
</body>
</html> |