1

php のrawurlencodeの結果を短くする方法はあり ますか? website.php?='rawurlencoderesult' などのリンクに配置すると、かなり長くなります。暗号化された値を保持するため、エンコーディングは長くなります。

これを PHP 内でネイティブに行う方法はありますか。前もって感謝します。

4

2 に答える 2

2

あなたの暗号化アルゴリズムは、URL で禁止されている多くの文字を生成していると思います (つまり、バイナリ文字列を出力します)。それらを URL エンコードした後、すべての不正な文字が%xxコードに置き換えられるため、サイズは基本的に 3 倍になります。

これを回避するには、まず暗号化された値の文字列を URL で許可されている文字の範囲に変換する必要があります0123456789abcdefghijklmnopqrstuvwxyz-_.~

これを行う 1 つの方法 (非効率的ではありますが) を使用するbin2hex()(そしてhex2bin()元に戻す) ことです。上で概説したように、文字の全範囲を使用する変換関数を使用することをお勧めしますが、現時点では 1 つを指すことはできません。

于 2012-09-28T09:21:41.090 に答える
0

You sort of answer your first question with:

"The encoding is long because it holds an encrypted value."

There are lots of semi-complicated ways of keeping this server-side, it sort of depends on the usage of your links. Personally I'd keep it the way it is, or store the value of "rawurlencoderesult" in a variable via AJAX then have it in a session-variable or within a database.

于 2012-09-28T08:18:03.097 に答える