RSS Feed
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Тот же "более сложный случай", но элегантнее:
$unauthed_list=array(666,777);
$unauthed = '0' . (($s=@join(',',$unauthed_list)) ? ','.$s : '');
if(!$is_auth[$forum_id]['auth_read'] && !in_list($forum_id,$unauthed_list))
P.S. Даже зарегистрироваться пришлось, чтоб это написать. Так глаза резануло...
$unauthed_list=array(666,777);
$unauthed = '0' . (($s=@join(',',$unauthed_list)) ? ','.$s : '');
if(!$is_auth[$forum_id]['auth_read'] && !in_list($forum_id,$unauthed_list))
P.S. Даже зарегистрироваться пришлось, чтоб это написать. Так глаза резануло...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Спасибо за критику!
Может лучше in_array?
Теперь об "элегантности":
$unauthed = '0,666,777';
if(!$is_auth[$forum_id]['auth_read'] and !in_array($forum_id,explode(",",$unauthed)))
Работает минимум в 4 раза быстрее
P.S. В своей заметке я давал просто мысль где копать, о чём честно и написал в конце.
Добавлено спустя 4 часа 49 минут 19 секунд:
Самое во всем этом смешное, что собственно логика то сравнения неправильная изначально. Вот на что надо было внимание обращать.
Нет, господа, по ночам надо спать, а не программировать:
Вместо if(!$is_auth[$forum_id]['auth_read'] && $forum_id!=666)
Следовало if(!$is_auth[$forum_id]['auth_read'] or $forum_id==666)
соответственно:
if(!$is_auth[$forum_id]['auth_read'] || $forum_id==666 || $forum_id==777)
Ну, или в продвинутой версии:
if(!$is_auth[$forum_id]['auth_read'] or in_array($forum_id,explode(",",$unauthed)))
А поподробнее про функцию in_list расскажите нашим читателям?Тот же "более сложный случай", но элегантнее:
$unauthed_list=array(666,777);
$unauthed = '0' . (($s=@join(',',$unauthed_list)) ? ','.$s : '');
if(!$is_auth[$forum_id]['auth_read'] && !in_list($forum_id,$unauthed_list))
Может лучше in_array?

Теперь об "элегантности":
$unauthed = '0,666,777';
if(!$is_auth[$forum_id]['auth_read'] and !in_array($forum_id,explode(",",$unauthed)))
Работает минимум в 4 раза быстрее

P.S. В своей заметке я давал просто мысль где копать, о чём честно и написал в конце.
Добавлено спустя 4 часа 49 минут 19 секунд:
Самое во всем этом смешное, что собственно логика то сравнения неправильная изначально. Вот на что надо было внимание обращать.
Нет, господа, по ночам надо спать, а не программировать:
Вместо if(!$is_auth[$forum_id]['auth_read'] && $forum_id!=666)
Следовало if(!$is_auth[$forum_id]['auth_read'] or $forum_id==666)
соответственно:
if(!$is_auth[$forum_id]['auth_read'] || $forum_id==666 || $forum_id==777)
Ну, или в продвинутой версии:
if(!$is_auth[$forum_id]['auth_read'] or in_array($forum_id,explode(",",$unauthed)))
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
извиняюсь... in_array несомненно лучшеЕгор Наклоняев писал(а):А поподробнее про функцию in_list расскажите нашим читателям?
Может лучше in_array?

Главное сподвиг к красоте кода! а то rss.php вещь замечатьная, и такая кривизна (a==1 || a==2 || a==3) только портила бы имидж автора.

выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Я бы не сказал, что это кривизна. Это дань тому, что phpBB должен быть совместим с php версии 3. А функция in_array доступна нам илшь с версии 4.
Последний раз редактировалось Xpert 23.01.2005 19:28, всего редактировалось 1 раз.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- phpBB 1.4.4
- Сообщения: 138
- Стаж: 20 лет 5 месяцев
- Откуда: Россия, Москва
-
- phpBB Guru
- Сообщения: 5484
- Стаж: 21 год 1 месяц
- Поблагодарили: 2 раза
Да, была, помню. Но тем не менее, уж если не абсолютную, то достаточную совместимость поддерживать необходимо.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Исключительно из соображений совместимости с PHP3 (и увеличения скоростиXpert писал(а):phpBB должен быть совместим с php версии 3

Код: Выделить всё
if(!$is_auth[$forum_id]['auth_read'] or strstr(",$unauthed," , ",$forum_id,"))

выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Эх! Люблю поругаться с утра, чтобы кровь не застаивалась
ДАНО
$unauthed='0,666,777'
$is_auth[777]['auth_read'] =true;
НАЙТИ
Сработает ли условие при $forum_id==777:
if(!$is_auth[$forum_id]['auth_read'] or strstr(",$unauthed," , ",$forum_id,")) [/quote]
Да. Правильный ответ - сработает.
А вот теперь вопрос на "четыре", а оправдано ли strstr в данном случае?
ЗАДАЧА (на твёрдую "тройку")Исключительно из соображений совместимости с PHP3 (и увеличения скорости ) вариант еще проще:
Код:
if(!$is_auth[$forum_id]['auth_read'] or strstr(",$unauthed," , ",$forum_id,"))
ДАНО
$unauthed='0,666,777'
$is_auth[777]['auth_read'] =true;
НАЙТИ
Сработает ли условие при $forum_id==777:
if(!$is_auth[$forum_id]['auth_read'] or strstr(",$unauthed," , ",$forum_id,")) [/quote]
Да. Правильный ответ - сработает.
А вот теперь вопрос на "четыре", а оправдано ли strstr в данном случае?
Последний раз редактировалось Егор Наклоняев 17.01.2005 13:38, всего редактировалось 1 раз.
-
- phpBB 1.2.0
- Сообщения: 11
- Стаж: 20 лет 4 месяца
Появилась еще одна проблемка. Юзер создал сообщение в которое поместил содержание вот этой страницы: http://mymail-2002.hotbox.ru/30%20Days% ... 0Opera.chm
Вот оно: ITSF
После этого получаем ошибку: http://feedvalidator.org/check.cgi?url= ... p%3Ff%3D15
Вот оно: ITSF
После этого получаем ошибку: http://feedvalidator.org/check.cgi?url= ... p%3Ff%3D15
-
- phpBB 2.0.0
- Сообщения: 230
- Стаж: 20 лет 4 месяца
- Откуда: Москва
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Батенька, это не мой RSS. Вопросы - к автору.кодировка русского языка, является тоже нарушением
Кстати, ошибка связана с некорректным формированием заголовка XML.
Добавлено спустя 3 минуты:
Идею понял. Виноват символ, который изображается этим квадратиком.Появилась еще одна проблемка. Юзер создал сообщение в которое поместил содержание вот этой страницы
Взял на карандаш.
Добавлено спустя 7 минут 17 секунд:
The-eBook
Вот цитатка от валидатора.
А вот результаты моей русской ленты в кодировке 1251Warning
This feed is valid, but may cause problems for some users. We recommend fixing these problems.
Your feed appears to be encoded as "windows-1251", but your server is reporting "US-ASCII"
http://feedvalidator.org/check.cgi?url= ... Fforum.php
Дело в том, что МОД, который стоит у Вас был взят изначально мною за основу, о чём я честно и писал в версии 1.х, но, впоследствии, он был переписан практически с нуля. Там еще много подобных шероховатостей.
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
эта цитатка намекает на желательностьWarning
This feed is valid, but may cause problems for some users. We recommend fixing these problems.
Your feed appears to be encoded as "windows-1251", but your server is reporting "US-ASCII"
AddDefaultCharset windows-1251
в файле .htaccess
Заголовок XML тут ни при чем.
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
(скромно так) У меня сделано так:Заголовок XML тут ни при чем.
header ('Content-Type: text/xml; charset='.$lang['ENCODING']);
В том RSS, если мне не изменяет память:
header ('Content-Type: text/xml');
Почувствуйте разницу.
Добавлено спустя 5 минут 59 секунд:
P.S. The-eBook - если у себя исправите, то ошибка пропадёт.
Самое смешное, что Валидатор тоже не считает. Он просто делает замечание о неосоответствии кодировок.Я например не считаю это ошибкой
Если дочитать сраницу до конца, там же написано:
Congratulations!
This is a valid RSS feed.
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Ну дак это заголовок http, а не XML. Так ведь?Егор Наклоняев писал(а):header ('Content-Type: text/xml; charset='.$lang['ENCODING']);Заголовок XML тут ни при чем.
В том RSS, если мне не изменяет память:
header ('Content-Type: text/xml');
Почувствуйте разницу.
Загловок XML там нормальный:
А вот весь http-заголовок ответа от сервера http://www.the-ebook.org/forum/rss.php<?xml version="1.0" encoding="windows-1251" ?>
<rss version="0.92">
Код: Выделить всё
HTTP/1.1 200 OK
Date: Mon, 17 Jan 2005 11:40:02 GMT
Server: Apache/1.3.31 (Unix) mod_fastcgi/2.4.2 PHP/4.3.8 mod_ssl/2.8.19 OpenSSL/0.9.7d
Cache-Control: private, pre-check=0, post-check=0, max-age=0
Expires: Mon, 17 Jan 2005 11:40:05 GMT
X-Powered-By: PHP/4.3.8
Set-Cookie: phpbb2mysql_data=a%3A0%3A%7B%7D; expires=Tue, 17-Jan-2006 11:40:03 GMT; path=/
Set-Cookie: phpbb2mysql_sid=e65ce289f3c96e236a7bcb109fde5206; path=/
Last-Modified: Mon, 17 Jan 2005 11:40:05 GMT
Connection: close
Content-Type: text/xml
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948