вопрос по функции array_key_exists()
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
вопрос по функции 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); }
|
|
|
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); Что выведет?
|
|
|
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, либо его нет, либо это не массив
|
|
|
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
|
|
|
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) "
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 00:11:13.553333
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
У Вас нет массива $GIField, NULL это пусто, нет такого. То есть проблема где-то раньше, там, где он должен создаваться
|
|
|
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}"]=> array(2) { [0]=> string(8) "CONSTANT" [1]=> string А это уже часть многомерного массива. Это откуда?
|
|
|
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
|
|
|
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 "<br><br>";
var_dump($GlField);
|
|
|
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) "
|
|
|
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);
|
|
|
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)){ . То есть поставьте собачку @ перед array_key_exists. Это отключит вывод ошибки на этой строке. Может скрипт рассчитан на работу с отключенным отображением ошибок, а это для него и не ошибка вовсе, а просто недоработка
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 01:08:24.856666
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
del извиняйте, кнопку попутал…
|
|
|
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); ?
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 01:31:50.363333
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Да, ошибка отключилась, но просто на этом сайте по идее должны ссылки открываться, но они также не открываются.
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 01:33:51.223333
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Не открываются - не выводятся в браузер? Или как?
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 01:42:26.203333
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Да, не выводятся. Раньше этот сайт работал, но это было давно…, а теперь пытаюсь его восстановить… :((( Не представляю, что с ним могло случиться…:(((
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 01:46:11.360000
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Может они выводились скриптом какой-нибудь партнерки (типа SAPE или еще чегонить), а сейчас партнерка не пашет ? Где они откуда они берутся, эти ссылки? И в каком месте кода они выдавались?
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 01:58:40.146666
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Я недавно совсем с РНР общаюсь…и наверно не понятно объясню :)))))… там основной каталог и подкаталоги
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:03:49.456666
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
quote:
ORIGINAL: Kissi и наверно не понятно объясню :)))))… Действительно, непонятно….)) Ссылки рекламные были? Всегда в одном и том же месте стояли? Скиньте в личку ссылку на сайт
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:05:00.240000
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Его нет в инете он у меня на денвере стоит…:(
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:13:28.216666
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Понятно… Может ссылки с одной страницы на другую страницу этого сайта не открываются?
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:18:06.136666
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Вобщем…открывается только главная страница, да, странички не открываются, только они написаны не как отдельные странички, их отдельно не открыть…. Из-за этой ошибки наверно…
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:24:22.990000
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Нууу, тут вариантов куча, просто так, без кода, нельзя что-либо подсказать… Надо смотреть как формируется страница. А как она не открывается, 404-не найдено, или как? Дайте хоть пример ссылки, которая не открывается.
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:26:45.190000
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Дам ссылку :))) а ссылку, эту ту, которая появляется в адресной строке, когда нажимаешь на страничку которую хочешь открыть?:)
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:30:39.973333
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Её самую
|
|
|
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 например такая…
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:39:26.486666
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Скорее всего используется mod_rewrite и он неправильно настроен. В корне сайта есть файл .htaccess ?
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:42:38.616666
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Да, есть…
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 02:48:56.636666
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
Выложите сюда его содержимое. Если большой то прикрепите к сообщению, только в htaccess.txt переименуйте
|
|
|
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
|
|
|
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 открывается опять главная, или ошибку выдает ?
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 03:08:51.096666
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
на все ссылки когда нажимаю, все равно главная открывается…
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 03:10:32.410000
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
только я еще @ не удаляла..
|
|
|
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. То есть без кода скрипта здесь мало чем помочь можно. Неизвестно, что и как он делает. ((
|
|
|
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;
|
|
|
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'];
|
|
|
RE: вопрос по функции array_key_exists() - 2009-01-09 15:33:22.556666
|
|
|
Kissi
Сообщений: 41
Оценки: 0
Присоединился: 2008-11-01 11:05:23.856666
|
Спасибо огромное !!!!! Получилось!!!!!!!
|
|
|
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 (это я уже не Вам, а тем кто пишет такие скрипты)
|
|
|
|
|