Comunidad de diseño web y desarrollo en internet online

formulario e-mail

Citar            
MensajeEscrito el 17 Feb 2005 11:10 pm
Muy buenas,
Tengo una página y estoy utilizando un formulario para que me envien información por e-mail a mi correo, creo que es una chorrada mi pregunta pero bueno...
Me gustaría saber si hay alguna forma de restringir el número de envios a mi correo sin usar base de datos??es decir poner un tope a las personal que me envían información.
uso este código para que me envien la informacion

enviar = function () { if (email_txt.text.length && nombre_txt.length && titulo_txt.length && mensaje_txt.length) {if (email_txt.text.indexOf("@") != -1 && email_txt.text.indexOf(".") != -1) {form_lv = new LoadVars();form_lv.nombre = nombre_txt.text;form_lv.mail = email_txt.text;form_lv.mensaje = mensaje_txt.text;form_lv.titulo = titulo_txt.text;form_lv.sendAndLoad("http://xxx/send.php", form_lv, "POST");mensaje_txt.text = "Enviando Mensaje..";nombre_txt.text = "";email_txt.text = "";titulo_txt.text = "";form_lv.onLoad = function() {trace("LLEGO");if (this.estatus == "ok") {mensaje_txt.text = "Tu mensaje fue enviado...";nombre_txt.text = "";email_txt.text = "";titulo_txt.text = "";} else {mensaje_txt.text = "Problemas con el servidor\nIntentalo de Nuevo";}};} else {email_txt.text = "Correo Invalido";}} else {email_txt.text = "Dato Necesario";nombre_txt.text = "Dato Necesario";titulo_txt.text = "Dato Necesario";mensaje_txt.text = "Dato Necesario";}};
borrar = function () { nombre_txt.text = "";email_txt.text = "";mensaje_txt.text = "";titulo_txt.text = "";};

enviar_btn.onRelease = enviar;
borrar_btn.onRelease = borrar;

Por vibet

38 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Feb 2005 08:24 am
Pues si ya usas php para enviar el email en el mismo incluye codigo para que guarde la ip del que lo ejecuta en un xml y el numero de veces que lo hace para comprobar si ha enviado muchos emails y bloquearselos. Ahora mismo no estoy del todo seguro de como hacerlo (nota mental: tengo que seguir con mi librito de php) pero buscando un poco algun tutorial de php decente no creo que tengas muchos problemas.

De todas formas me ha entrado el gusanillo y voy a intentar hacer algo parecido en cuanto tenga un rato asi que ya te contare.

Saludos!

Por Iox

61 de clabLevel



 

latitud: 43º17'38''N longitud: 4º59'47''O

firefox
Citar            
MensajeEscrito el 26 Feb 2005 04:56 pm
YA LO TENGO. Por fin, lo consegui. Funciona!!! Usando las funciones DOM de php de las que hace unos dias no tenia ni idea: abro un archivo xml, busco si la ip del que lo manda el email, si ya esta registrada saco el numero que veces que lo ha hecho, lo comparo.... Creo que ya pillais por donde van los tiros. Este es el codigo:

Código :

<?php
$usuarios = new domdocument("1.0");
$usuarios->preserveWhiteSpace=false;
$usuarios->load("usuarios.xml");
//inicializamos el tema del xml, creando un nuevo objeto dom y cargando el archivo xml.

$ipencuestion=$REMOTE_ADDR;
//aqui definimos la ip del visitante

$personas_nl=$usuarios->getElementsByTagname("persona");
//creamos un nodelist con todos los tags de persona

foreach ($personas_nl as $persona_nl){
   $mi_array[$x]=$persona_nl->nodeValue;
   $x++;
}
//mediante un codigo conseguido tras la mezcla de CC con kas limon, convertimos el nodelist en un array. Lla idea es que un nodelist no es un array, luego no podemos hacer busqudas en el, pero que si funciona con foreach

if(in_array($ipencuestion,$mi_array)){
   echo "la ip si esta en el xml <br>";
   
   $numeroregistro = array_search($ipencuestion,$mi_array);
   //aqui conseguimos el numero de registro de la ip, MUY IMPORTANTE

   foreach ($personas_nl as $node_numero_veces){
      $array_veces[$y]=$node_numero_veces->getAttribute("num");
      $y++;
   }
   $numero_veces=$array_veces[$numeroregistro];
   echo $numero_veces."<br>";
   //bueno, ahora hemos sacado el numero de veces que la gente ha enviado el email
   
   
   if ($numero_veces>4){
   echo "&estatus=demasiados";
   
   }else{
      //aqui se ponen las acciones si la ip si esta registrada pero no ha llegado hasta el limite de emails
      
      $numero_veces++;
      $raiz=$usuarios->documentElement;
      $registro_actual = $raiz->getElementsByTagName('persona')->item($numeroregistro);
      $registro_actual->setAttribute("num",$numero_veces);
      $usuarios->save("usuarios.xml");
      
      $sendTo = $_POST["mail"];
      $subject = $_POST["titulo"];
      $headers = "From: " . $_POST["nombre"]; 
      $headers .= "<" . $_POST["mail"] . ">\r\n";
      $headers .= "Reply-To: " . $_POST["mail"]; 
      $message = $_POST["mensaje"];
      mail($sendTo, $subject, $message, $headers);
      echo "&estatus=ok";
   }
   
   
}else{
   //aqui se ponen las acciones si la ip no esta registrada
   $raiz=$usuarios->documentElement;
   $persona_nueva = new domelement("persona");
   $persona_nueva = $raiz->appendChild($persona_nueva);
   $persona_nueva->setAttribute("num",1);
   $persona_nueva->nodeValue=$ipencuestion;
   $usuarios->save("usuarios.xml");
   
   $sendTo = $_POST["mail"];
   $subject = $_POST["titulo"];
   $headers = "From: " . $_POST["nombre"]; 
   $headers .= "<" . $_POST["mail"] . ">\r\n";
   $headers .= "Reply-To: " . $_POST["mail"]; 
   $message = $_POST["mensaje"];
   mail($sendTo, $subject, $message, $headers);
   echo "&estatus=ok";
}

?>


Y el XML:

Código :

<?xml version="1.0" ?>
<usuarios>
   <persona num="2">127.0.0.1</persona>
</usuarios


Al flash tambien le he hecho algun pequeño cambio para que reconozca la variable estatus y diga si se ha enviado el mensaje, si ya son demasiados o si no se ha podido contactar con el servidor, pero no creo que nadie tenga ningun problema en hacerlo.

La parte del envio del email, las variables y todo eso, no se que anduve haciendo asi que mejor echarle un vistazo, porque creo que no se corresponde del todo con el codigo que me diste, pero simplemente cambialo.

El numero maximo de emails ponlo aqui:

Código :

if ($numero_veces>4){ 


Bueno, han sido bastantes horas de esfuerzo (mi librito de php 5 no es tan bueno, como pensaba, el capitulo de XML es una p*M*!!). Puede que mi codigo no sea muy... decente, pero mas o menos funciona. Se admiten sugerencias. Espero que te sirva para resolver tu problema, pero de todas formas hay que ver lo que uno aprende tratando de solucionar un problemilla. No se si a algun BOFH le interesará colgarlo como ejemplo o algo asi, pero estoy a vuestra completa disposicion.

Saludos!

*perdonad los acentos, es que estoy cansado... :P

Por Iox

61 de clabLevel



 

latitud: 43º17'38''N longitud: 4º59'47''O

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.