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!
eso se llama captcha y hay varios scripts para hacerlo, te aconsejo que busques en la red
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/
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)
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?
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
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!
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)