HTMLで
<form action="test.php" method="POST">
名前: <input type="text" name="xxx" value="名前" />
年齢: <input type="text" name="xxx" value="年齢" />
<input type="submit">
</form>
としたときに
test.php
<?= $_POST["xxx"]; ?>
で得られるのは「年齢」で入力した値です。
「名前」は取得できないのでしょうか?
すいません。追加で。
<form action="test.php" method="POST">
名前: <input type="text" name="xxx" value="名前" />
年齢: <input type="text" name="xxx" value="年齢" />
<input type="submit">
</form>
で,
test.php
----------
<?php print readfile("php://input"); ?>
----------
とすると確認可能です。
<form action="test.php" method="POST">
名前: <input type="text" name="xxx1" value="名前" />
年齢: <input type="text" name="xxx2" value="年齢" />
<input type="submit">
</form>
上記の様にname内の値をユニークなものにして、
PHP側で、以下のように取り出してみてもダメですか?
名前の場合
<?= $_POST["xxx1"]; ?>
年齢の場合
<?= $_POST["xxx2"]; ?>
pipi_nさんの記述されている方法ですと、
どんなに項目があっても、$_POST["xxx"]が延々と上書きされてしまい、
結果、$_POST["xxx"]には一番最後に入力させた値しか入らない、という事になってるんだと思います。
so-netのblogの設定でカテゴリを一気に書き換えることができるんですよ。
で、ソースを見たらname属性が全部同じなのに、そんなことできるのかなぁと思いまして。
formで飛んだ先で工夫しているんですかね?
以下so-netのソース
<script language="JavaScript"></p> <p> //<!--</p> <p> function setSubmitNumber(submitForm, submitNumber, submitType) {</p> <p> submitForm.submitNumber.value = submitNumber;</p> <p> submitForm.submitType.value = submitType;</p> <p> //submitForm.action();</p> <p> }</p> <p> //--></p> <p> </script>
name="xxx"が同じなので、後の年齢が上書きされて取得している状態ですね。
<form action="test.php" method="POST">
名前: <input type="text" name="name" value="名前" />
年齢: <input type="text" name="age" value="年齢" />
<input type="submit">
</form>
test.php
<HTML>
<BODY>
名前:
年齢:
</BODY>
</HTML>
とされると、うまくいくと思います。
名前は取得できません。
どうしても同じnameで取りたい場合、配列で取得する方法もあります。
<form action="test.php" method="POST">
名前: <input type="text" name="xxx[]" value="名前" />
年齢: <input type="text" name="xxx[]" value="年齢" />
<input type="submit">
</form>
これで $_POST['xxx'] には array(名前, 年齢); が入ります。
xxxのところをnameとかageにして分けるのがいいと思いますが,どうしてもという場合には,PHPマニュアルより,
php://input は、POST の生データの読み込みを 許可します。これは $HTTP_RAW_POST_DATA に比べて メモリ消費量が少なく、特別な php.ini ディレクティブを設定する 必要がありません。php://input は、 enctype="multipart/form-data" に対しては 使用できません。
のとおり php://input を使ってPOSTデータを生でとると一応"xxx=値" の組が二つあると思うのでそこから無理矢理パースするとできそうです。
すいません。追加で。
<form action="test.php" method="POST">
名前: <input type="text" name="xxx" value="名前" />
年齢: <input type="text" name="xxx" value="年齢" />
<input type="submit">
</form>
で,
test.php
----------
<?php print readfile("php://input"); ?>
----------
とすると確認可能です。
僕がやりたかったことは、これで万事解決です!
ありがとうございました!
僕がやりたかったことは、これで万事解決です!
ありがとうございました!