2009-06-07 10 views
2

が、私は自分のアプリケーションがオンラインまたはオフラインにする必要があるかどうかを判断するには、この機能を使用しています:この機能で何が問題になっていますか?

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

しかし、データベースに0に設定されたデータ値を持つ、と$onlineはない=「0」、なぜエラーです/offline.phpは、ユーザーレベルが1でないユーザーには含まれていませんか?

感謝:)

答えて

7

$online、グローバル変数とは何ですか?その場合は、関数内でアクセスするにはglobal $onlineを実行する必要があります。現在は$onlineがデフォルトのnullの値で、文字列 "0"と等しくありません。

+0

$ onlineはグローバル変数です。関数内でグローバルにアクセスするにはどうすればよいですか? – bear

+0

$ onlineを使用する前に関数内でglobal $ onlineを記述します。これは、あなたの関数に存在する$ onlineを、世界中の$ onlineと同じことを言います。 – chaos

+0

ありがとうございます。私は今日何か新しいことを学んだ! – bear

1

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

+0

ありがとう、私は通常、エコーを追加してデバッグ:P – bear

1

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

エラーログとレポートメトリックのために、大規模なアプリケーションで使用する必要があるコードロガーとして後ですべてをクリーンアップするか、コードロガーとして使用することができます。