1

リターン URL 文字列で使用するために base64_encode を使用していますが、(base64_decode を使用して) デコードするページに到達すると、これが文字列の末尾に追加されます。

-zh��

文字列をエンコードするコードは次のとおりです。

$sess_refer = 'http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection'

<input type="text" name="referrer" id="referrer" value="<?php echo base64_encode($sess_refer); ?>" />

文字列をデコードするコードは次のとおりです。

$referrer = JRequest::getVar('referrer');
$sess_refer = base64_decode($referrer);

これは次のように出力されます:

http://www.mysite.com/create-report.html?view=report&layout=reports&data=selection-zh��

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

2

これはコメントには少し長すぎましたが、役に立たない場合は、この回答を削除します。

base64_encode()以下のトリックを適用することで、データを Web セーフにすることができます。これがないと、+がスペースに変換され、エンコーディングが台無しになる可能性があります。

strtr(base64_encode($s), '+/', '-_');

デコードするには:

base64_decode(strtr($s, '-_', '+/'));

アップデート

また、HTTP_REFERERはブラウザによって送信されるため、ユーザー入力として処理する必要があり、その前に有効な URL としてサニタイズする必要がありますbase64_encode()

于 2012-08-28T01:13:50.720 に答える