Foros del Web » Programando para Internet » PHP »

Anti flood en formulario de envio

Estas en el tema de Anti flood en formulario de envio en el foro de PHP en Foros del Web. Olas tengo este codigo pero no se como ponerle el anti flood: Código: public function add_muro(){ db::set_names(); $date = date("Y-m-d"); //definimos las variables $m_user_escritor = ...
  #1 (permalink)  
Antiguo 25/01/2012, 15:21
 
Fecha de Ingreso: octubre-2011
Ubicación: Peru
Mensajes: 75
Antigüedad: 13 años, 1 mes
Puntos: 2
Anti flood en formulario de envio

Olas tengo este codigo pero no se como ponerle el anti flood:

Código:
	public function add_muro(){
		db::set_names();
		$date = date("Y-m-d");
		//definimos las variables
		$m_user_escritor		=	$_SESSION['user_zero'];
		$m_user_receptor		=	strip_tags($_POST['m_user_receptor']);
		$m_texto   =   strip_tags($_POST['m_texto']);
		//hacemos el insert
		$sql="INSERT INTO `m_muro` (`m_user_escritor`, `m_user_receptor`, `m_texto`, `m_date`) VALUES (?, ?, ?, '$date')";
		$stmt=db::getInstance()->prepare($sql);
		//insertamos las variables
		$stmt->bindParam(1, $m_user_escritor);
		$stmt->bindParam(2, $m_user_receptor);
		$stmt->bindParam(3, $m_texto);
		$stmt->execute();
  #2 (permalink)  
Antiguo 25/01/2012, 15:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Anti flood en formulario de envio

a que te refieres con anti-flood (inundación a mi parecer)??
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 25/01/2012, 15:27
 
Fecha de Ingreso: octubre-2011
Ubicación: Peru
Mensajes: 75
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Anti flood en formulario de envio

Osea si uno agregar un comentario pase 1 minuto para q pueda agregar otro
  #4 (permalink)  
Antiguo 25/01/2012, 15:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Anti flood en formulario de envio

Agrega una entrada en tu variable de sesión que tenga la última vez que comentó (usando time()), luego resta ese valor al time() actual, y si es mayor a 60 segundos, dejas que vuelva a comentar.

time() te regresa el tiempo en segundos desde el UNIX EPOC.

Saludos.
  #5 (permalink)  
Antiguo 25/01/2012, 16:00
 
Fecha de Ingreso: octubre-2011
Ubicación: Peru
Mensajes: 75
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Anti flood en formulario de envio

GatorV lo puse asi pero siempre me aprece 1 mintuo de espera:

public function add_muro(){
db::set_names();
$tiempo = time();
$date = date("Y-m-d");
//definimos las variables
$m_user_escritor = $_SESSION['user_zero'];
$m_user_receptor = strip_tags($_POST['m_user_receptor']);
$m_texto = strip_tags($_POST['m_texto']);
//hacemos el insert
$sql="INSERT INTO `m_muro` (`m_user_escritor`, `m_user_receptor`, `m_texto`, `m_date`) VALUES (?, ?, ?, '$date')";
$stmt=db::getInstance()->prepare($sql);
//insertamos las variables
$stmt->bindParam(1, $m_user_escritor);
$stmt->bindParam(2, $m_user_receptor);
$stmt->bindParam(3, $m_texto);
if ($tiempo < 60) {
$stmt->execute();
echo '<div style="margin-top: 12px"><li class="muro_coment">
<table><td valign="top" width="50">
<img src="http://www.tayfununal.com/wp-content/uploads/2010/01/check1.png"/></td>
<td valign="top">
'.$_POST['m_texto'].'
</td></table>
</li></div>';
}else{
echo "Tienes que esperar 1 minuto apra poder otro";
}
}
  #6 (permalink)  
Antiguo 25/01/2012, 16:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Anti flood en formulario de envio

Lee bien mi comentario, tienes que hacer la resta de el tiempo actual, menos el tiempo de la última inserción.

Pseudocodigo:
Código:
comenta {
      ahora = time();
      ultimocomentario = session_ultimocomentario();
      diferencia = ahora - ultimocomentario;

      if (diferencia > 60) { mas de un minuto p.e.
              inserta_comentario();
              ultimocomentario = ahora;
      } else {
             imprime(debes de esperar 60 segundos o más);
      }
}

Etiquetas: formulario, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:46.