08.06.2008, 01:09 | #1 |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
Нужен совет по форуму 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 Это можно как то поправить? или можно только сделать востановление базы данных Форум пока пустой я в крайнем случае могу его переустановить но просто любопытно можно в принципе ошибку вылечить?
__________________
|
08.06.2008, 16:29 | #2 |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
Попробовал в Google набрал в поиск инфу об ошибке выскочило куча сообщений при чем первое мое, только вчера задал тут вопрос а гугль уже проиндексировал страничку с вопросом. Оперативно гугль индексирует саповский форум.
http://www.google.com/search?ie=UTF-...on%20line%2021
__________________
Последний раз редактировалось Alexander; 08.06.2008 в 16:31. |
08.06.2008, 17:20 | #3 | |
Специалист
Регистрация: 16.12.2007
Сообщений: 190
Вес репутации: 206
|
Цитата:
Надо либо инициализировать массив $array=array() где-нибудь в начале кода, до того, как к массиву добавляются значения, либо foreach() выполнять при условии, что массив $array существует и/или ненулевой длины. Можно, конечно, запретить выдачу warning'ов, но это плохо для отладки. |
|
08.06.2008, 20:53 | #4 | |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
Цитата:
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>)?' );
__________________
|
|
08.06.2008, 20:55 | #5 |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
Далее идет
// 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 );
__________________
|
09.06.2008, 10:43 | #6 | |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
Цитата:
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>)?' ); Поставил но не помогло ...
__________________
|
|
09.06.2008, 14:55 | #8 |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
Ладно, видимо сложная задача ... если варианта лечения в ближайшие пару дней не найду просто востановлю базу данных в первоначальное состояние, т.е сделаю возврат к тому что было до того как совершил действия приведшие к ошибке. Самое простое решение вопроса. Но мне чисто из спортивного интереса было любопытно можно ли вылечить ...
__________________
Последний раз редактировалось Alexander; 09.06.2008 в 14:58. |
09.06.2008, 14:58 | #9 |
Специалист
Регистрация: 16.12.2007
Сообщений: 190
Вес репутации: 206
|
А, ты, похоже, в РНР совсем не шибко. Такая команда и не должна была помочь, $array - условная переменная для примера, у твоей другое имя.
Найди строку 21, на которую ругается РНР. Там должен быть оператор foreach(). В скобках должны быть параметры, то есть чего-то типа foreach($array as $value) или foreach($array as $key=>$value). В выданном тобой коде я этого оператора не вижу. Дай код до этого оператора, скажу куда чего поставить. Учти, что параметры $array, $key, $value - условные, в коде у тебя они называются по-другому. Напиши что ли в личку, думаю, больше никому это не интересно. Последний раз редактировалось zetex; 09.06.2008 в 15:02. |
09.06.2008, 16:16 | #10 |
Специалист
Регистрация: 04.04.2007
Сообщений: 312
Вес репутации: 216
|
zetex, большое спасибо за поддержку, я проблему решил теперь работает все нормально http://www.gothic.su/forum/showthread.php?p=5#post5
Удалось решить следущим способом - удалил все продукты (хаки) которые поставил в последнее время перед тем как появилась ошибка потом поставил их заново. И всё нормально заработало. В PHP к сожалению совсем не разбираюсь ... надо учится
__________________
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужен совет | 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.