[PHP-users 7308] 外部から来る変数の評価

うちやまひろかづ php-users@php.gr.jp
Tue, 07 May 2002 17:28:13 +0900


うちやまと申します。はじめまして。
ずっとC言語を書いていましたが、ほんの最近めでたくPHP+PostgreSQLデビュー
しました。今後よろしくお願い致します。

さて、早速質問させていただきたいのですが、、
test.phpというファイルをつくり、中に
_______________________________________________
       :
       :
       :

    <FORM ACTION="test.php" METHOD="POST">
        <INPUT type="submit" name="button" value="button1">
        <INPUT type="submit" name="button" value="button2">
    </FORM>

    <?php
    switch( $button ){
        case "button1":
            printf( "ボタン1<BR>" );
            break;
        case "button2":
            printf( "ボタン2<BR>" );
            break;
        }

       :
       :
       :    
_______________________________________________
と記述したのですが、ボタンを押してもswitchで評価してくれません。
しかたなく、switchのところを
_______________________________________________
    if( isset($HTTP_POST_VARS) ){
        foreach( $HTTP_POST_VARS as $key => $value ){

            if( $value == "button1" )
                 printf( "ボタン1<BR>" );
            else if( $value == "button2" )
                 printf( "ボタン2<BR>" );
 
            }
        }
________________________________________________
に書き換えたら正常動作しました。


このメールを書きながら調べていたら
http://www.1x1.jp/top.php
の中で、
>PHP4.2.0リリース 2002/04/23
> 大きな変更点は、これまでHTTPリクエストなどから自動的に変数にセットされ
>ていた(http://hoge?a=fooなら$aに'foo'がセットされていた)のが、デフォル
>トでセットされなくなりました。これまで直接変数を使っていた頼っていたサイ
>トでのバージョンアップは、気を付けましょう。
との記述をみつけましたが、これのことなんでしょうか。(こちらは4.2.0です)

switch-caseで見た目わかりやすく書きたいのですが、switchでの評価はどうした
らできるのでしょうか。
上記の記事を見ると、「デフォルトでセットされなくなった」とあるので、明示的
に受付るようにする方法があるのでしょうか。
それとも、わざわざ「デフォルトでセットされなくなった」のはもっともな理由が
あるからで、やらないほうがいいのでしょうか。
だとしたら、僕の書換えたやり方は正しいですか?(というかポピュラーですか)
はじめたばかりなので、みなさんにとってはつまらない質問を長々とすみません。

よろしくお願いします。



Mac OS X 10.1.4 Build#5Q125
PHP4.2.0
PostgreSQL7.2
___________________________
うちやま
sdr0x07b6@mac.com