2

この関数を使用して、アプリケーションをオンラインにするかオフラインにするかを決定しています。

function online() {
   if ($online == "0") {
     if($_SESSION['exp_user']['userlevel'] != "1") {
          include("error/offline.php");
          exit();
                                                   } 
                        }
                   }

しかし、データベースでデータ値が 0 に設定されて$onlineいて、dos = '0' であるのに、ユーザー レベルが 1 でない場合、error/offline.php が含まれていないのはなぜですか?

ありがとう :)

4

3 に答える 3

7

$online、グローバル変数とは何ですか? その場合はglobal $online、関数内でアクセスする必要があります。現在$onlineはデフォルトnull値であり、文字列「0」とは異なります。

于 2009-06-07T19:16:21.547 に答える
1

「カオス」はグローバル変数については正しいです。しかし、よくわからない場合、このようなものをデバッグする 1 つの方法は、さまざまな場所に「echo」または「die」ステートメントを追加して、コードで何が起こっているかを確認することです。最初の「if」ステートメント内に 1 つ入れて、そこまで到達するかどうかを確認してから、2 番目の「if」ステートメント内に 1 つ入れます。テストしている変数の値をエコーし​​ます。これにより、条件が機能しない理由がわかります。

于 2009-06-07T19:22:53.047 に答える
1

デバッグのためのJWのポイントへ。コードにエコーを散らかす代わりに、メッセージをエコーとしてログに記録するために呼び出すことができる Logger や Debug などのクイック クラスを作成します。または、 http://www.indelible.org/php/Log/guide.htmlなどの既存のツールを使用することをお勧めします。これにより、[Firefox の FirePHP][2] でデバッグできるようになり、echo ステートメントを再度クリーンアップする必要がなくなります。または、ブラウザの反復テストでのデバッグにのみ使用する予定がある場合は、Firebug を直接使用してください。

後でそれらをすべてクリーンアップするか、ほとんどの大規模なアプリケーションでエラーのログ記録とレポートのメトリックに必要なコード ロガーとして使用できます。

于 2009-06-07T19:57:29.387 に答える