Cita:
Iniciado por nicolaspar
Uno muy efectivo es enviar un segundo parámetro que no es menos que el ID + un hash pasados por md5 (que no tiene vuelta).
Como el hash lo tenes vos, cuando levantas el ID lo comparas con esta segunda variable, concatenandola con el hash y pasándolo por md5. Ej:
Config:
$hash = "algo28762_{%";
Pagina 1:
Código PHP:
<a href="...?id=<?=$rs["id"];?>&i=<?=md5($rs["id"].$hash);?>">Detalle</a>
En este punto, te pueden escribir el id pero no que coincida con un i valido.
Pagina 2, al inicio:
Código PHP:
if( $_GET["i"] != md5($_GET["id"].$hash) ){
echo "quieren hacer trampita??"; exit;
}
O simplemente pasar solo i, y cuando hagas la consulta haces usas md5 desde mysql, en vez de where id='$id' haces esto:
Código PHP:
$r = mysql_query("Select * from tabla where MD5(concat(id,'".$hash."')) = '$i'");
Y sigo diciéndote, usar int, bigint, o lo que fuere es lo mejor, para eso estan hecho, y con estas formas podes lograr lo que estas buscando sin complicarte casi nada.
Yo tengo una tabla donde tengo un id numérico, y también guardo un determinado titulo.
Creo que si uno los dos campos obtengo el mismo resultado. por lo que en la url podrías poner.
/123/Titulo de algo
Asi evitas que te recorran la bd, ya que necesariamente se ocupan dos valores de la bd para mostrar la pagina.