Duda como generar un link aleatorio...!!

Iniciado por TrashAmbishion, 30 Junio 2013, 21:56 PM

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

TrashAmbishion

Hola amigos hace un tiempo publique una duda sobre como puedo hacer para que mis usuarios tengan que acceder unicamente desde un mi link que dice Correo, algunos me dijeron que chequeara el lugar del que venian no se si era con "location", cree un hilo nuevo porque quisiera saber si es posible crear un link aleatorio que se genere cada ves que un usuario quiera entrar....

Salu2

engel lex

para generar un link aleatorio haces lo siguiente

creas una tabla para ese fin con usuario y valor a meter

usas rand() para generar un numero al azar
http://php.net/manual/es/function.rand.php

guardas ese valor en la tabla y se lo pasas al usuario, si el devuelve un link correspondiente de usuario y link aleatorio correcto listo...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

#!drvy

Esas cosas se suelen hacer con sessiones. Son muy parecidas a los captchas. Te dejo un ejemplo:

generar.php
Código (php) [Seleccionar]
<?php

@session_start();

$nombre_archivo 'archivo.txt';
$link 'http://mipagina.com/descargar.php';

// Generar un hash en sha1 totalmente aleatorio.
$sesc sha1(rand(0,999).rand(8,888).$nombre_archivo.rand(1,9999));

// Poner el hash en session para futura comprobación.
$_SESSION['link'][$nombre_archivo] = $sesc;

echo 
'<h1>Tu archivo esta listo</h1>';
echo 
$link.'?archivo='.$nombre_archivo.'&sesc='.$sesc;

?>


Esto generaría un enlace del siguiente tipo:
http://mipagina.com/descargar.php?archivo=archivo.txt&sesc=7c44781daa257c8931fed1f0eb79f4c8a0bc98a0

descargar.php
Código (php) [Seleccionar]
<?php

@session_start();

// Si sesc o archivo estan vacios, morrimos.
if(empty($_GET['sesc']) || empty($_GET['archivo'])){ die('Consulta no valida. SESC o ARCHIVO faltan.'); }

// Si la session del usuario no coincide con la que nos envia... morrimos.
elseif($_GET['sesc']!==@$_SESSION['link'][$_GET['archivo']]){ die('Tu session no es valida.'); }

// Destruir la session para que no pueda volver a utilizar el mismo enlace.
unset($_SESSION['link'][$_GET['archivo']]);

// Descarga de archivo.
header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=\"".$_GET['archivo']."\"");
die(
readfile($_GET['archivo']));

?>


PD: Obviamente este código es mega-super-hiper inseguro. Pero tu ya tendrás la manera de generar los archivos y tal así que te lo muestro como ejemplo.

PD2: Como ta ha mencionado @engelx, si vas a utilizar usuarios y quieres que los enlaces sean permanentes para ellos tendrás que almacenar el valor en la base de datos.

Saludos