2011-07-24 6 views
0

このコードを実行するたびに、場所が "a"であるかどうかにかかわらず、"Not from a"のみが書き込まれます。条件文の問題

function logsIn($dir, $account, $balance) { 
    $d = date("D F d Y - h:i A"); 
    $file = fopen("logs/$dir.txt", "a"); 

    if ($_SESSION['pass'] == "123") { 
     if ($api["Location"] != "a") 
     fwrite($file, "<span style='color:#FF0000;text-align:center';>Not from a.</span>"); 
     else 
     fwrite($file, "From a."); 
    } 
+0

使用する各変数の値を確認し、その値を予想どおりに比較します。基本的なデバッグ。 –

+0

'location'は" a "か" Location "は" a "ですか? – Mat

+0

また、$ _SESSIONに "God conditional"を取り除くことをお勧めします。 –

答えて

5

あなたはあなたの関数で$apiという変数を使用しているが、その変数はどこにも定義されていません。

だから、の値を持つことはできません。そのため、あなたはいつも"Not from a"を取得します。


注:関数外で定義された$api変数がある場合、その関数内からは表示されません。

この詳細については、マニュアルのVariable scopeを参照してください。解決策として


、私はあなたがそうあなたのコードを変更することができたとします

  • $apiは、あなたのlogsIn()関数でパラメータとして期待
  • そして、あなたはそれを呼び出すときには、その関数に渡されています。

またglobalキーワードを使用して、関数内から見える(それはあなたの関数の外に存在する場合)$api変数を作ることができる - それは、AN上の関数が依存させるとして、それは、良い習慣ではありません外部変数。

+0

Worked。ありがとうございました。 – ProgrammingEnthusiast