ExBB Community » Файловый ExBB » Модификации и дополнения » Мод: Хранение статистики чтения тем на сервере

Страниц (19): В начало « ... 9 10 11 12 [13] 14 15 16 17 ... » В конец
 

181. igrok54 - 23 июля 2011 — 12:10 - перейти к сообщению
Я зарегился, авторизовался и получил эту ошибку. Так что она есть. Вышел из акка, зашел снова - ошибка есть.
182. BON - 23 июля 2011 — 12:56 - перейти к сообщению
igrok54, скажите, а зачем было замалёвывать путь? всё равно он для пользователей не доступен
183. Zeg - 23 июля 2011 — 15:18 - перейти к сообщению
Поэкспериментировал. Зарегил нового пользователя, получил ошибку. Странно. До позавчера такого не было Недовольство, огорчение. С кодом igrok54 пишет, что не существует переменная 6. Но! Это пишет для всех пользователей, и старых и новых. А ошибка вылазит сейчас на новых.

CODE:
if(isset($t_visits[$id])) {$search_error=$search_error.'<p> Переменная 6 существует</p>';}
else {$search_error=$search_error.'<p> Переменная 6 не найдена</p>';}
184. igrok54 - 23 июля 2011 — 18:53 - перейти к сообщению
Zeg, временно, пока ошибку не отладил, можно закрыть ее вывод на странице, если после первой строки
CODE:
<?php

вставить строку:
CODE:
error_reporting(E_ALL ^ E_NOTICE);

А на момент отладки ее комментировать.
Исходя из этого возникает вопрос - знаю, что весь скрипт ExBB написан под директиву error_reporting(E_ALL ^ E_NOTICE); - т.е. в нем изначально имеются такие нотисы в достаточном количестве. А виден только один... На своем домене я их правил, поэтому представляю их количество.
Внимание, вопрос:
Zeg, вы отлавливали и правили другие нотисы в файлах скрипта или в файл index.php вставили строку: error_reporting(E_ALL);, т.е. выводить все ошибки. Если второе, то эта же ошибка, возможно, имеется и в других файлах, но там скрывается за директивой error_reporting(E_ALL ^ E_NOTICE);...

Факты:
Я зарегился днем, ошибка вылезала только на index.php, на других страницах ее нет.
Вошел - вышел - снова вошел в аккаунт - ошибка когда авторизован выходит независимо от повторных авторизаций.
Вечером (предполагал, что ошибка может быть у последнего зарегистрированного) - то же самое, значит предположение не верно...

Далее размышления:
По типу ошибки Undefined offset: 50 понятно, что скрипт не может разобрать в массив какие-то данные. Это бывает, например, если в базу попала пустая строка и скрипт пытается ее разложить на переменные через explode, либо формат строки не соответствует количеству переменных, в которые эту строку надо разложить - например такой код:
list( $id, $name, $mail ) = explode( ':', '1111:Vasya' );
- строку ( '1111:Vasya' ) разложить надо на три переменные ( $id, $name, $mail ), а в строке только один разделитель ( ':' ), т.е. строку фактически можно разложить только на две части, а не на три, как затребовано кодом.
вызовет ошибку:
Notice: Undefined offset: 2

Киньте свой файл index.php, посмотрю, может найду как поправить.
185. Zeg - 23 июля 2011 — 19:23 - перейти к сообщению
igrok54, ушло мылом. Никаких нотисов специально не скрывал. Ошибка до вчерашнего дня не всплывала (пока BON не "поймал"). Кстати, BON уже не первый день зарегистрирован.
186. BON - 23 июля 2011 — 19:38 - перейти к сообщению
igrok54, кстати, я вот немного не понял про вывод ошибок. По умолчанию в двиге сделано так что все нотисы будут выводиться? И получается если какое то предупреждение не критично то можно просто закрыть и всё?
(Добавление)
Zeg пишет:
Кстати, BON уже не первый день зарегистрирован.

именно. Я просто давно не заходил, а вчера зашел и тут вывалилась эта бяка. Последний раз заходил, если не ошибаюсь когда тестил mod_rewrite чтобы картинки дальше моего хоста не выгружались
(Добавление)
да, чуть не забыл. Когда я заходил я был уже залогинен. Сессия в куках ещё не истекла. Так что непонятно откуда глюк
187. Zeg - 23 июля 2011 — 19:59 - перейти к сообщению
Методом тыка и перебора пока понял то, что стопорить именно на этом:

CODE:
$_watchesIndex[$id][1]


Дальше кручу.
188. igrok54 - 23 июля 2011 — 20:32 - перейти к сообщению
Zeg пишет:
Очень похоже, что не разгребает $_watchesIndex[$id][1]

Отладчик говорит, что элемента массива не существует для указанного ID

Попробуй вывести на страницу, что находится в массиве $_watchesIndex[$id] или $_watchesIndex.
код вывода типа:
CODE:
echo '<pre>';print_r($_watchesIndex[$id]);echo '</pre>';
189. Zeg - 24 июля 2011 — 00:10 - перейти к сообщению
igrok54, как раз и падает при $id==50. Смотрите исходный код, там в комментариях выводится $_watchesIndex[$id].
(Добавление)
forum==50 - приватный форум, вот на чем спотыкается. Хотя раньше в него кроме админов вообще никто не имел доступа, сейчас дал доступ некоторым пользователям.
190. Zeg - 24 июля 2011 — 10:41 - перейти к сообщению
На морде форума приватный раздел (подфорум) не отображается. Зато отображается справа (где ссылки на последние сообщения тем) ссылка на одну из этих приватных тем. А ее там быть не должно вообще для неимеющих доступ, они и знать не должны, что такая тема там есть. Вот тут все и "рушится".
191. igrok54 - 24 июля 2011 — 10:55 - перейти к сообщению
Попробуй вместо переменной $_watchesIndex[$id][1] подставить выражение, целиком, в скобках:
CODE:
($_watchesIndex[$id] && $_watchesIndex[$id][1])
192. Zeg - 24 июля 2011 — 11:24 - перейти к сообщению
igrok54, пробовал, без толку. Сейчас пытаюсь сделать обработку (точнее пропуск) обработки приватных форумов для тех, у кого нет на это доступа.
193. igrok54 - 24 июля 2011 — 12:13 - перейти к сообщению
Попробуй так:
CODE:
// Проверка наличия $_watchesIndex[$id][1]
if(isset($_watchesIndex[$id])) {
if(isset($_watchesIndex[$id][1])) {$CwatchesIndex=1;}
else {$CwatchesIndex=0;}
} else {$CwatchesIndex=0;}
// Код, где вместо проверки наличия $_watchesIndex[$id][1] идет сверка положения контроллера
$LastTopicName = ($fm->user['id'] && ($fm->exbb['watches'] && $CwatchesIndex===1 || !$fm->exbb['watches'] && ($fm->user['last_visit'] < $forum['last_key'] && $fm->user['id'] != $forum['last_poster_id'] && ((!isset($t_visits[$id.':'.$forum['last_post_id']]) || $t_visits[$id.':'.$forum['last_post_id']] < $forum['last_key'])))) ? '<a href="topic.php?forum='.$id.'&topic='.$forum['last_post_id'].'&v=u#unread" title="'.$fm->LANG['GoToFirstUnread'].'"><img src="./templates/'.DEF_SKIN.'/im/unread.gif" border="0" width="12" height="12" alt="" /></a> ' : '<img src="./templates/'.DEF_SKIN.'/im/lastpost.gif" alt=""> ') . ($fm->exbb['show_hints'] ? '<span class="hint">' : '').'<a href="topic.php?forum='.$id.'&topic='.$forum['last_post_id'].'&postid='.$forum['last_key'].'#'.$forum['last_key'].'" title="'.$forum['last_post'].'">'.$LastTopicName.'</a>'.($fm->exbb['show_hints'] ? '</span>' : '');
194. BON - 24 июля 2011 — 12:13 - перейти к сообщению
Zeg, получается ссылка вылезает из-за мода хранения статистики на сервере. Может я скажу нелепость, но надо посмотреть код формирования ссылок на последние собщение и задать условие, что если форум приватный то забыть про него. Как идея?
195. Zeg - 24 июля 2011 — 12:19 - перейти к сообщению
BON, так и пытаюсь делать, но что-то не выходит. Как я писал выше, по логике, сам движок не должен выводить в правой колонке ("Обновление") ссылок на приватные форумы, т.е. они заранее должны были быть отфильтрованы (подфорумы-то прячутся).

igrok54, сейчас буду пробовать.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0215]     [ ]