ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: EmiOconnor en Marzo 24, 2010, 23:42:32

Título: (AYU) Codigo anti-spam
Publicado por: EmiOconnor en Marzo 24, 2010, 23:42:32
Hola gente, necesito lo siguiente:

Quiero crear una sóla página HTML para descargar un archivo. La página tiene que tener un campo donde "obligue" al usuario a poner un código (palabra) anti-spam para que al clickear en "DESCARGAR" inicie la descarga del archivo.

Acá un ejemplo de lo que necesito: (no se rían de mi dibujo jaja)
(http://img185.imageshack.us/img185/166/dibujoubf.jpg)

La idea es que si escribe mal la palabra o no la escriba, no le deje descargar el archivo.

Gracias desde ya por cualquier ayuda!
Saludos!
Título: Re: (AYU) Codigo anti-spam
Publicado por: Camello_AR en Marzo 25, 2010, 02:26:15
eso se llama captcha y hay varios scripts para hacerlo, te aconsejo que busques en la red
Título: Re: (AYU) Codigo anti-spam
Publicado por: EmiOconnor en Marzo 25, 2010, 19:48:06
Gracias. Encontré uno, pero nose cómo hacer que al clickear en "Verificar código" me lleve al enlace que yo quiera. En mi caso, un enlace para descargar un archivo.

Acá el código:
Citar<?php
session_start();
if ($_POST['action'] == "checkdata") {
   if ($_SESSION['tmptxt'] == $_POST['tmptxt']) {
      echo "Bienvenido";
   } else {
      echo "Intentalo nuevamente";
   }
   exit;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CAPTCHA con PHP</title>
<meta name="description" content="CAPTCHA con PHP: ejemplo para demostrar la creacion de Captcha con PHP." />
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" class="descdet">
   <div class="bordeder">
      <strong class="subder">CAPTCHA con PHP

      Ingresar el texto mostrado en la imagen

      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <img src="captcha.php" width="100" height="30" vspace="3">

        <input name="tmptxt" type="text" size="30">

        <input name="btget" type="submit" class="boton" value="Verificar Codigo">
        <input name="action" type="hidden" value="checkdata">
      </form>
   </div>
   </td>
  </tr>
</table>
</body>
</html>

Fuente: http://blog.unijimpe.net/crear-captcha-con-php/
Título: Re: (AYU) Codigo anti-spam
Publicado por: Camello_AR en Marzo 25, 2010, 21:32:53
En ese caso usa la misma página para mostrar el captcha como para verificarlo, a mi entender lo que haría es reemplazar el

echo "Bienvenido";


por

//codigo para obtener el archivo, redirección, etc
die;

  (el die final es para terminar la ejecución del script mandando el archivo solicitado y no mostrar el resto del archivo PHP)
Título: Re: (AYU) Codigo anti-spam
Publicado por: EmiOconnor en Marzo 25, 2010, 22:50:17
Gracias Camello, disculpá que sea tan pesado... pero soy un marmol con PHP.

Dejé el código así:
Citar<?php
session_start();
if ($_POST['action'] == "checkdata") {
   if ($_SESSION['tmptxt'] == $_POST['tmptxt']) {
      die;
   } else {
      echo "Intentalo nuevamente";
   }
   exit;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CAPTCHA con PHP</title>
<meta name="description" content="CAPTCHA con PHP: ejemplo para demostrar la creacion de Captcha con PHP." />
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" class="descdet">
   <div class="bordeder">
      <strong class="subder">CAPTCHA con PHP

      Ingresar el texto mostrado en la imagen

      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <img src="captcha.php" width="100" height="30" vspace="3">

        <input name="tmptxt" type="text" size="30">

        <input name="btget" type="submit" class="boton" value="Verificar Codigo">
        <input name="action" type="hidden" value="checkdata">
      </form>
   </div>
   </td>
  </tr>
</table>
</body>
</html>

Ahora... ¿dónde meto el enlace del archivo a descargar una vez que coloquen correctamente el codigo captcha?
Título: Re: (AYU) Codigo anti-spam
Publicado por: Predicador en Marzo 26, 2010, 06:07:33
Hola,
saca el die; (que no es necesario ya que hay un exit; debajo) y pone header('Location: http://www.example.com/archivo.jpg'); (obvio que ahi pones la URL que vos queres).
Baii
Título: Re: (AYU) Codigo anti-spam
Publicado por: EmiOconnor en Marzo 26, 2010, 15:53:20
Cita de: Predicador en Marzo 26, 2010, 06:07:33
Hola,
saca el die; (que no es necesario ya que hay un exit; debajo) y pone header('Location: http://www.example.com/archivo.jpg'); (obvio que ahi pones la URL que vos queres).
Baii

Groso! Funcionó de 10.

Gracias a los 2 por la ayuda.
Saludos!
Título: Re: (AYU) Codigo anti-spam
Publicado por: Camello_AR en Marzo 27, 2010, 00:50:12
el problema del metodo de predi es que es muy facil general un link directo al archivo,

Generalmente se usa una rutina que lea el archivo y lo envie al navegador sin redireccionar al archivo algo como


$filename = "archivo_requerido.ext"
$mime = rutina para determinar tipo de archivo;
header("Content-type: $mime");
//contenido adjunto
readfile($filename);


Para el "contenido adjunto" investiga sobre el header content disposition attachment (o parecido, estoy a las apuradas pq se me rompio el cargador de la note y tengo la carga minima hasta mañana) y la posibildad de leer $filename y saber el tamaño de archivo (no es necesario pero al que descarga le permite saber cuanto contenido tiene que bajar y cuanto lleva bajado)

readfile lo que hace es leer un archivo y enviarlo como salida de PHP (directamente al navegador)