Hola, me gustaría saber lo siguiente: ¿es posible hacer que tras efectuar un único envío, un formulario no acepte más reutilizaciones del usuario que acaba de utilizarlo? Pregunto esto porque no es difícil imaginarse a un grupo de cretinos aburridos sentados en torno a un ordenador y enviando toda una ráfaga de sandeces a través de un formulario de contacto. ¿Hay alguna forma de impedir esto?
Formulario de un solo uso
Lo que pides es dificil, ya que hay muchas variables, si se requiere estar registrado para usarlo, si no requiere registro, puedes blokear el formulario por medio de la ip del usuario, puedes usar sesiones, de tal forma que el formulario solo aparesca una vez y cuando se use, que ya no vuelva a aparecer. hay varias formas de hacer lo que pides, claro algo complicadas pero se puede, se necesita algo de paciencia para hacer eso.
Sí, me hago a la idea de que debe de ser algo complicado. Yo pienso en un sistema como el que supongo usan esas webs -generalmente de donaciones- que invitan al usuario a hacer click en un banner o imagen, pero advierten de que aunque se hagan varios clicks seguidos sólo es válido el primero (un click diario). Por eso imaginaba que ese método -sea el que sea- quizá pudiera servir para que un formulario acepte sólo un envío diario de cada visitante.
Parece dificilillo para un novato :( , a menos que haya herramientas específicas construidas para ese objetivo...
Parece dificilillo para un novato :( , a menos que haya herramientas específicas construidas para ese objetivo...
lo que puedes hacer es limitar el uso por ip, cada ip podra usar el formulario una vez al dia solamente, aunque eso dejaria a los que utilizan proxy sin poder susarlo.
Mira esto: http://www.cctw.aportaciones.net/con_sessiones.php , Actualiza la pagina unas 5 veces y veras lo que hace.
El Problema en esa pagina es que cuando cierras el navegador se pierde el conteo.
Mira esto: http://www.cctw.aportaciones.net/con_sessiones.php , Actualiza la pagina unas 5 veces y veras lo que hace.
El Problema en esa pagina es que cuando cierras el navegador se pierde el conteo.
¿Significaría eso que, si por ejemplo, alguien usa el formulario desde el ordenador de un cibercafé, ninguna de las siguientes personas que utilizaran ese equipo durante el resto del día podrían emplear el formulario? :shock:
Asi es amigo, si usas el blokeo de ip, si la ip es de un ciber cafe o es una ip externa y asu vez hay una red interna que obtiene el adcceso a internet por esa ip, todos los demas usuarios que quieran utilizar el formulario ya no podran usarlo, si ya fue usado.
De todas formas, creo que en el ejemplo del enlace el tiempo de bloqueo es de seiscientos segundos; quizá configurarlo así, para bloquearlo durante varios minutos -diez, por ejemplo-, sería suficiente para desalentar a los graciosos. Y por cierto, ¿qué codigo habría de usarse para conseguir tal cosa? :roll:
Asi es amigo, el script que hice puedes configurarlo por el tiempo que quieras, pero todo en segundos, Y deja de funcionar cuando se sierra la ventana, pero tambien seria un poco tedioso estar cerrando la ventana cada que quieran escribir otra vez, asi que supongo que los graciosos que escribin sin razon, les molestara un poco y dejaran de hacerlo.
Espero y te sirva Amigo, voy Ha tratar de hacer uno que use Cookies, espero y te sirva este script amigo. 8) 8) 8)
<?
$sesion="formulario";
$mostraren="600";
$ahora=@date("Y-n-j H:i:s");
@session_name("$sesion");
@session_start();
$duracion = (@strtotime($ahora)-@strtotime($_SESSION['llego']));
$esperar=$mostraren-$duracion;
if(!isset($_SESSION['llego'])){
@session_name("$sesion");
@session_start();
$_SESSION['llego']=$ahora;
echo "Hola Hace mas de 600 segundos que no actualizabas tu pagina";
}else{
if($duracion >= $mostraren){
@session_destroy();
@header("Location: ocultar.php");
}else{
echo "No Puedes Usar El Formulario, Espera $esperar segundos";
}
}
?>Espero y te sirva Amigo, voy Ha tratar de hacer uno que use Cookies, espero y te sirva este script amigo. 8) 8) 8)
Muchas gracias, serverdns, :D ,la verdad es que toda precaución contra los ciberpayasos es poca. No entiendo prácticamente nada de PHP, así que por si acaso te pregunto la conexión entre el script PHP y el formulario html/css se efectuaría en este caso de la misma forma que, por ejemplo, la unión entre un formulario de contacto html y el script PHP de envío, ¿correcto?
La forma De usarlo en tu web es simple:
Cualquier duda Preguntas. 8) 8) 8)
<?
$sesion="formulario";
$mostraren="600";
$ahora=@date("Y-n-j H:i:s");
@session_name("$sesion");
@session_start();
$duracion = (@strtotime($ahora)-@strtotime($_SESSION['llego']));
$esperar=$mostraren-$duracion;
if(!isset($_SESSION['llego'])){
@session_name("$sesion");
@session_start();
$_SESSION['llego']=$ahora;
?>
Aqui Pondras todo tu codigo html que quieres mostrar, en este caso todo el html del formulario.
<?
}else{
if($duracion >= $mostraren){
@session_destroy();
@header("Location: ocultar.php");
}else{
?>
Aqui pondras tu mensaje donde dices tu mensaje que ya no pueden usar el formulario, o podrias redirecionar a otra pagina.
<?
}
}
?> Cualquier duda Preguntas. 8) 8) 8)
Muy agradecido, serverdns :) . Precisamente he encontrado un artículo sobre protección de formularios contra el spam http://surlandia.com/2006/11/08/evitar-spam-en-formularios-php/, y veo que entre otras cosas se menciona el sistema que tan amablemente me has explicado. Por cierto, en el comentario 33 de ese hilo de discusión se habla de otra posibilidad, concretamente de ocultar el formulario cuando el mensaje ha sido enviado. Creo entender que eso se consigue con una mezcla de css y php, pero no acabo de comprenderlo del todo. ¿Sabes cómo se aplicaría ese método? :roll:
En realidad lo que se explica alli es como usar una funcion en javascript que te detecte cuando el formulario fue enviado y lo oculte, pero al igual cuando cierras el navegador y lo abres denuevo, aparecera.
Puedes probarlo tal y como dice alli, le das nombres a tus DIVs y creas la funcion que alli explica en el comentario 32 y talvez funcione, yo no se mucho de javascript asi que no puedo ayudarte con ese script.
Pero Ya casi termino el script en php que te comente con Cookies, lo que este ara sera crear una Cookies donde guardara una variable que llevara el conteo del tiempo, y no desaparecera hasta limpiar las Cookies, que es un poco tedioso hacer cada vez que quieran usar el formulario, asi que se desanimaran en hacerlo. Claro a los que lo usen mas de una vez, y esto no esta basado en ip, sino en la maquina. si que cada maquina podra enviar un mensaje digamos cada 10 minutos solamente o 20 segun lo decidas tu.
Pronto Te Dejare Aqui el codigo 8) 8) 8) 8) 8)
Puedes probarlo tal y como dice alli, le das nombres a tus DIVs y creas la funcion que alli explica en el comentario 32 y talvez funcione, yo no se mucho de javascript asi que no puedo ayudarte con ese script.
Pero Ya casi termino el script en php que te comente con Cookies, lo que este ara sera crear una Cookies donde guardara una variable que llevara el conteo del tiempo, y no desaparecera hasta limpiar las Cookies, que es un poco tedioso hacer cada vez que quieran usar el formulario, asi que se desanimaran en hacerlo. Claro a los que lo usen mas de una vez, y esto no esta basado en ip, sino en la maquina. si que cada maquina podra enviar un mensaje digamos cada 10 minutos solamente o 20 segun lo decidas tu.
Pronto Te Dejare Aqui el codigo 8) 8) 8) 8) 8)
Muy agradecido, serverdns, te agradezco mucho tus informaciones. Eso que comentas de las cookies parece prometedor, pues si no he entendido mal el bloqueo del formulario se limitaría únicamente al equipo desde el que se haya efectuado el último envío. En cuanto a las instrucciones derivadas del enlace que antes adjunté, el comentario 32 explica, en efecto, el ocultamiento del formulario mediante Javascript; en cambio, el 33 habla de un método para conseguir el mismo objetivo, pero sin Javascript, usando sólo css y algo de PHP. Bueno, en cualquier caso quedo a la espera de ese procedimiento basado en cookies.
Muchas gracias de nuevo y un saludo. 8)
Muchas gracias de nuevo y un saludo. 8)
Listo Amigo, puedes verlo funcionar en: http://www.cctw.aportaciones.net/con_cookies.php esta basado con cookies, actualiza la pagina despues de entrar, cierra el explorador y vuelve a entrar, deberia persistir la sesion y mostrarte el mismo mensaje que viste antes de cerrar el esplorador, el efecto pasa despues de 5 minutos.
Espero Y Te Sirva, Cualquier Duda Preguntas. La cookie no sera borrada si cierras el explorador, el tiempo de vida es de 5 minutos, cada 5 minutos podras usar el formulario. 8) 8)
$web="miweb";
$vida=300;
$llego=time();
$caduca=time()+ $vida;
if(!isset($_COOKIE[''.$web.''])){
setcookie("".$web."","".$llego."","".$caduca."");
echo "Gracias por Visitarme
";
}else{
echo "Gracias por Visitarme Otra Vez
";
}
?>Espero Y Te Sirva, Cualquier Duda Preguntas. La cookie no sera borrada si cierras el explorador, el tiempo de vida es de 5 minutos, cada 5 minutos podras usar el formulario. 8) 8)
Muchas gracias, amigo, lo probaré y te comentaré lo antes posible.
Un saludo y gracias de nuevo 8) 8)
Un saludo y gracias de nuevo 8) 8)
Pues creo que hay algo que no va, porque el enlace me lleva a una página (en la que aparece un mensaje de error, como de página no encontrada, aunque salvo ese recuadro el resto del contenido es visible) que me redirecciona a otra, pero no he visto el efecto que mencionas.
Miraré luego, por si acaso...
Un saludo y gracias de todas formas. :wink:
Miraré luego, por si acaso...
Un saludo y gracias de todas formas. :wink:
Tienes Razon Amigo, el problema es que el link lo puse equivocado, este es el bueno:
http://mysqlserver.us/ocultar2.php
Espero y este si puedas verlo el efecto.
8) 8) 8)
http://mysqlserver.us/ocultar2.php
Espero y este si puedas verlo el efecto.
8) 8) 8)
Gracias, ahora ya lo he visto. Se supone que primero dice "Gracias por visitarme" y luego "Gracias por visitarme otra vez", y que este segundo mensaje se mantiene durante cinco minutos, ¿correcto?
Asi es amigo, pero el tiempo que se mentiene tu lo puedes modificar por el que tu quieras.
Espero y Te sirva amigo.
Espero y Te sirva amigo.
Quedo agradecido por tu ayuda y explicaciones, serverdns, parece un sistema muy recomendable contra los graciosillos que andan sueltos por ahí.
Muy amable por todo, amigo 8) 8) 8)
Muy amable por todo, amigo 8) 8) 8)
Para eso estamos aqui amigo, para ayudarnos unos a otrso. 8) 8) espero que te sirva, y que dejen de molestarte los graciositos. :lol: :lol: :lol:
Insomne escribió:Hola, me gustaría saber lo siguiente: ¿es posible hacer que tras efectuar un único envío, un formulario no acepte más reutilizaciones del usuario que acaba de utilizarlo? Pregunto esto porque no es difícil imaginarse a un grupo de cretinos aburridos sentados en torno a un ordenador y enviando toda una ráfaga de sandeces a través de un formulario de contacto. ¿Hay alguna forma de impedir esto?
Problema URGENTE da SOLUCIONAR - Tengo que crear la pagina web de my empresa. SD
me pueden dar ayuda esdtoy creando my web pero no me queda claro el css.
He seguido lo pasos de CCTW CURSO pero a mi no me sale lo que ponen en la inmagines.
Tengo prisa para crea mi web de empresa. y me he quedado parado alli.
No me carga el fondo! Yo Uso Internet Explorer.
Estoy utilizando HTML- kit
esto es el index : el index html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Pagina Principal del Ejemplo CCTW</title>
<link rel="stylesheet" href="estilos.css" type="text/css"
media="all">
</head>
<body>
<p>Bienvenidos a mi página web. Muy pronto estará lista!</p>
<p>Página creada gracias a<a href="http://www.comocreartuweb.com"
target="_blank">CCTW</a></p>
</body>
</html>
Y esto es el CSS:
body {background-color:#E6E6FA; background-image:url(objetos/fondo.png);
background-position:center center; background-repeat:no-repeat; height:100%;;}
AYUDAME PORFAVOR :[correo eliminado]