あなたは(何らかの理由で)誰かが次のようなページにアクセスするのを止めようとしていると思います
profile/<user_id>
、そしてそれを見てuser_id
= 100、それから、、、などを試しprofile/101
ますprofile/102
。
その場合は、次のようなものを使用できます(自動インクリメントIDとともに)
class Crypt {
public static function encrypt($data) {
$config = LoadSomeConfig();
// open the module to be used. There are several listed at http://www.php.net/manual/en/mcrypt.ciphers.php
$mod = mcrypt_module_open($config->cipher, '', $config->mode, '');
// use config set initialization vector. We will use a constant here as we do not want to include this for decryption
if (isset($config->vector)) {
$iv = $config->vector;
} else {
die("NO IV SET!");
}
$key_size = mcrypt_enc_get_key_size($mod);
$key = substr($config->key, 0, $key_size);
mcrypt_generic_init($mod, $key, $iv);
// Do the encryption using the cipher module defined
$encrypted = mcrypt_generic($mod, $data);
// cleanup
mcrypt_generic_deinit($mod);
mcrypt_module_close($mod);
// Changed the output based on the config encoding value. Currently supported values, base64 and hex.
switch ($config->encoding) {
case "base64":
$encrypted = base64_encode($encrypted);
break;
case "hex":
$encrypted = bin2hex($encrypted);
break;
default:
break;
}
return $encrypted;
}
public static function decrypt($data){
if (empty($data)) {
return '';
}
// config options set include the cipher, mode and secret key
$config = LoadSomeConfig();
// Change encrypted data base to binary based on the encoding mechanism used to generate the data
switch ($config->encoding) {
case "base64":
$data = base64_decode($data);
break;
case "hex":
$data = pack("H*", $data);
break;
default:
break;
}
if (isset($config->vector)) {
$iv = $config->vector;
} else {
die("NO IV SET!");
}
$mod = mcrypt_module_open($config->cipher, '', $config->mode, '');
$key_size = mcrypt_enc_get_key_size($mod);
// max key size is 448 bits
$key = substr($config->key, 0, $key_size);
mcrypt_generic_init($mod, $key, $iv);
// decrypt the data
$decrypted = mdecrypt_generic($mod, $data);
// cleanup
mcrypt_generic_deinit($mod);
mcrypt_module_close($mod);
return trim($decrypted);
}
}
次に、次のようなルートがありますprofile/c2ffd340ea3b71ca065e6add4143f36d
プロファイル ページで、user_id が でアクセス可能であると仮定すると、次のようにuser_id
簡単に実行できます。
$user_id = Crypt::decrypt($user_id);
そして、通常どおりに進みます。誰かのプロフィールページへのリンクを作成するときは、次のようなものを使用しますprofile/<?php echo Crypt::encrypt($user->user_id); ?>