PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。
Q&A
解決済
1回答
3290閲覧
総合スコア130
0グッド
0クリップ
投稿2015/01/02 13:53
0
PHPでデータをAjax POST通信で受け取ると$_POST変数がエスケープされてしまいます。
LinuxのPHP環境では起きて、WindowsのPHP環境では発生しません。
どちらの環境でも機能させるにはどうすればいいでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答1件
ベストアンサー
おそらくLinuxサーバーで使えるmagic_quotesに関係がありそう気がします。
"magic_quotes が on の場合、'(シングルクオート)、" (ダブルクオート)、\(バックスラッシュ) 、NULL には全て自動的に バックスラッシュでエスケープ処理が行われます" (参照元:http://www.php.net/manual/ja/info.configuration.php#ini.magic-quotes-gpc)
magic_quotesがPOSTデータをエスケープする機能だけを非アクティブ化にすることは出来ません。 出来るとすれば、php.iniで無効にすることですね。 それが無理なら、magic_quotesが有効かどうか確認し、POSTから取得しているコンテンツすべてにstripslashes() を行ってください。
下記は簡単なサンプルコードになります。
lang1if (get_magic_quotes_gpc()){ 2 $post_val = stripslashes($_POST["post_val"]); 3}
lang
1if (get_magic_quotes_gpc()){ 2 $post_val = stripslashes($_POST["post_val"]); 3}
投稿2015/01/02 14:59
総合スコア409
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
使っている環境によって$_POST変数がエスケープされてしまう(PHP)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。