[PHP-users 6592] スーパーグローバル
S.Okazaki
php-users@php.gr.jp
Tue, 02 Apr 2002 12:14:42 +0900
おはようございます。岡崎です。
昨日から青マンモスを読んで、register_globals=off
に取り組んでおります。
当然今までいい加減に書いたスクリプトは全然動かなくなりました。
現在動くように修正中ですが、皆様はどうやって、修正したのでしょうか?
やはり、一つ一つ検索しながらでしょうか?
print("<a href=\"$PHP_SELF?mode=auth\">承認</a>\n");
等 $PHP_SELF や $REMOTE_ADDR を多用しているのですが、
それは一括変換で,$_SERVER[PHP_SELF] 等に変換しています。
しかし、本来であれば $HTTP_GET_VARS[name] 等としておけば、
これらも一括変換できますが、残念ながらしていたり、
していなかったりです(^^;
「いい加減に書いた報いだ」と言われればそれまでなのですが、
何かいい方法はないでしょうか?
お勧めの修正法などあればご教示お願いいたします。
また、ページにアクセスした時に、セッションに
user_sesとpass_sesが登録されていなければ、強制的に
承認画面($mode=print_auth)に飛ばすという部分があります。
register_globals=On の時は
/////////////////////////////////////////////////////////
if($user_ses=="" || $pass_ses=="") {
if($mode!="print_auth" && $mode!="auth_exec") {
header("location: $PHP_SELF?mode=print_auth");
}
}
//////////////////////////////////////////////////////////
で動いていました。
しかし、register_globals=Offにして、
//*************************************************************//
if(isset($_SESSION[user_ses])) { //
$user_ses=$_SESSION[user_ses]; //
} //
if(isset($_SESSION[pass_sess])) { //
$pass_ses=$_SESSION[pass_ses]; //
} //
if($user_ses=="" || $pass_ses=="") { //
if($mode!="print_auth" && $mode!="auth_exec") { //
header("location: $_SERVER[PHP_SELF]?mode=print_auth");//
} //
} //
//*************************************************************//
と、書き換えると、リダイレクトを繰り返してしまいます。
$mode=print_auth側は、承認画面をhtmlで表示するだけで、特に
何もしていません。
おそらく上の書き方がまずいのだと思いますが、煮詰まってしまいました。
どこが悪いのかご指摘お願いいたします。
/_/_/_/_/_/_/_/_/_/_/_/_/_/
Japan Human Base
Sotaro Okazaki
Email : okazaki@jp-hb.com
/_/_/_/_/_/_/_/_/_/_/_/_/_/