- ベストアンサー
$HTTP_POST_VARSの値の受け渡しについて
- PHP側でフォームで入力した内容をPOSTで受け渡す方法について説明します。
- 特定の名前のときにPOSTから値が返らない原因について考えられる要素を解説します。
- 文字コードの統一によって値の受け渡しに問題が発生する可能性についても触れます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
上記のプログラムで実験させて頂いたところ 問題なく、「西」でも「東」でも値は渡りました。 ■ 質問であげて頂いたプログラム以外に 何か処理されている部分がありませんか? 例えば、aiurai54 さんは先の質問で $req_data = $HTTP_POST_VARS; $req_data = array_merge($req_data, $HTTP_GET_VARS); とされています。今回はこの merge 部分はカット されているんですよね。 HTML 側においても同様に、他に <input> はないのですか?<input type="submit"> で他の属性はどうされてます? ■ $HTTP_POST_VARS をお使いですけど、これを使われているということは PHP のバージョンが 4.1 以前であるのかな?と推測します。 その場合、register_globals = on である可能性が高く 意図しない GET データのグローバル変数化が あったりしないでしょうか? 極端な例 point.php?HTTP_POST_VARS[signedname]=hoge みたいな感じです。 ■ 文字コード EUC で統一されているとのことですが、 「ブラウザが誤って、例えば UNICODE で送っていた」 みたいな可能性はないでしょうか? POST をすべて GET にしてみても同じ症状でしょうか? ■ スコープ $HTTP_POST_VARS はグローバル変数ですが $req_data はローカル変数であって、その違いで 値が入っていないと勘違いしてしまっている可能性 とかはないでしょうか? POST で送られているかどうかは、直接 print_r($HTTP_POST_VARS) でチェックしてみてください。 --- 質問文だけでは問題がないように見えますので ありとあらゆる可能性を疑ってしまい、aiurai54 さんには 不愉快な思いをさせてしまったかもしれません。 すみません。 もう少し情報をいただけないでしょうか?
お礼
とてもいろいろな情報を頂きありがとうございます。 PHPのバージョンが古いため何かしら不具合が生じていると考えました。 PHP.iniファイルにはEUC-JPが優先であって、 文字コードが不明のときもEUC-JPとするといった形をとっていました。 ところがフォームで日本語を一文字だけ送信することはまずありえないですよね~? なので、hidden値で文字を入れておくことにし。解決いたしました。 お手数おかけいたしました。 早くバージョンをあげるように努力します!!