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

Вопросы по PHP

Пользователю _1_ в этой теме не оффтопить

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

0
26 сентября 2016, 15:30#21
    Не очень понял... Если они сразу в дистрибутив с CMS будут включены, то да, без проблем. Если скачивать автоматически, то тоже можно сделать (при условии, что composer установлен на сервере или тупо организовать скачивание по списку URL в инсталляторе), но на мой взгляд, это лишнее усложненение проекта.

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

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

    0
    26 сентября 2016, 16:05#22
      4X_Proнаписал(а):
      Если они сразу в дистрибутив с CMS будут включены, то да, без проблем.

      Композеру нужно Patch прописывать, для этого надо быть root-ом на сервере, а скрипт в папке сервера таких прав (прописывать) не имеет. Или я ошибаюсь?
      4X_Proнаписал(а):
      Если скачивать автоматически, то тоже можно сделать (при условии, что composer установлен на сервере

      Вот именно-если установлен.
      4X_Proнаписал(а):
      или тупо организовать скачивание по списку URL в инсталляторе),

      Думаю, без patch-это нереализуемо.
      4X_Proнаписал(а):
      но на мой взгляд, это лишнее усложненение проекта.

      Я хотел бы максимально "опереть" работу скрипта на модуль PHP, вызвать и использовать практически все его библиотеки, и подгрузить неимеющиеся, если нужно будет, вот и кумекаю, как бы это сделать.

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

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

      0
      27 сентября 2016, 14:42#23
        Самый простой вариант — это включать все необходимые библиотеки в архив с дистрибутивом скрипта сразу, и подключать их с помощью require/require_once, без всяких автоматических class loader. Тупо, примитивно, зато надежно и работать будет всегда, и никакой composer вообще не нужен.

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

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

        0
        30 сентября 2016, 13:50. Редактировалось 1 раз, последний — 30 сентября 2016, 13:52#24
          Понятно. А вот по сессиям. Зачем гостю сессия? Почему она даётся всем-и пользователям и гостям? Вернее, пользователю понятно, зачем даётся, а вот гостю...

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

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

          0
          30 сентября 2016, 15:53#25
            Иногда бывает нужно сохранить какие-то параметры и для незарегистрированных пользователей. Например, в Интернет-магазине это список товаров в корзине, в IntB 3.x туда сохраняются настройки отображения раздела (сортировка, число страниц), если пользователь поменяет их по сравнению с теми, что стоят по умолчанию.
            Но вообще, хорошей практикой является создавать сессию для гостей только тогда, когда в ней возникает реальная необходимость. (Иначе при прохождении поискового робота создается куча файлов сессий, что может вызвать падение производительности, в 2.x, кстати, это была одна из основных причин тормозов).
            То есть в начале кода вместо простого session_start() делать проверку такого вида:
            session_name('my_php_sid');
            if ($_REQUEST['my_php_sid']) session_start(); // загружаем данные сессии, если пользователь передал ее ID в явном виде в параметре
            // тут идет выполняется какой-то код
            // а тут возникает явная необходимость в сессии, например, пользователь залогинился или зарегистрировался
            if (session_id()==false) session_start(); // проверка на session_id нужна на случай, если сессия уже была создана в начале скрипта
            // и тут пишем данные в сессию


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

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

            0
            30 сентября 2016, 17:57. Редактировалось 2 раза, последний — 30 сентября 2016, 18:05#26
                   4X_Proнаписал(а):
              То есть в начале кода вместо простого session_start() делать проверку такого вида:

              Наводит на мысль, что нужно бы сделать графическую проверку типа "я не робот"(галочка), при наличии в юзер агенте слов MSiE и Faerfox, как признак, косвенно указывающий на браузер TOR. В дополнение к твоей проверке, плюс дописать условием, при отключенном javascript, редиректиреть-тех, у кого ТОР-на страницу 404,  тех у кого отключен джаваскрипт (боты)-на лёгкую версию сайта (без ссылок на профиль и тд.). И тем и другим сильно урезать права отображения сайта, не оставляя никаких полей для ввода, с всплывающим сообщением, зайти с другого браузера.

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

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

              0
              5 февраля 2017, 18:16. Редактировалось 1 раз, последний — 5 февраля 2017, 18:18#27
                4X_Pro,подскажи, хочу сделать своего паука (бота), который бы парсил определённые страницы в интернете, и выдергивал из них текст. Чтоб руководствовался не html-тегами, а исключительно кириллистический текст копировал.
                Например, я задам найти на странице слово "Москва"
                И вот, заходит бот на страницу, и видит 3 кириллистических строки:
                1. Сегодня на Арбате наблюдались большие пробки.
                2. На Москва-реке сошёл лёд.
                3. Ожидается солнечная, ясная погода.
                Как выдрать полностью вторую строку? Какая функция для этого нужна? И ещё вопрос-сколько символов, или кб, может "запомнить" одна переменная?

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

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

                0
                9 февраля 2017, 22:40#28
                  Такие вещи делаются с помощью регулярных выражений, т.е. нужно смотреть в направлении функций preg_match, preg_match_all. Правда, регулярные выражения — это вообще большая тема, в которой можно чуть ли не всю жизнь совершенствоваться...
                  Получится что-то вроде такого:
                  $count = preg_match_all('|([а-яА-Я,\.!\?:;])+|us',$data,$matches); for ($i=0; $<$count; $i++) { if (strpos($matches[1][$i],'Москва')!==false) { // делаем что-то там. } }
                  Конструкция [а-яА-Я,\.!\?:;] означает "искать символы от а до я, от А до Я, а также запятую, точку и т.д. (если этого не указать, любой знак препинания будет считаться концом найденной строки). Плюс после нее — искать один или более символов. Скобки вокруг конструкции — запомнить найденное. Найденное запоминается в переменную $matches, которая является массивом, а номер элемента в массиве — это порядковый номер скобок (у нас скобки одни, поэтому номер 1, но в принципе, бывают регулярные выражения с несколькими скобками).
                  Разобранная строка полностью будет доступна в переменной $matches[1][$i] внутри этого цикла.
                  Длина переменной-строки в PHP достаточно велика (по-моему, то ли 2, то ли 4 Гб, точно не помню). Но если скрипт выполняется на Web-сервере, а не из командной строки, там еще есть ограничение по памяти на скрипт в целом, оно обычно бывает от 32 до 256 Мб.

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

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

                  0
                  10 февраля 2017, 08:02#29
                    4X_Proнаписал(а):
                    Скобки вокруг конструкции — запомнить найденное.

                    Спасибо, не знал такого, долго б мозги ломал.
                    4X_Proнаписал(а):
                    Длина переменной-строки в PHP достаточно велика (по-моему, то ли 2, то ли 4 Гб, точно не помню). Но если скрипт выполняется на Web-сервере, а не из командной строки, там еще есть ограничение по памяти на скрипт в целом, оно обычно бывает от 32 до 256 Мб.

                    Спасибо, мне это подходит, тем более планирую несколько раз перезаписывать переменную в ходе исполнения скрипта.
                    4X_Proнаписал(а):
                    Конструкция [а-яА-Я,\.!\?:;] означает "искать символы от а до я, от А до Я, а также запятую, точку и т.д. (если этого не указать, любой знак препинания будет считаться концом найденной строки). Плюс после нее — искать один или более символов.

                    Вот тут у меня возникло пару вопросов:
                    -Как быть, если автор текста не поставит точку в конце строки? Просто напишет вышеупомянутый пример как стих, без точек в конце?
                    -Что делает переменная data, обьявленная в скрипте лиш единожды? Хотя, подозреваю, что такой синтакс записи, сейчас пишу с телефона, позже гляну на офф. сайте.
                    -Может ли кто-нибудь жаловаться, могут ли быть санкции, если мой бот будет "стартовать" свою работу из папки моего домена, моего сайта, так как других площадок (серверов)-не имею? Тоесть это будет паук, пасущийся на чужих сайтах, заход которого будет виден даже из Яндекс-метрики, будет видно, что он пришел с моего домена и сканирует...

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

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

                    0
                    10 февраля 2017, 12:20#30
                      ПнБнаписал(а):
                      -Как быть, если автор текста не поставит точку в конце строки? Просто напишет вышеупомянутый пример как стих, без точек в конце?

                      Вообще, если символы указаны в квадратных скобках, это означает, что они могут идти в любом порядке. Вот если написать '|([а-яА-Я,!\?:;])+\.|us' это будет означать, что точка должна быть после кириллических символов или знаков препинания, и если ее там не будет, то регулярное выражение не сработает (т.е. в $matches данный кусок не запомнится и не обработается).
                      ПнБнаписал(а):
                      Что делает переменная data, обьявленная в скрипте лиш единожды?

                      Предполагается, что в этой переменной лежит текст, который мы обрабатываем.
                      ПнБнаписал(а):
                      -Может ли кто-нибудь жаловаться, могут ли быть санкции, если мой бот будет "стартовать" свою работу из папки моего домена, моего сайта, так как других площадок (серверов)-не имею? Тоесть это будет паук, пасущийся на чужих сайтах, заход которого будет виден даже из Яндекс-метрики, будет видно, что он пришел с моего домена и сканирует...

                      Зависит от поведения робота. Если он не будет делать по несколько десятков параллельных запросов, которые будут вызывать тормоза сервера, и будет соблюдать ограничения, прописанные в robots.txt, то формальных поводов для жалоб нет. Максимум что могут сделать — это запретить доступ к их сайту с вашего IP-адреса через .htaccess или firewall (я так кучу китайских ботов у себя перебанил на Типаче).

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

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

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

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

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

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

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

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