ページの URL の一部として渡すトークンを作成しています。rawurlencode ()を使用して文字列をエンコードし、トークンとして送信しますが、受信したトークン (URL パラメーターとして渡される) をデコードすると、わずかに異なる文字列が得られることがわかります。
私の URL は次のようになります: /path/to/file.html?token=abcd123
ここに私が使用しているコードのスニペットがあります。私は明らかに長いことをしていますか? それができない場合、(暗号化された) トークンを作成して URL に渡すより良い方法はありますか?
<?php
//send
$raw = "some secret string";
$token = rawurlencode($raw);
//recieve
$data = rawurldecode($token);
?>
[編集]
enc(dec)ryption 機能を削除しました - それらは問題の原因ではありませんでした - そしてニシンでした。私は問題を特に rawurlencode/decode が動作する方法で対称的ではないことに絞り込みました。
rawurlencoded 文字列をデコードすると、別の文字列が返されます (同様の文字列ですが、一部が欠落しています)。確かに、URL の基本的な部分にバグがあるはずがないので、何か間違ったことをしているに違いありません。問題は、私がそれを見つけられないことです。これまでのところ、他の誰もそれを見つけることができないようです...
[追加情報]
私は Symfony Web フレームワーク (v1.3.8) を使用していますが、これはおそらく裏でエンコードとデコードを行ってリクエストを処理しています。$_POST 変数からトークン パラメータを直接取得して、Symfony がすべての原因であるかどうかを確認します。