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

Вопросы по PHP

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

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

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

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

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

0
#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
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

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

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

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

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

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

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

0
#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.

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

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

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

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

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

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

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

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

0
#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.

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

0
#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
Основатель проекта
Всего сообщений: 401
Зарегистрирован: 22 сент. 2014 г., 18:56
Откуда: Москва, Перово
Рейтинг пользователя: 15

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

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

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

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

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

Следующие сообщения >>>
Страницы:
Распечатать

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