私はこれに受け入れられた解決策を使用しました 質問 たとえば/ index.php?id = 3のidで暗号化するために。問題は、暗号化された値をURLとして送信できないことです。例/ index.php?id = dsf13f3343f23/23 =。 URLに奇妙な文字が含まれることがあるためです。最後に=
サインがあることに注意してください
URLで渡される値の奇妙な文字は、 _urlencode(
_ )を使用してエスケープする必要があります。
たとえば、コードの次の部分:
_echo urlencode('dsf13f3343f23/23=');
_
あなたに与えるだろう:
_dsf13f3343f23%2F23%3D
_
これは、URLパラメーターとして正常に機能します。
また、複数のパラメーターを使用してクエリ文字列を作成する場合は、 http_build_query()
関数を確認してください。
例えば :
_echo http_build_query(array(
'id' => 'dsf13f3343f23/23=',
'a' => 'plop',
'b' => '$^@test',
));
_
あなたに与えるでしょう:
_id=dsf13f3343f23%2F23%3D&a=plop&b=%24%5E%40test
_
この関数は、パラメーター自体のエスケープと連結を処理します;-)
PHPの urlencode()
関数を使用して、値をURLに挿入する前にエンコードします。
string
urlencode
( string
$str
)
この関数は、URLのクエリ部分で使用される文字列をエンコードするときに、変数を次のページに渡す便利な方法として便利です。
この関数は、=
などの「奇妙な」文字を、URLに安全に入力できる形式に変換します。次のように使用できます。
Header('Location: /index.php?id=' . urlencode($id))
Base64を使用してURLのバイナリ値をエンコードする場合は、 RLとファイル名の安全なアルファベットのバリエーション もあります。
strtr
function を使用して、一方をアルファベットからもう一方に変換できます。
$base64url = strtr($base64, '+/', '-_');
$base64 = strtr($base64url, '-_', '+/');
したがって、これらの関数を使用してbase64urlをエンコードおよびデコードできます。
function base64url_encode($str) {
return strtr(base64_encode($str), '+/', '-_'));
}
function base64url_decode($base64url) {
return base64_decode(strtr($base64url, '-_', '+/'));
}
パラメータの暗号化には使用できません。
そのまま送信:
/index.php?id=3
何も悪いことはありません。