[PHP-users 20725]Re: POSTがおかしくなった

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2004年 3月 12日 (金) 05:38:16 JST


小泉です。

# この問題 FAQ です。
# 投稿前にまずは ML のアーカイブを検索してみてはいかがでしょう。

http://ns1.php.gr.jp/pipermail/php-users/2003-March/014609.html

本家の bug #18648 (http://bugs.php.net/18648) に詳細があります。

■症状
GET メソッドによって送信されたクエリの取得は可能だが、
POST メソッドにより送信されたクエリの取得ができない。

特に、enctype="application/www-urlencoded" (デフォルト)
で送信された POST クエリーは送信されたクエリー文字列の
一部を繰り返したような不正な文字列となるのが特徴。

例えば、次のようなフォームで、

<form action="something.php" method="POST">
   <input type="text" name="abc" />
   <input type="submit" value="submit" />
</form>

テキストボックスに "def" と入力したとすると、

$_POST['abc'] の値が "defabc=def" となってしまう。


■この問題が発生するケース

次の条件が重なったときです。

1. Apache-2.x.x と php を RedHat の配布する RPM でインストールした。

2. (1) の後、php をソースからインストール、あるいは VineSeeds など、
   RedHat の提供しているものでない RPM で更新した。


■解決法 (例)
- Apache-2.x.x と php を自力でインストールする

- Apache-1.x.x と php の組み合わせを使う

- /etc/httpd/conf/httpd.conf の、

<Files *.php>
SetInputFilter PHP
SetOutputFilter PHP
</Files>

または、

AddInputFilter PHP php
AddOutputFilter PHP php

となっている行を削除し、代わりに

AddType application/x-httpd-php .php

を追加する。

以上


On 2004/03/11, at 21:56, 大道 裕 wrote:

> 大道です。
> Redhat9、php-4.2.2-19_rh9、httpd-2.0.40-21.9
> です。
>
> mbstringが使いたかったので、php-4.2.2-17.2を
> php-4.2.2-19_rh9にアップデートしました。
> (rpm -Fvh php-*)
> すると、
>
> <form action="test.php" method="POST">
> <input type='submit' name='id' value=35>
> </form>
> を送信すると、
> $_POST['id']="35id=35"
> となります。
> value='user35'
> とすると
> $_POST['id']="user35id=user35"
> となります。
>
> method="GET" ですと、ちゃんと送れます。
>
> どうしたら直せるでしょうか?
> 元のバージョンに戻すこともできないですよね?



PHP-users メーリングリストの案内