#レッツPHP!広報#
PHP4.1.0以降では仕様が変わり、標準でregister_globals=offの設定となりました。(の最初の方で確認できます)
offになっていると外部変数へのアクセスが出来ません。
■修正の仕方
以前のスクリプトを、PHP4.1.0以降に対応させるには、
以下の文を、最初の
いままでは$name , $regist に値が格納されていましたが...
register_globals=offだと...
$_POST[name] , $_POST[mode] に値が格納されます。(この場合$_POST[mode]=registです)
同様にCOOKIEの値や、サーバー変数、セッション値、環境変数が、
$_COOKIE, $_SERVER, $_SESSION, $_ENVという配列に格納されます。
特に$PHP_SELF→$_SERVER[PHP_SELF]には注意が必要です。
$_GET,$_POSTはスーパーグローバルと呼ばれ、function内でglobal宣言する必要はありません。
php.ini内でregister_globals=onにすれば、いままで通り動きますがあまりお勧めできません。(php.s3.toはOnにしてますが・・
■参照リンク
「スーパーグローバル」
http://ns1.php.gr.jp/pipermail/php-users/2002-April/006600.html
「p-bbsa.phpの修正版」
http://php.s3.to/bbs/p-bbs-off.php.txt
■11/2 追記
pppbbsレス無し等はGET,POSTの順でないとうまく動きません。
extract($_GET);
extract($_POST);
さらに追記:上の2行はこれと同じです。
extract($_REQUEST);
アップロード関係
$upfile = $_FILES["upfile"]["tmp_name"];
$upfile_name = $_FILES["upfile"]["name"];
$upfile_type = $_FILES["upfile"]["type"];