to je stejna snaha, jako znepristupnit zdrojovy kod html stranky. prohlizec vysle dotaz na konkretni stranku - musi tedy znat jeji uri. tudiz ho zna i uzivatel.
neco me napada - dynamicky generovani odkazu, pro kazdou stranku jiny.
do tabulky se ulozi trojice - ip adresa, vygenerovane podivne uri, skutecne uri.
pri kliknuti na odkaz se vyhleda zaznam odpovidajici klici (ip adresa, vygenerovane podivne uri) a nacte se (ne presmeruje) obsah puvodni stranky. Po nacteni se zaznam smaze, na dalsi odkazy se vygeneruji dalsi.
Nevím jestli chápu otázku, ale:
Zobrazovaná adresa skrýt nejde, ale je možno úspěšně pomocí PHP zamaskovat skutečné umístění souborů na serveru.
Jestli například máš soubor honza.html umístěný na
http://lama.wz.cz/soubory/honza.html
je možné zamaskovat jeho skutečnou adresu a přistupovat k němu pomocí URL třeba
http:/lama.wz.cz/?soubor=1sfd24sdf přičemž ale tahle adresa už skrýt nepůjde, bude vždycky pro návštěvníka stránek čitelná.
pro soubory v jednom adresari muzes zkusit tohle (na podadresare to nefunguje):
CREATE TABLE `links` (
`uri` varchar(255) NOT NULL,
`gen_uri` varchar(16) NOT NULL,
`platnost` timestamp NOT NULL,
PRIMARY KEY (`gen_uri`)
) ENGINE=MyISAM;
test.php:
<?php
mysql_connect("localhost","root","");
mysql_select_db("test");
function generuj_link($orig_uri){
// funkce nic nevraci, pouze vypisuje.
$a_vyber = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,3,4,5,6,7,8,9);
$gen_uri = '';
srand((double)microtime()*1000000);
for($i=0;$i<16;$i++) $gen_uri .= $a_vyber[array_rand($a_vyber)];
$orig_uri = addslashes($orig_uri);
mysql_query("DELETE FROM links WHERE platnost < NOW()");
mysql_query("INSERT INTO links VALUES ('$orig_uri','$gen_uri',NOW()+1200)");
echo "redir.php?$gen_uri";
}
?>
<a href='<?php generuj_link("test.php"); ?>'>klikni sem</a>
redir.php:
<?php
if ($_SERVER["QUERY_STRING"]=='') die("Neplatny odkaz.");
mysql_connect("localhost","root","");
mysql_select_db("test");
$res = mysql_query("SELECT uri FROM links WHERE gen_uri='$_SERVER[QUERY_STRING]' LIMIT 1");
echo mysql_error();
if (!mysql_num_rows($res)) die("Neplatny odkaz. Obnovte puvodni stranku.");
include(mysql_result($res,0,0));
?>
$hash["a"]="f/s1";
$hash["b"]="re";
$hash["c"]="m0n";
$hash["d"]="h";
$hash["e"]="4";
$hash["f"]="96d3";
$hash["g"]="[]";
$hash["h"]="aaf";
$hash["ch"]="cvx4";
$hash["i"]="4fd12";
$hash["j"]="c47";
$hash["k"]="1kk";
$hash["l"]="_99x_";
$hash["m"]="331";
$hash["n"]="$14$";
$hash["o"]="_g";
$hash["p"]="-f-d";
$hash["q"]="-";
$hash["r"]="cc";
$hash["s"]="r";
$hash["t"]="y9s";
$hash["u"]="x";
$hash["v"]="oi65";
$hash["w"]="3d";
$hash["x"]="fa6";
$hash["y"]="_r4";
$hash["z"]="99";
$hash["_"]="-1";
$hash["-"]="62";
$hash["/"]="qw";
function DecodeDir($dat){
global $hash;
$dir=strtr($dat, $hash);
return $dir;
}
function EncodeDir($dat2){
global $hash;
$dir2=strtr($dat2, Array_Flip ($hash));
return $dir2;
}