Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

вопрос по функции array_key_exists()

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> вопрос по функции array_key_exists()
Имя
Сообщение << Старые топики   Новые топики >>
вопрос по функции array_key_exists() - 2009-01-08 23:52:40.920000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Плииз, помогите, пожалуйста, разобраться.. Что это может быть?
 
Сайт выдает ошибку Warning:array_key_exists() [function.array-key-exists]: The second argument should be either anarray or an object in (.) on line35
 
А начиная с 35 строки :
 
if (array_key_exists($field, $GlField)){
     switch($GlField[$field][0]){
       case 'CONSTANT':
         return $GlField[$field][1];
       case 'FUNCTION':
         if($GlField[$field][1] == 'STATIC' && !empty($GlField[$field][3]) ){
           return $GlField[$field][3];
         }else{
           $temp=$GlField[$field][2] ;
           eval ("\$temp=$temp") ;
           $GlField[$field][3]=$temp;
           return $GlField[$field][3];
         }
      case 'TEMPLATE':
          if(file_exists('./template/'.$GlField[$field][1].'.tpl')){
            $temp=join('',file('./template/'.$GlField[$field][1].'.tpl'));
            return  FillTemplate($temp);
          }else{
            return  '<b>*TEMPLATE NOT FOUND('.$field.')*</b>'  ;
          }
      case 'INTEMPLATE':
            $temp=$GlField[$field][1];
            return  FillTemplate($temp);
      case 'MODULE':
          $temp=include('./template/'.$GlField[$field][1].'.php');
          return  $temp;
       }
  }
    preg_match("/\{([A-Za-z0-9\._]+?)}/",$field,$vary);
        $field=$vary[1];
   return FillTemplateFromFile($field);
}
Post #: 1
RE: вопрос по функции array_key_exists() - 2009-01-08 23:53:42.956666   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
Перед 35 строкой впиши: var_dump($GlField);
Что выведет?
Post #: 2
RE: вопрос по функции array_key_exists() - 2009-01-08 23:54:36.786666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
функция array_key_exists ищет в массиве $GIField ключ $field, и если есть, возвращает true
Проблема в $GIField, либо его нет, либо это не массив
 
Post #: 3
RE: вопрос по функции array_key_exists() - 2009-01-09 00:01:21.870000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Вписала var_dump($GlField); 
на сайте вывелось
NULL
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in (….) on line 36
Post #: 4
RE: вопрос по функции array_key_exists() - 2009-01-09 00:02:37.980000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Вот вывелось на сайте:
 
NULL
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in (….) on line 36 array(1) { ["{CONTEXT}"]=> array(2) { [0]=> string(8) "CONSTANT" [1]=> string(9821) "


Post #: 5
RE: вопрос по функции array_key_exists() - 2009-01-09 00:11:13.553333   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
У Вас нет массива $GIField, NULL это пусто, нет такого. То есть проблема где-то раньше, там, где он должен создаваться
Post #: 6
RE: вопрос по функции array_key_exists() - 2009-01-09 00:23:26.950000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
quote:

ORIGINAL: Kissi
array(1) { ["{CONTEXT}"]=&gt; array(2) { [0]=&gt; string(8) "CONSTANT" [1]=&gt; string
А это уже часть многомерного массива. Это откуда?
Post #: 7
RE: вопрос по функции array_key_exists() - 2009-01-09 00:30:51.473333   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Это полностью сообщение, которое выдает сайт
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in (..) on line 36array(1) { ["{CONTEXT}"]=> array(2) { [0]=> string(8) "CONSTANT" [1]=> string

Post #: 8
RE: вопрос по функции array_key_exists() - 2009-01-09 00:39:05.723333   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Как-то странно он выдает… Сначала идет var_dump();, потом array_key_exists();, а выдает сначала на аррай_кей() ошибку, а только потом вар_дамп()….
Попробуйте написать
var_dump($field); echo "&lt;br&gt;&lt;br&gt;"; var_dump($GlField);
Post #: 9
RE: вопрос по функции array_key_exists() - 2009-01-09 00:43:12.736666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
А теперь так получилось :(((
 
 
string(8) "{header}"

NULL
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in (..) on line 38


string(9) "{faqleft}"

NULL
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in (..)on line 38


string(9) "{CONTEXT}"

array(1) { ["{CONTEXT}"]=> array(2) { [0]=> string(8) "CONSTANT" [1]=> string(9821) "


Post #: 10
RE: вопрос по функции array_key_exists() - 2009-01-09 00:57:01.800000   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
мне одному эта регулярка кажется странной децл?

preg_match("/\{([A-Za-z0-9\._]+?)}/",$field,$vary);
Post #: 11
RE: вопрос по функции array_key_exists() - 2009-01-09 00:57:27.920000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Вот смотрите,
string(8) "{header}" - это из var_dump($field); , это ключ, который надо найти в массиве, а
NULL - это из var_dump($GIFeild); , это массив, в котором надо искать ключ {header}
получается функция array_key_exists(ключ,массив) ищет ключ {header} в массиве, который NULL, то есть его нет. Вот в этом и вся проблема - нет массива - негде искать. О чем и предупреждает РНР. Попробуйте if (array_key_exists($field, $GlField)){ заменить на if (@array_key_exists($field, $GlField)){&nbsp;. То есть поставьте собачку @ перед array_key_exists. Это отключит вывод ошибки на этой строке. Может скрипт рассчитан на работу с отключенным отображением ошибок, а это для него и не ошибка вовсе, а просто недоработка
Post #: 12
RE: вопрос по функции array_key_exists() - 2009-01-09 01:08:24.856666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
del извиняйте, кнопку попутал…
Post #: 13
RE: вопрос по функции array_key_exists() - 2009-01-09 01:12:02.310000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
quote:

ORIGINAL: Pashkela

мне одному эта регулярка кажется странной децл?

preg_match("/\{([A-Za-z0-9\._]+?)}/",$field,$vary);
Мне тоже, хотя я и не очень в регулярках шарю. Судя по всему (в скрипте) она должна отсеивать из $field все кроме A-Za-z0-9, а дальше из того, что осталось, открыть файл. Или нет…
Так не лучше $field=preg_replace("|[^A-Za-z0-9\._]+|s", "", $field); ?
Post #: 14
RE: вопрос по функции array_key_exists() - 2009-01-09 01:31:50.363333   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Да, ошибка отключилась, но просто на этом сайте по идее должны ссылки открываться, но они также не открываются.
Post #: 15
RE: вопрос по функции array_key_exists() - 2009-01-09 01:33:51.223333   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Не открываются - не выводятся в браузер? Или как?
Post #: 16
RE: вопрос по функции array_key_exists() - 2009-01-09 01:42:26.203333   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Да, не выводятся. Раньше этот сайт работал, но это было давно…, а теперь пытаюсь его восстановить… :((( Не представляю, что  с ним могло случиться…:(((
Post #: 17
RE: вопрос по функции array_key_exists() - 2009-01-09 01:46:11.360000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Может они выводились скриптом какой-нибудь партнерки (типа SAPE или еще чегонить), а сейчас партнерка не пашет ? Где они откуда они берутся, эти ссылки? И в каком месте кода они выдавались?
Post #: 18
RE: вопрос по функции array_key_exists() - 2009-01-09 01:58:40.146666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Я недавно совсем с РНР общаюсь…и наверно не понятно объясню :)))))… там основной каталог  и подкаталоги
Post #: 19
RE: вопрос по функции array_key_exists() - 2009-01-09 02:03:49.456666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
quote:

ORIGINAL: Kissi
и наверно не понятно объясню :)))))…
Действительно, непонятно….))
Ссылки рекламные были? Всегда в одном и том же месте стояли? Скиньте в личку ссылку на сайт
Post #: 20
RE: вопрос по функции array_key_exists() - 2009-01-09 02:05:00.240000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Его нет в инете он у меня на денвере стоит…:(
Post #: 21
RE: вопрос по функции array_key_exists() - 2009-01-09 02:13:28.216666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Понятно… Может ссылки с одной страницы на другую страницу этого сайта не открываются?
Post #: 22
RE: вопрос по функции array_key_exists() - 2009-01-09 02:18:06.136666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Вобщем…открывается только главная страница, да, странички не открываются, только они написаны не как отдельные странички, их отдельно не открыть…. Из-за этой ошибки наверно…
Post #: 23
RE: вопрос по функции array_key_exists() - 2009-01-09 02:24:22.990000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Нууу, тут вариантов куча, просто так, без кода, нельзя что-либо подсказать… Надо смотреть как формируется страница. А как она не открывается, 404-не найдено, или как? Дайте хоть пример ссылки, которая не открывается.
Post #: 24
RE: вопрос по функции array_key_exists() - 2009-01-09 02:26:45.190000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Дам ссылку :))) а ссылку, эту ту, которая появляется в адресной строке, когда нажимаешь на страничку которую хочешь открыть?:)
Post #: 25
RE: вопрос по функции array_key_exists() - 2009-01-09 02:30:39.973333   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Её самую
Post #: 26
RE: вопрос по функции array_key_exists() - 2009-01-09 02:33:49.040000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
http://istina/map.html например такая…
Post #: 27
RE: вопрос по функции array_key_exists() - 2009-01-09 02:39:26.486666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Скорее всего используется mod_rewrite и он неправильно настроен. В корне сайта есть файл .htaccess ?
Post #: 28
RE: вопрос по функции array_key_exists() - 2009-01-09 02:42:38.616666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Да, есть…
Post #: 29
RE: вопрос по функции array_key_exists() - 2009-01-09 02:48:56.636666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Выложите сюда его содержимое. Если большой то прикрепите к сообщению, только в htaccess.txt переименуйте
Post #: 30
RE: вопрос по функции array_key_exists() - 2009-01-09 02:53:35.883333   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Переименовала, он открылся:
RewriteEngine on
RewriteRule (.*).html index.php?mode=$1  
 
 
Post #: 31
RE: вопрос по функции array_key_exists() - 2009-01-09 03:03:35.540000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
при переходе по http://istina/map.html открывается опять главная, или ошибку выдает ?
Post #: 32
RE: вопрос по функции array_key_exists() - 2009-01-09 03:08:51.096666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
на все ссылки когда нажимаю, все равно главная открывается…
Post #: 33
RE: вопрос по функции array_key_exists() - 2009-01-09 03:10:32.410000   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
только я еще @ не удаляла..
Post #: 34
RE: вопрос по функции array_key_exists() - 2009-01-09 03:29:05.896666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Да @ там нипричем. Там такая система:
при переходе по ссылке http://istina/map.html вызывается index.php?mode=map, то есть в переменную mode подставляется то что после istina/ без .html, здесь это map. Дальше уже index.php берет значение этой переменной и, исходя из ее значения, совершает какие-либо действия, (запросы в базу и т.п.). А после выдает требуемую страницу. А переменная $mode может приниматься либо автоматически, при register_globals=on, а может так if ($_GET['mode']) $mode=$_GET['mode']; при register_globals=off. Может скрипт писался под register_globals=on, а у Вас он off и скрипт просто не видит значение mode, переданное ему через ?mode=map. Поэтому он думает, что вызывался просто index.php, без mode=map.
То есть без кода скрипта здесь мало чем помочь можно. Неизвестно, что и как он делает. ((
Post #: 35
RE: вопрос по функции array_key_exists() - 2009-01-09 03:34:31.096666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Вот первая половина этого главного файла…вторую половину я в самом начале выкладывала…
 
 
if ( !defined('ModulZapushenIz CMS') ) { die("Forbiden"); }
function FillTemplateFromFile($fname){
          if(file_exists('./template/'.$fname.'.tpl')){
            $temp=join('',file('./template/'.$fname.'.tpl'));
            return  FillTemplate($temp);
          }elseif(file_exists('./template/'.$fname.'.php')){
            $temp=include('./template/'.$fname.'.php');
            return  $temp;
          }else{
            return  '{'.$fname.'}';
          }
}

function FillTemplate($text){
    preg_match_all("/\{([A-Za-z0-9\._]+?)}/",$text,$var_array);
        $var_array=$var_array[0];
        $CountVar=count($var_array);
        for($i=0;$i<$CountVar;$i++){
           $InsertText=ParseField($var_array[$i]);
           $text = str_replace($var_array[$i],$InsertText,$text);
        }
  return $text;
}
function ParseField($field){
global $_GET;
global $GlField;
Post #: 36
RE: вопрос по функции array_key_exists() - 2009-01-09 03:48:32.676666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Там в index.php должны быть две строчки:
 
if(!isset($mode)) $mode='index';
if(!isset($need)) $need='';
 
Попробуйте перед ними поставить:
 
if (isset($_GET['mode'])) $mode=$_GET['mode'];
if (isset($_GET['need'])) $need=$_GET['need'];
Post #: 37
RE: вопрос по функции array_key_exists() - 2009-01-09 15:33:22.556666   
Kissi

Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
Спасибо огромное !!!!! Получилось!!!!!!!
Post #: 38
RE: вопрос по функции array_key_exists() - 2009-01-09 15:45:25.543333   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
Всегда пожалуйста. Все дело в этом:
quote:

Может скрипт писался под register_globals=on, а у Вас он off и скрипт просто не видит значение mode, переданное ему через ?mode=map. Поэтому он думает, что вызывался просто index.php, без mode=map.

Там в index.php и написано, что если нет $mode, то $mode='index';  ( if (!isset($mode)) $mode='index'; )
Просто надо всегда данные, передаваемые через GET\POST\COOKIE\FILES получать из $_GET,$_POST,$_COOKIE,$_FILES, а не надеятся на RegisterGlobals=On (это я уже не Вам, а тем кто пишет такие скрипты)
Post #: 39
Страниц:  [1]
Все форумы >> [Веб-программинг] >> вопрос по функции array_key_exists()







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.