これはおそらく簡単ですが、Ajax と JSON の方法で賢い誰かをここで助けることができます。Ajax リクエストを PHP バックエンドに渡す Javascript 関数があります。「request_parameters」投稿変数として JavaScript オブジェクトを渡しています。これが PHP に表示されるとナビゲートできますが、オブジェクト構造は配列に置き換えられています。代わりに、オブジェクト構造をそのまま残しておきたいので、危険なほどスマートなタイプであるため、オブジェクトを JSON エンコードすることにしました。
request_parameters: JSON.encode( requestObj );
ちょうど対
request_parameters: requestObj;
PHP 側では、これを「request_parameters」変数 (別名、$_POST['request_paramenters']) の値として取得します。
{\"forms\":[{\"formName\":\"main-form\",\"formClass\":\"lg-form main-form\",\"formFields\":[{\" id\":\"activity-app_id\",\"name\":\"activity-app_id\",\"value\":\"0\",\"type\":\"hidden\", \"startingValue\":null},{\"id\":\"activity-start_time\",\"name\":\"activity-start_time\",\"value\":\"\",\ "type\":\"hidden\",\"startingValue\":null},{\"id\":\"min-duration\",\"name\":\"min-duration\",\ "class\":\"span1 form-ignore\",\"value\":\"50\",\"type\":\"text\",\"startingValue\":null},{\" id\":\"activity-duration\",\"name\":\"activity-duration\",\"value\":\"3000000\",\"type\":\"hidden\",\"startingValue\": null},{\"id\":\"運動距離\",\"名前\":\"運動距離\",\"クラス\":\"入力スパン1左\",\"値\ ":\"25\",\"type\":\"text\",\"startingValue\":null},{\"id\":\"運動距離単位\",\"名前\ ":\"exercise-distance_uom\",\"value\":\"miles\",\"type\":\"hidden\",\"startingValue\":null},{\"id\": \"exercise-pace_average\",\"name\":\"exercise-pace_average\",\"value\":\"2\",\"type\":\"hidden\",\"startingValue\":null},{\"id\":\"wp_posts-post_content\",\"name\":\"wp_posts-post_content\",\"class\":\"span5\" ,\"value\":\"super fast\",\"type\":\"textarea\",\"startingValue\":null}]}],\"action\":\"went-running\ ",\"post_type\":\"exercise\",\"primaryForm\":0}0}0}
わかりました。これは明らかにエンコードされているため、データは悪いことが起こらずに POST/GET 変数として渡されます。けっこうだ。json_decode 関数を実行する前にデコードを使用することで、PHP 側でこれに対処できると考えました。私が最初に試した:
$request_parameters = json_decode( urldecode($request_parameters) );
これは確実に勝てると思った。いいえ。エラーにはなりませんでしたが、 $request_parameters が何も設定されていないようです。わかりました、それから私は少し頭がおかしくなり、考えました...「JavaScriptがbase64エンコーディングを使用したのかもしれません」...
$request_parameters = json_decode( base64_decode($request_parameters) );
悪いジュジュ。そこに置いておきます。
どんな助けでも大歓迎です。