1

コントローラーをロードすると、次のようになります。

$this->load->library('encrypt');

$get = null;
parse_str($_SERVER['QUERY_STRING'],$get);
$email = $this->encrypt->decode($get["acc"]); // e.g.  www.lol.com/?acc=troll

そして、私のコントローラーは次のように呼び出されます:

$this->load->library('encrypt');
$this->load->helper("url");
$user = $this->input->post('email', true);

$encrypted_string = $this->encrypt->encode($user);
redirect('account/viewaccount?acc='.$encrypted_string);

URL は次のようになります。

http://localhost/CodeIgniter/index.php/account/viewaccount?acc=+fgSAs6X7ysW6XDjFVw//9RGVbY751zZv1LQ44yYBjhVuzI1BC1t9BbZCIUdX5lpYA==

しかし、問題は、エンコードすると値が得られるが、後でこの巨大な値をデコードすると (テストによってこの値を完璧に受け取ることができる)、何も返されず、NULL だけが返されることです。

なぜこうなった?

ありがとうございました

4

3 に答える 3

3

暗号化の出力はURLセーフではありません。これを置き換えます:

redirect('account/viewaccount?acc='.$encrypted_string);

redirect('account/viewaccount?acc='.urlencode($encrypted_string));

そしてurldecode()、もう一方の端にあります。

于 2012-11-10T22:14:13.750 に答える
0

文字列を暗号化して復号化してみてください。エラーは復号化または暗号化ではない可能性があります

于 2012-11-10T21:51:59.083 に答える
0

エンコードされたフォームは URL に対して安全ではありません。他のエンコード手法またはurlencodeの出力を使用してみてくださいencode

于 2012-11-10T21:56:07.427 に答える