Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 08.06.2008, 01:09   #1
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию Нужен совет по форуму vBulletin

Я немного перемудрил при устанвке хака passiveVid на форум vBulletin в результате поучиласть ошибка

Warning: Invalid argument supplied for foreach() in [path]/includes/class_postbit.php(288) : eval()'d code on line 21

http://www.gothic.su/forum/showthread.php?t=5

Это можно как то поправить?
или можно только сделать востановление базы данных
Форум пока пустой я в крайнем случае могу его переустановить но просто любопытно можно в принципе ошибку вылечить?
Alexander вне форума   Ответить с цитированием
Старый 08.06.2008, 16:29   #2
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию

Попробовал в Google набрал в поиск инфу об ошибке выскочило куча сообщений при чем первое мое, только вчера задал тут вопрос а гугль уже проиндексировал страничку с вопросом. Оперативно гугль индексирует саповский форум.
http://www.google.com/search?ie=UTF-...on%20line%2021

Последний раз редактировалось Alexander; 08.06.2008 в 16:31.
Alexander вне форума   Ответить с цитированием
Старый 08.06.2008, 17:20   #3
Специалист
 
Регистрация: 16.12.2007
Сообщений: 190
Вес репутации: 206
zetex - очень-очень хороший человекzetex - очень-очень хороший человекzetex - очень-очень хороший человекzetex - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Alexander Посмотреть сообщение
Warning: Invalid argument supplied for foreach() in [path]/includes/class_postbit.php(288) : eval()'d code on line 21
Ерунда. Warning - предупреждение, отработку кода не останавливает. Просто массив ($array), который используется как аргумент в foreach($array as $val) пустой и не заявлен как массив до пополнения. До 5й версии РНР такими штуками не заморачивался, и warning'и при этом не выдавал.

Надо либо инициализировать массив $array=array() где-нибудь в начале кода, до того, как к массиву добавляются значения, либо foreach() выполнять при условии, что массив $array существует и/или ненулевой длины.

Можно, конечно, запретить выдачу warning'ов, но это плохо для отладки.
zetex вне форума   Ответить с цитированием
Старый 08.06.2008, 20:53   #4
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию

Цитата:
Сообщение от zetex Посмотреть сообщение
Надо либо инициализировать массив $array=array() где-нибудь в начале кода, до того, как к массиву добавляются значения, либо foreach() выполнять при условии, что массив $array существует и/или ненулевой длины.
В какое место поставить? это начало кода

if ($vbulletin->options['passiveVid_enabled'] && (in_array(THIS_SCRIPT,array('showthread','editpost ','newreply','newthread','showpost','private','ann ouncement','member','blog','adv_index','usernote') ))) {
if ($vbulletin->options['passiveVid_custom_enabled']) {
$customstring = preg_replace("#\"#","'",$vbulletin->options['passiveVid_custom_str']);
} else {
$customstring = '$PASSIVEEMBED';
}

$urlrx = array (
'(?:<a[^\<\>]+href=\")?(?:http://)?(',
')[^"]*(?:\"[^\<\>]*>)?([^\<\>]*)(?:</a>)?'
);
Alexander вне форума   Ответить с цитированием
Старый 08.06.2008, 20:55   #5
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию

Далее идет

// YouTube
$passiveVid[] = array (
'string' => '#'.$urlrx[0].'(?:[a-zA-Z]{1,4}\.)?youtube.com/(?:watch)?\?v=(.{11}?)'.$urlrx[1].'#',
'replacement' => '$PASSIVEURL = $matches[1]; $PASSIVETITLE = $matches[3]; $PASSIVEEMBED = \'<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/\'.$matches[2].\'"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\'.$matches[2].\'" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>\'; return "'.$customstring.'";',
'id' => 1
);
$passiveVid[] = array (
'string' => '#\[youtube\]([^\[\]]+)\[/youtube\]#',
'replacement' => 'return \'<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/\'.$matches[1].\'"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\'.$matches[1].\'" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>\';',
'id' => 1
);
Alexander вне форума   Ответить с цитированием
Старый 09.06.2008, 10:43   #6
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию

Цитата:
Сообщение от zetex Посмотреть сообщение
Надо либо инициализировать массив $array=array() где-нибудь в начале кода, до того, как к массиву добавляются значения
if ($vbulletin->options['passiveVid_enabled'] && (in_array(THIS_SCRIPT,array('showthread','editpost ','newreply','newthread','showpost','private','ann ouncement','member','blog','adv_index','usernote') ))) {
if ($vbulletin->options['passiveVid_custom_enabled']) {
$customstring = preg_replace("#\"#","'",$vbulletin->options['passiveVid_custom_str']);
} else {
$customstring = '$PASSIVEEMBED';
}
$array=array()
$urlrx = array (
'(?:<a[^\<\>]+href=\")?(?:http://)?(',
')[^"]*(?:\"[^\<\>]*>)?([^\<\>]*)(?:</a>)?'
);

Поставил но не помогло ...
Alexander вне форума   Ответить с цитированием
Старый 09.06.2008, 12:20   #7
Специалист
 
Аватар для Inferno
 
Регистрация: 10.01.2008
Адрес: ЕС, Бельгия
Сообщений: 262
Вес репутации: 213
Inferno - просто великолепная личностьInferno - просто великолепная личностьInferno - просто великолепная личностьInferno - просто великолепная личностьInferno - просто великолепная личностьInferno - просто великолепная личностьInferno - просто великолепная личностьInferno - просто великолепная личность
Отправить сообщение для Inferno с помощью ICQ
По умолчанию

Жалко что на сапафоруме нет великого zCarot'a...
Inferno вне форума   Ответить с цитированием
Старый 09.06.2008, 14:55   #8
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию

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

Последний раз редактировалось Alexander; 09.06.2008 в 14:58.
Alexander вне форума   Ответить с цитированием
Старый 09.06.2008, 14:58   #9
Специалист
 
Регистрация: 16.12.2007
Сообщений: 190
Вес репутации: 206
zetex - очень-очень хороший человекzetex - очень-очень хороший человекzetex - очень-очень хороший человекzetex - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Alexander Посмотреть сообщение
$array=array()

Поставил но не помогло ...
А, ты, похоже, в РНР совсем не шибко. Такая команда и не должна была помочь, $array - условная переменная для примера, у твоей другое имя.

Найди строку 21, на которую ругается РНР. Там должен быть оператор foreach(). В скобках должны быть параметры, то есть чего-то типа foreach($array as $value) или foreach($array as $key=>$value).
В выданном тобой коде я этого оператора не вижу. Дай код до этого оператора, скажу куда чего поставить.
Учти, что параметры $array, $key, $value - условные, в коде у тебя они называются по-другому.

Напиши что ли в личку, думаю, больше никому это не интересно.

Последний раз редактировалось zetex; 09.06.2008 в 15:02.
zetex вне форума   Ответить с цитированием
Старый 09.06.2008, 16:16   #10
Специалист
 
Аватар для Alexander
 
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
Alexander - как роза среди колючекAlexander - как роза среди колючекAlexander - как роза среди колючек
По умолчанию

zetex, большое спасибо за поддержку, я проблему решил теперь работает все нормально http://www.gothic.su/forum/showthread.php?p=5#post5
Удалось решить следущим способом - удалил все продукты (хаки) которые поставил в последнее время перед тем как появилась ошибка потом поставил их заново. И всё нормально заработало. В PHP к сожалению совсем не разбираюсь ... надо учится
Alexander вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужен совет Ariya Вопросы от новичков 16 20.09.2010 15:10
Нужен совет mazda_3 Вопросы от новичков 5 16.03.2008 01:15
Нужен совет mazda_3 Курилка 11 18.02.2008 19:55
Нужен совет... Alex_11 Яндекс 20 30.10.2007 01:03
Нужен совет... Alex_11 Яндекс 0 08.10.2007 11:30


Часовой пояс GMT +3, время: 02:23.