Xpoint
   [напомнить пароль]

PHP 5.2.x ругается Notice: Undefined index: MYSQLCONNECTED

Метки: [без меток]
2012-07-12 08:17:28 [обр] Евгений[досье]
сообщение промодерировано

Есть довольно простой код:

        if (!($GLOBALS['MYSQLCONNECTED'])) {
                $GLOBALS['MYSQLCONNECTED']=1;
                if (!empty($CONFIG['DBUSER'])) {
                        $res=@mysql_pconnect($CONFIG['DBHOST'], $CONFIG['DBUSER'], $CONFIG['DBPASS']);
                        if (!($res2=@mysql_select_db($CONFIG['DB']))) {
                                @mysql_create_db($CONFIG['DB']);
                                $res2=@mysql_select_db($CONFIG['DB']);
                        };
                };
        };

но PHP 5.2.x ругается: Notice: Undefined index: MYSQLCONNECTED

Еще такая же ошибка (Notice: Undefined index: AUTH_USER) вылазиет в коде:

if (($_POST['AUTH_USER'] == 'admin') && ((md5($_POST['AUTH_PW']) == $GLOBALS['adminmd5'])))

в то время как 5.3.x обрабатывает оба кода без проблем.

Связываю все эти ошибки с настройками PHP, да вот только понять не могу что именно надо включить или отключить чтобы заработало без проблем.

Подскажите, пожалуйста, что надо настроить чтобы этот код начал работать без проблем?

С уважением,
Евгений

спустя 5 часов [обр] Marat Tanalin(3/78)[досье]
Прежде чем обратиться к элементу массива, следует проверить его существование с помощью функции array_key_exists()
спустя 2 часа 4 минуты [обр] Евгений[досье]
сообщение промодерировано

Марат, если я правильно понял?

if (array_key_exists($_POST['AUTH_USER'], 'admin')) {
    // мой код после проверки
}

и

if (array_key_exists($GLOBALS['MYSQLCONNECTED'], '1')) {
    // мой код после проверки
}
спустя 2 часа 31 минуту [обр] Филипп Ткачев(20/112)[досье]
Еще можно использовать функцию isset().
А с точки зрения приложения логичнее использовать несколько иной подход.
// проверяем, что существует указатель на коннект к базе
if (!isset($GLOBALS['MYSQL']) || !is_resource($GLOBALS['MYSQL'])) {
 if (!empty($CONFIG['DBUSER'])) {
  $GLOBALS['MYSQL']=@mysql_pconnect($CONFIG['DBHOST'], $CONFIG['DBUSER'], $CONFIG['DBPASS']);
  // далее ваш код будет работать с указателем на подключение к СУБД
  // плюсы данного подхода в экономии памяти и уменьшении возможности 
  // непредвиденного пересечения имен переменных в различных частях вебприложения
 };
}
спустя 2 часа 6 минут [обр] Евгений[досье]
Марат и Филипп, большое Вам спасибо за советы.
:-)
Powered by POEM™ Engine Copyright © 2002-2005