Intellect Board Pro
Расширяемая система управления форумами с открытым исходным кодом
Объявление
Выпущена версия 3.02 с двумя новыми типами разделов: блог и микроблог.
Перейти к скачиванию
Привет, гость!

"Чат" техподдержки

режим чата на форумах ( = способы экспресс-уведомлений)

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Страницы:
Распечатать
Пользоватся не буду
Начинающий
Всего сообщений: 98
Зарегистрирован: 5 мая 2015, 11:37
Рейтинг пользователя: 0

0
20 августа 2016, 23:48#11
    4X_Pro,можешь помочь твоему давнему читателю, тоесть мне? У меня на форуме я сделал дополнение, делающее выборку по запросу quote user. Тоесть делается выборка из бд, где списком выводятся посты, с юзерами процитировавшими меня. Была проблемма с кирилистическими никами, я исправил, не работало с русскими никами. Теперь работает, но выборку по русским никам показывает всю имеюющуюся, а по латинским (так нужно)-только новую. Движок-phpbb3. Давать кусок кода?

    Всё, что мне известно о PHP-меня научил 4X_Pro
    Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

    4X_Pro
    Основатель проекта
    Всего сообщений: 240
    Зарегистрирован: 22 сен 2014, 18:56
    Откуда: Москва, Перово
    Рейтинг пользователя: 6

    0
    22 августа 2016, 08:41#12
      Ладно, хотя помогать со сторонними движками тут как-то не совсем правильно.
      Только я так и не понял, нужно, чтобы выборка шла только по новым сообщениям или наоборот, по всем?

      Критикуя — предлагай, предлагая — обосновывай!
      4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

      Пользоватся не буду
      Начинающий
      Всего сообщений: 98
      Зарегистрирован: 5 мая 2015, 11:37
      Рейтинг пользователя: 0

      0
      22 августа 2016, 21:31#13
        4X_Proнаписал(а):
        Только я так и не понял, нужно, чтобы выборка шла только по новым сообщениям или наоборот, по всем?

        Спасибо за отзывчивость. Тронут. Я сейчас пишу с мобильного, отправился на 2 дня в командировку. Там дело в свойстве htmlentitles () Чтоб ты полностью владел информацией, я по возвращению предоставлю код файла, и правки, которые я делал. Через 2 дня. Заскриню, в общем полностью опишу ситуацию. Сейчас доступа к серверу не имею, с мобильного не хочу лезть туда. Предварительно скажу, что некорректно работает с кириллицей, версия PHP 5.3
        удачи и до связи.

        Всё, что мне известно о PHP-меня научил 4X_Pro
        Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

        _1_
        Участник
        Всего сообщений: 232
        Зарегистрирован: 14 окт 2014, 09:11
        Рейтинг пользователя: 15

        0
        23 августа 2016, 10:15. Редактировалось 1 раз, последний — 23 августа 2016, 10:19#14
           Пользоватся не буду написал(а):
          делается выборка из БД, где списком выводятся посты, с юзерами процитировавшими меня.

          В постановке этой задачи не хватает универсальности:
          1) Обычно, вопрос касается не только "меня". Например, ...
           
          ... читаю сообщение от Мистера-X. И есть, что ему/ей ответить. Но вдруг кто-то в этой теме уже ответил то же? Ответить хочется быстро (а там, впереди, ещё много страниц...)



          Функция поиска ответов на конкретный пост(не обязательно с цитированием)– это одна из главных возможностей современных форумов. Странно, что до сих пор даже в популярных движках этой возможности нет по умолчанию, и приходится программировать её вручную.


          2) Кроме типовых запросов пригодятся модифицированные. Возможность изменять типовой запрос тоже надо предусматривать. И конечно, предоставлять её не только админам, но и обычным продвинутым пользователям.

          Пользоватся не буду
          Начинающий
          Всего сообщений: 98
          Зарегистрирован: 5 мая 2015, 11:37
          Рейтинг пользователя: 0

          0
          24 августа 2016, 12:48#15
            4X_Proнаписал(а):
            Только я так и не понял, нужно, чтобы выборка шла только по новым сообщениям или наоборот, по всем?

            Я вернулся. Выборка должна идти только по непрочитанным.
            Суть проблеммы:
            В инклуд файле function.php я вношу строку, которой там ранее не было. Вначале эта строка выглядела так:
            'U_SEARCH_WHO_QUOTED_ME'=> append_sid("{$phpbb_root_path}search.$phpEx", 'st=0&sk=t&sd=d&sr=posts&keywords=quote+' . htmlentities($user->data['username'])), // & is and + is +
            Вследствии этого возникает проблемма, что пользователи с латинскими никами, и цифровыми (например 1) Видят результаты поиска, так, как и задумывалось (см. скрин, я там всё написал и подчеркнул)

            .
            .
            А вот пользователи с никами на кириллице (в частности я), видят пустую сроку. Битая кодировка. См. скрин.

            .
            .
            После этого я внёс правки. Строка стала выглядеть так:
            'U_SEARCH_WHO_QUOTED_ME'=> append_sid("{$phpbb_root_path}search.$phpEx", 'st=0&sk=t&sd=d&sr=posts&keywords=quote+' . htmlentities($user->data['username'],ENT_QUOTES,"UTF-8")), // & is and + is +
            .
            .
            После этого кирилистические ники стали отображаться. Но показывет ВСЕ цитаты, где меня процитировали. А нужны-только новые, как с латинскими никами. См. скрин. Как исправить это?
            .
            .

            Всё, что мне известно о PHP-меня научил 4X_Pro
            Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

            Пользоватся не буду
            Начинающий
            Всего сообщений: 98
            Зарегистрирован: 5 мая 2015, 11:37
            Рейтинг пользователя: 0

            0
            24 августа 2016, 12:55#16
              Весь файл не влазит. Вот массив.
              $template->assign_vars(array( 'SITENAME' => $config['sitename'], 'SITE_DESCRIPTION' => $config['site_desc'], 'PAGE_TITLE' => $page_title, // Advanced Meta Tags MOD 'PAGE_KEYWORDS' => $page_keywords, 'PAGE_DESCRIPTION' => $page_description, 'SCRIPT_NAME' => str_replace('.' . $phpEx, '', $user->page['page_name']), 'LAST_VISIT_DATE' => sprintf($user->lang['YOU_LAST_VISIT'], $s_last_visit), 'LAST_VISIT_YOU' => $s_last_visit, 'CURRENT_TIME' => sprintf($user->lang['CURRENT_TIME'], $user->format_date(time(), false, true)), 'TOTAL_USERS_ONLINE' => $l_online_users, 'LOGGED_IN_USER_LIST' => $online_userlist, 'RECORD_USERS' => $l_online_record, 'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text, 'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread, 'S_USER_NEW_PRIVMSG' => $user->data['user_new_privmsg'], 'S_USER_UNREAD_PRIVMSG' => $user->data['user_unread_privmsg'], 'S_USER_NEW' => $user->data['user_new'], 'SID' => $SID, '_SID' => $_SID, 'SESSION_ID' => $user->session_id, 'ROOT_PATH' => $phpbb_root_path, 'BOARD_URL' => $board_url, 'L_LOGIN_LOGOUT' => $l_login_logout, 'L_INDEX' => $user->lang['FORUM_INDEX'], 'L_ONLINE_EXPLAIN' => $l_online_time, 'U_PRIVATEMSGS' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=inbox'), 'U_RETURN_INBOX' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=inbox'), 'U_POPUP_PM' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=popup'), 'UA_POPUP_PM' => addslashes(append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=popup')), 'U_MEMBERLIST' => append_sid("{$phpbb_root_path}memberlist.$phpEx"), 'U_VIEWONLINE' => ($auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel')) ? append_sid("{$phpbb_root_path}viewonline.$phpEx") : '', 'U_LOGIN_LOGOUT' => $u_login_logout, 'U_INDEX' => append_sid("{$phpbb_root_path}index.$phpEx"), 'U_SEARCH' => append_sid("{$phpbb_root_path}search.$phpEx"), 'U_REGISTER' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register'), 'U_PROFILE' => append_sid("{$phpbb_root_path}ucp.$phpEx"), 'U_MODCP' => append_sid("{$phpbb_root_path}mcp.$phpEx", false, true, $user->session_id), 'U_FAQ' => append_sid("{$phpbb_root_path}faq.$phpEx"), 'U_SEARCH_SELF' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=egosearch'), 'U_SEARCH_WHO_QUOTED_ME'=> append_sid("{$phpbb_root_path}search.$phpEx", 'st=0&sk=t&sd=d&sr=posts&keywords=quote+' . htmlentities($user->data['username'],ENT_QUOTES,"UTF-8")), // & is and + is + 'U_SEARCH_NEW' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts'), 'U_SEARCH_UNANSWERED' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unanswered'), 'U_SEARCH_UNREAD' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'), 'U_SEARCH_ACTIVE_TOPICS'=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=active_topics'), 'U_DELETE_COOKIES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=delete_cookies'), 'U_TEAM' => ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=leaders'), 'U_TERMS_USE' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=terms'), 'U_PRIVACY' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=privacy'), 'U_RESTORE_PERMISSIONS' => ($user->data['user_perm_from'] && $auth->acl_get('a_switchperm')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=restore_perm') : '', 'U_FEED' => generate_board_url() . "/feed.$phpEx", 'S_USER_LOGGED_IN' => ($user->data['user_id'] != ANONYMOUS) ? true : false, 'S_AUTOLOGIN_ENABLED' => ($config['allow_autologin']) ? true : false, 'S_BOARD_DISABLED' => ($config['board_disable']) ? true : false, 'S_REGISTERED_USER' => (!empty($user->data['is_registered'])) ? true : false, 'S_IS_BOT' => (!empty($user->data['is_bot'])) ? true : false, 'S_USER_PM_POPUP' => $user->optionget('popuppm'), 'S_USER_LANG' => $user_lang, 'S_USER_BROWSER' => (isset($user->data['session_browser'])) ? $user->data['session_browser'] : $user->lang['UNKNOWN_BROWSER'], 'S_USERNAME' => $user->data['username'], 'S_CONTENT_DIRECTION' => $user->lang['DIRECTION'], 'S_CONTENT_FLOW_BEGIN' => ($user->lang['DIRECTION'] == 'ltr') ? 'left' : 'right', 'S_CONTENT_FLOW_END' => ($user->lang['DIRECTION'] == 'ltr') ? 'right' : 'left', 'S_CONTENT_ENCODING' => 'UTF-8', 'S_TIMEZONE' => ($user->data['user_dst'] || ($user->data['user_id'] == ANONYMOUS && $config['board_dst'])) ? sprintf($user->lang['ALL_TIMES'], $user->lang['tz'][$tz], $user->lang['tz']['dst']) : sprintf($user->lang['ALL_TIMES'], $user->lang['tz'][$tz], ''), 'S_DISPLAY_ONLINE_LIST' => ($l_online_time) ? 1 : 0, 'S_DISPLAY_SEARCH' => (!$config['load_search']) ? 0 : (isset($auth) ? ($auth->acl_get('u_search') && $auth->acl_getf_global('f_search')) : 1), 'S_DISPLAY_PM' => ($config['allow_privmsg'] && !empty($user->data['is_registered']) && ($auth->acl_get('u_readpm') || $auth->acl_get('u_sendpm'))) ? true : false, 'S_DISPLAY_MEMBERLIST' => (isset($auth)) ? $auth->acl_get('u_viewprofile') : 0, 'S_NEW_PM' => ($s_privmsg_new) ? 1 : 0, 'S_REGISTER_ENABLED' => ($config['require_activation'] != USER_ACTIVATION_DISABLE) ? true : false, 'S_FORUM_ID' => $forum_id, 'S_TOPIC_ID' => $topic_id, 'S_LOGIN_ACTION' => ((!defined('ADMIN_START')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login') : append_sid("index.$phpEx", false, true, $user->session_id)), 'S_LOGIN_REDIRECT' => build_hidden_fields(array('redirect' => build_url())), 'S_ENABLE_FEEDS' => ($config['feed_enable']) ? true : false, 'S_ENABLE_FEEDS_OVERALL' => ($config['feed_overall']) ? true : false, 'S_ENABLE_FEEDS_FORUMS' => ($config['feed_overall_forums']) ? true : false, 'S_ENABLE_FEEDS_TOPICS' => ($config['feed_topics_new']) ? true : false, 'S_ENABLE_FEEDS_TOPICS_ACTIVE' => ($config['feed_topics_active']) ? true : false, 'S_ENABLE_FEEDS_NEWS' => ($s_feed_news) ? true : false, 'S_LOAD_UNREADS' => ($config['load_unreads_search'] && ($config['load_anon_lastread'] || $user->data['is_registered'])) ? true : false, 'S_SEARCH_HIDDEN_FIELDS' => build_hidden_fields($s_search_hidden_fields), 'T_THEME_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['theme_path']) . '/theme', 'T_TEMPLATE_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['template_path']) . '/template', 'T_SUPER_TEMPLATE_PATH' => (isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? "{$web_path}styles/" . rawurlencode($user->theme['template_inherit_path']) . '/template' : "{$web_path}styles/" . rawurlencode($user->theme['template_path']) . '/template', 'T_IMAGESET_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['imageset_path']) . '/imageset', 'T_IMAGESET_LANG_PATH' => "{$web_path}styles/" . rawurlencode($user->theme['imageset_path']) . '/imageset/' . $user->lang_name, 'T_IMAGES_PATH' => "{$web_path}images/", 'T_SMILIES_PATH' => "{$web_path}{$config['smilies_path']}/", 'T_AVATAR_PATH' => "{$web_path}{$config['avatar_path']}/", 'T_AVATAR_GALLERY_PATH' => "{$web_path}{$config['avatar_gallery_path']}/", 'T_ICONS_PATH' => "{$web_path}{$config['icons_path']}/", 'T_RANKS_PATH' => "{$web_path}{$config['ranks_path']}/", 'T_UPLOAD_PATH' => "{$web_path}{$config['upload_path']}/", 'T_STYLESHEET_LINK' => (!$user->theme['theme_storedb']) ? "{$web_path}styles/" . rawurlencode($user->theme['theme_path']) . '/theme/stylesheet.css' : append_sid("{$phpbb_root_path}style.$phpEx", 'id=' . $user->theme['style_id'] . '&lang=' . $user->lang_name), 'T_STYLESHEET_NAME' => $user->theme['theme_name'], 'T_THEME_NAME' => rawurlencode($user->theme['theme_path']), 'T_TEMPLATE_NAME' => rawurlencode($user->theme['template_path']), 'T_SUPER_TEMPLATE_NAME' => rawurlencode((isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? $user->theme['template_inherit_path'] : $user->theme['template_path']), 'T_IMAGESET_NAME' => rawurlencode($user->theme['imageset_path']), 'T_IMAGESET_LANG_NAME' => $user->data['user_lang'], 'T_IMAGES' => 'images', 'T_SMILIES' => $config['smilies_path'], 'T_AVATAR' => $config['avatar_path'], 'T_AVATAR_GALLERY' => $config['avatar_gallery_path'], 'T_ICONS' => $config['icons_path'], 'T_RANKS' => $config['ranks_path'], 'T_UPLOAD' => $config['upload_path'], 'SITE_LOGO_IMG' => $user->img('site_logo'), 'A_COOKIE_SETTINGS' => addslashes('; path=' . $config['cookie_path'] . ((!$config['cookie_domain'] || $config['cookie_domain'] == 'localhost' || $config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $config['cookie_domain']) . ((!$config['cookie_secure']) ? '' : '; secure')), ));

              Всё, что мне известно о PHP-меня научил 4X_Pro
              Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

              4X_Pro
              Основатель проекта
              Всего сообщений: 240
              Зарегистрирован: 22 сен 2014, 18:56
              Откуда: Москва, Перово
              Рейтинг пользователя: 6

              0
              25 августа 2016, 21:17. Редактировалось 2 раза, последний — 26 августа 2016, 01:56#17
                Теперь в плане целей более менее понятно.
                Насчет кириллицы — тут происходит вот что: htmlentities — это функция, которая экранирует кавычки в строке с именем для защиты от SQL-injection. По умолчанию она работает только с кодировкой windows-1252, а остальные символы режет, поэтому без указания кодировки на выходе получалась пустая строка, поэтому и "ничего не найдено". После того, как кодировку прописали явно, она стала кириллицу пропускать, но, видимо, либо что-то все-таки обрезает, либо экранирует не полностью. Почему так, сказать сложно, т.к. здесь нет текста SQL-запроса, который делается
                Можно попробовать следующие варианты:
                'U_SEARCH_WHO_QUOTED_ME'=> append_sid("{$phpbb_root_path}search.$phpEx", 'st=0&sk=t&sd=d&sr=posts&keywords=quote+' . htmlentities($user->data['username'],ENT_QUOTES | ENT_HTML5 | ENT_SUBSTITUTE,"UTF-8")),

                Еще вопрос: а не может ли быть так, что в скрипте предусмотрен вывод всех цитат в том случае, если новых не находится? И еще — правильно ли выставлены параметры sk=t и sd=d, может там что другое нужно указывать?

                Критикуя — предлагай, предлагая — обосновывай!
                4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

                ПнБ
                Начинающий
                Всего сообщений: 98
                Зарегистрирован: 5 мая 2015, 11:37
                Рейтинг пользователя: 0

                0
                26 августа 2016, 23:34#18
                  4X_Proнаписал(а):
                  Насчет кириллицы — тут происходит вот что: htmlentities — это функция, которая экранирует кавычки в строке с именем для защиты от SQL-injection. По умолчанию она работает только с кодировкой windows-1252, а остальные символы режет, поэтому без указания кодировки на выходе получалась пустая строка,

                  Где ты читаешь спецификацию к функциям? Я по этой функции с гугле ничего не нашёл.
                  4X_Proнаписал(а):
                  Можно попробовать следующие варианты:

                  Так, только чуть-чуть по другому
                  . htmlentities($user->data['username'],ENT_QUOTES | ENT_SUBSTITUTE,"UTF-8")),
                  С твоим примером там дебаг немножко ругался.
                  4X_Proнаписал(а):
                  Еще вопрос: а не может ли быть так, что в скрипте предусмотрен вывод всех цитат в том случае, если новых не находится?

                  Я это дополнение нашёл на другом форуме, английском. Там автор писала, что цитаты новые выводятся. Я пытался сделать что-то наподобие блока уведомлений, как в гугло-сервисах, но уже нашёл другое решение, а это-оформлю, и отдам народу в инет. Может кому пригодится.
                  P.S. Я хоть тебя и критикую, но кодингом я начал заниматься из-за IntB2. Уж очень я хотел что-то путёвое с неё сделать.

                  Всё, что мне известно о PHP-меня научил 4X_Pro
                  Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

                  ПнБ
                  Начинающий
                  Всего сообщений: 98
                  Зарегистрирован: 5 мая 2015, 11:37
                  Рейтинг пользователя: 0

                  0
                  26 августа 2016, 23:38#19
                    ПнБнаписал(а):
                    Я по этой функции с гугле ничего не нашёл.

                    Я по этой функции ничего особо не нашёл.
                    ПнБнаписал(а):
                    Уж очень я хотел что-то путёвое с неё сделать.

                    Уж очень я хотел что-то путёвое с него сделать.
                    Дай мне право редактировать сообщения. А то часто ошибаюсь, тороплюсь.

                    Всё, что мне известно о PHP-меня научил 4X_Pro
                    Опрос пользователей о деятельности _1_ http://intbpro.ru/flood/119/

                    4X_Pro
                    Основатель проекта
                    Всего сообщений: 240
                    Зарегистрирован: 22 сен 2014, 18:56
                    Откуда: Москва, Перово
                    Рейтинг пользователя: 6

                    0
                    30 августа 2016, 20:10#20
                      Право редактировать сообщения дал.
                      ПнБнаписал(а):
                      Где ты читаешь спецификацию к функциям? Я по этой функции с гугле ничего не нашёл.

                      Вообще, самый лучший вариант — это официальный сайт http://docs.php.net, в частности http://php.net/manual/ru/function.htmlentities.php Причем полезно не только читать описания самих функций, но и комментарии внизу, там немало полезной информации бывает.

                      Критикуя — предлагай, предлагая — обосновывай!
                      4xpro.ru — мой личный сайт-мультиблог на Intellect Board.

                      Страницы:
                      Распечатать

                      У вас нет прав для отправки сообщений в эту тему.

                      0: Контрольная точка "Конец инициализации". Время выполнения: 0.001. Запросов: 8, время запроса: 0.001 (48.63)%. Памяти использовано: 522064 байтов

                      0: Контрольная точка "Фиксация действия пользователя выполнена". Время выполнения: 0.002. Запросов: 10, время запроса: 0.001 (53.77)%. Памяти использовано: 522392 байтов

                      0: Контрольная точка "Основное действие выполнено". Время выполнения: 0.007. Запросов: 17, время запроса: 0.003 (41.44)%. Памяти использовано: 763032 байтов

                      0: Контрольная точка "Вспомогательные действия выполнены". Время выполнения: 0.007. Запросов: 21, время запроса: 0.003 (42.04)%. Памяти использовано: 778704 байтов

                      0: Контрольная точка "После срабатывания шаблонизатора.". Время выполнения: 0.013. Памяти использовано: 1080840 байтов