(AYU) Codigo anti-spam

Publicado por EmiOconnor, Marzo 24, 2010, 23:42:32

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

EmiOconnor

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)


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!

Camello_AR

eso se llama captcha y hay varios scripts para hacerlo, te aconsejo que busques en la red

EmiOconnor

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/

Camello_AR

#3
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)

EmiOconnor

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?

Predicador

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
En la mayoría de las comunidades online el 90% de los usuarios son mirones que nunca contribuyen, el 9% contribuyen un poco y el 1% son los responsables de casi toda la acción. Nielsen

EmiOconnor

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!

Camello_AR

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)