1

私がやろうとしているのは、暗号化されたメッセージと対応するキー (双方向暗号化) を php ページに送信して復号化し、結果を応答で返すことです。

これは、jquery で送信しようとしている暗号化されたメッセージの例です。

var message = 'oPnHK7DE33xOLZok/23a92XH9NI3SlHGCulnh6+IuZN4cGhymYm5yxOmDynCDAG8u+cAbJ4KifxzsWsGgmTXoZoAtjkAhph/eWyuwMNfviNtgmz4x02JVJ6Rc6wDsqzzd6Mrl88ZZXyEshD1/+9JRS9rNalCtv//pC2FRAZMQhH5wxDn9kb6JITSs/aagUGFbLmq+jxg5ty55SKmri6IJg==';

var key = 'password';

$.post('decodeMessage.php?message=' + encodeURIComponent(message) + '&key=' + key, function(data) {
    // do stuff with returned data here
});

受信phpコードは以下の通り

 <?php
 $encrypted = rawurldecode($_POST['message']);
 $key = $_POST['key'];

 $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

 echo $decrypted

 ?>

私が抱えている問題は、意味不明なものを返すだけで、実際にメッセージをデコードしていないことです。

$encrypted の値を ajax リクエストで渡されるエンコードされた値に設定することで、ajax なしでこれをテストしましたが、正常に動作します。

なぜこれが起こっているのかについて誰かが私にガイダンスを提供してくれれば幸いです。

どうもありがとう。

4

3 に答える 3

3

代わりにデータをオブジェクトとして送信してください。

$.post('decodeMessage.php', {message: message, key: key}, function(data) {
    // Wohoo
});

ほら、jQueryはあいまいなコードのレイヤーの下で、このようなことを処理します:-)

于 2013-07-11T12:27:58.347 に答える
0

こうやってみる

$.post("decodeMessage.php", { message: message, key: key },function(data){
   // ....
});
于 2013-07-11T12:28:26.677 に答える
0

クエリ文字列を渡す

$.post('decodeMessage.php?message=' + encodeURIComponent(message) + '&key=' + key, function(data) {

次に、投稿の代わりに $_GET を使用します

 $encrypted = rawurldecode($_GET['message']);
 $key = $_GET['key'];

PHP で要素を POST 変数として処理する場合は、jquery コードを次のように変更します。

var data = { message: message, key: key };
$.post('decodeMessage.php', data, function(data) {
   //handler 
});
于 2013-07-11T12:28:26.933 に答える