Проблема с условными операторами

Каждый раз, когда я запускаю этот код, записывается только "Not from a", независимо от того, является ли местоположение «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.");
   } 

person ProgrammingEnthusiast    schedule 24.07.2011    source источник
comment
Проверьте значение каждой используемой переменной и сравните ее значение с ожидаемым. Базовая отладка.   -  person Lightness Races in Orbit    schedule 24.07.2011
comment
location это а или Location это а?   -  person Mat    schedule 24.07.2011
comment
Кстати, я бы также порекомендовал вам избавиться от этого условного обозначения Бога на $_SESSION.   -  person Lightness Races in Orbit    schedule 24.07.2011


Ответы (1)


Вы используете в своей функции переменную с именем $api, но эта переменная нигде не определена.

Таким образом, $api["Location"] не может иметь значение 'a', поэтому вы всегда получаете "Not from a".


Примечание. Если у вас есть переменная $api, определенная вне вашей функции, она не будет видна изнутри этой функции.

Для получения дополнительной информации об этом вы должны взглянуть на Variable область применения раздела руководства.


В качестве решения, я полагаю, вы могли бы изменить свой код следующим образом:

  • $api ожидается в качестве параметра вашей logsIn() функцией,
  • И он передается этой функции, когда вы ее вызываете.

Вы также можете сделать переменную $api (если она существует вне вашей функции) видимой изнутри функции, используя global ключевое слово, но это не очень хорошая практика, так как это делает вашу функцию зависимой от внешней переменной.

person Pascal MARTIN    schedule 24.07.2011