![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=731400の質問の続きなのですが、変数名もいくつデータが送られてくるかもわからない状態なのですが、同じ変数名で違う値が送られてくる場合(例えばチェックボックスとかセレクトボックスのマルチプル)はどのようにすればすべての値を拾えるでしょうか。
また、変数名をすべて日本語にしたいのですが、何か問題などあるでしょうか。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
すいません、postは標準入力からでしたね。
前回の例の下の部分を変更してみてください。
postとgetは受け渡し方法が違うだけで
中の書式は同じですのでこれで問題無いはずです。
$foo = $_SERVER["QUERY_STRING"];
↓
if($_ENV{'REQUEST_METHOD'} == "post"){
$foo = array_shift(file("php://input"));
}else{
$foo = $_SERVER["QUERY_STRING"];
}
日本語に関してですが、
PHPは入力、内部処理、外部ですべて別の文字コードを
設定できるようになっているのですが、
自分で設定したサーバでPHPを使用なさるならともかく
レンタルサーバなどを使用した場合、
内部処理に使用する言語設定は業者が設定してしまっているので、
こちらから変更する手段がなくはないですが、
普通に使った場合やはり文字化けしてしまいます。
後、元々1バイト文字(半角英数)をベースに使っている方が開発された言語ですので、
日本語などの2バイト文字を使用する事はあまり想定されていません。
(実際古いバージョンのPHPでは日本語を使用する為には日本語化パッチが必要でした)
そういった意味でも使用しないほうが無難と言った所です。
ご丁寧にありがとうございました。
php://inputがよくわからなかったですが、だいたいわかりました。
ありがとうございます。
No.2
- 回答日時:
GuruGuru22さんの仰るとおり、
<select name="test[]" multiple>
など、「name="test[]"」と言った感じで
[]をname属性に付加した場合、
$_POST['test'][0],$_POST['test'][1]と
言った感じで内容を参照できますが、
name要素を変更できない場合は
$_SERVER["QUERY_STRING"]
にフォームから送られた値が入っているので
自力で分解すれば取得する事もできるはずです。
例:
$foo = $_SERVER["QUERY_STRING"];
$array = explode("&", $foo);
foreach($array as $ber){
list($key, $value) = explode("=", $ber);
#すでに存在する属性の値の時
if(isset($post[$key])){
array_push($post[$key], $value);
}
#初めて取得する属性の時
else{
$post[$key] = array($value);
}
}
testと言う属性で3つ値を取得したい場合、
このルーチンで値を取得しますと
$post['test']に配列で値が格納されます
(一つしかない値も配列になってしまうのが難点ですね…)
あと、日本語の変数名は止めておいたほうが無難です。
日本語の表現方法はJisやEUCなど複数あり、
PHPの内部で使用されているのがどちらなのかは
サーバによって違い、JISで書いた日本語変数名が
EUCのサーバにアップロードされた時など
文字化けして変数とみなされない場合がある為です。
ご回答ありがとうございます。
ちょっと初心者質問で恐縮ですが、これを見るとPOSTで渡された場合もhoge1=hoge&hoge2=hoge
という書式で渡されているようなのですが、$_SERVER["QUERY_STRING"]は、変数部分だけそのように受け取れるものなのでしょうか。
それと、これは別な質問として立てるべきだったと後悔しておりますが、日本語変数名に関してですが、すべてeucで記述するようにしてもダメでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
laravelを利用してコントロール...
-
$_SERVER['REQUEST_METHOD']と"...
-
サーバ上でGETはできるがPOSTが...
-
CGI Perlでの認証について
-
【smarty】予約変数に可変変数
-
functionsでどこまで括るのか固...
-
ローカルにあるhtmlのフォーム...
-
フォームへの前回入力値をクリ...
-
<input type="hidden" >で配列...
-
PHPで画像の渡しが上手く行きま...
-
フォームでのリセットを使う方法
-
フォームボタンを押すたびに数...
-
input type="hidden"で送る値を...
-
プルダウンとCSVの連動
-
PHP ボタンが押されたら処理を...
-
DBの値をチェックボックスに反...
-
パラメーターを隠す
-
奇数や偶数を調べる関数
-
phpで、フォームのラジオボタン...
-
【PHP&JavaScript】複数の別ウ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
laravelを利用してコントロール...
-
POSTを使わずに値を渡す方法
-
POSTの値を配列として受け取っ...
-
サーバ上でGETはできるがPOSTが...
-
高高兴兴は高兴と何が違います...
-
アコーディオンPHPが上手くいか...
-
CGI Perlでの認証について
-
pythonのhttp.serverでpostされ...
-
【smarty】予約変数に可変変数
-
プログラムの複製(VB.net)
-
php sprintfの中で、ifのような...
-
functionsでどこまで括るのか固...
-
大鏡「若き日の道長」の訳
-
郵便番号検索
-
RSSと投稿記事を交互に表示させ...
-
淡路島の洲本にレンタカーはあ...
-
データベースの情報をサイトに...
-
昭和40年の現金書留での送金...
-
同じ変数名で値がいくつかある...
-
WordPressでID番号以外でのペー...
おすすめ情報