Задать вопрос
Ответы пользователя по тегу PHP
  • Чем плохо написание кода функциями?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Зачем нужен ООП?
    Кратко зачем ооп вместо функций:
    1) Снижение сложности кода(да, звучит странно, но на самом деле именно так и есть - сложные вещи пишутся 1 раз, а далее вы пользуетесь практически предложениями естественного языка и описываем реально существующие манипуляции с реальными объектами, например $user->getName(), $image->rotateLeft()...)
    2) Инкапсуляция - все что делает объект изолированно внутри одного инстанса, вы работаете по сути с отображением реальных объектов в цифровой мир(+ этот объект может быть сколь угодно сложным внутри, наружу он смотрит простыми методами для возможности операций над ним).
    3) Снижение затрат памяти - классы подгружаются только в необходимом объеме и в нужно месте, в процедурном подходе все функции грузятся сразу.
    4) Локализация кода - всегда логика одной сущности доступна в одном месте, не размазана по функциям и коду. Это такой нехилый бонус к инкапсуляции, и при рефакторинге вам не надо переписывать кучу кода, если объект был изначально правильно построен, максимум поменять немного логику внутренней обработки данных.

    Про работу в команде я вообще молчу, модульность разработки позволяет много плюшек, от непересечения кода, до приоритетов конкретных задач под разработчика с большим опытом в каком-то конкретном направлении.

    Я понимаю что это плохо и не правильно, но оно работает, хотел бы попросить у Вас совета, насколько это плохо, и можно ли использовать данный подход?
    Почему нельзя?
    Оно работает?
    Оно решает проблему бизнеса на сейчас?
    Бизнес устраивает решение которое "будет работать только здесь и сейчас, а стоимость погашения технического долга и расширения будет равна написанию приложения с нуля, но это будет потом"?
    Если все ответы - "да" значит все не так уж плохо на сегодняшний день, и билет на само в порядке, по крайней мере пока вы работаете там.
    Но я бы серьезно задумался о будущем в плане развития.
    Ответ написан
    Комментировать
  • Как найти в базе похожие записи?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    разовая, когда из импорта приходят данные,
    Тогда достаточно банально,
    селект где pid = 0 и width = 0,
    затем уже в пыхе перебор строк,
    експлодим name пробелом,
    выбираем все строки где name теперь массив длинной 1(это будут корни) в отдельный массив
    и ключами в этом массиве делаем name.
    Еще один раз перебираем массив строк с проверкой или массив длинной более 1 в name,
    после чего из name[1] вытаскиваем чистую цифру(убираем скобки), записываем в width,
    из name[0] получаем ключ к массиву корней, из которого достаем id, и кладем в pid.
    Всё, строчки упдэйтнуть в базу.

    Вполне возможно где-то можно улучшить алгоритм, но "в лоб" - это самый очевидный вариант.
    Ответ написан
    2 комментария
  • Как исправить ошибку iconv?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - зачем конвертить православный UTF-8 в богомерзкий Windows-1251 в 2019 году?
    Во вторых - это не ошибка, а нотис
    В третьих - в UTF-8 овердофига символов которые не влазят в 1251, что в итоге и дает такое предупреждение. Если просто вас раздражает нотис который агрится на некий непонятный символ пишите iconv('UTF-8', 'Windows-1251//IGNORE', $line)
    Ответ написан
    2 комментария
  • Как сделать бонус каждые 24 часа?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если пользователь зарегистрирован, заводим в бд поле datetime получения бонуса, при получении заносим текущую дату-время. При следующем нажатии проверяем прошли ли сутки и посылаем или даем бонус.
    Ответ написан
  • Как сделать постраничную навигацию после поиска через ajax?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    вводим страну(в базе есть англия, германия, франция, испания, италия) и результатом будут города, всё это дело работает через ajax
    ниче не ясно, дохрена кода, нихрена не понятно. Возвращаете вы что? Список городов принадлежащих стране? Листаете постранично как? Через линки или тоже аяксом?
    Ответ написан
  • Как прочесть файлик при помощи PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если формат верный, и это действительно XML - new SimpleXMLElement($data);
    Ответ написан
    2 комментария
  • Почему не работает субдомен, переброс на главную страницу?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    TL;DR
    теги лишние уберите.
    1) Расставьте вардамп и ексит в ключевых точках кода, посмотрите как идет выполнение и где что срабатывает не так
    2) Откройте в хроме панель нетворк и посмотрите какие заголовки приходят на переадресацию.
    3) Выключите/включите директивы переадресации в хтаксесе.

    Кароче классический дебаг проведите.
    Ответ написан
    Комментировать
  • Как на Mac Os сделать так, чтобы я мог разрабатывать в разных папках и эти папки относились к разным хостам?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    поднять докер - самый простой вариант, или потрахаться с настройками родного апача - сделать виртуалхосты и прописать в хостс их имена.
    Ответ написан
  • Что мешает мне загрузить картинку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    логи, первым делом логи
    так как опыта у вас мало - включите вывод ошибок в браузер
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

    для работы с файлами на сервере ВСЕГДА используются полные пути до папок, от корня сервера.
    Ответ написан
    1 комментарий
  • PHP, регистрация, проверка полей?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) нет смысла хэшить пароли для сравнения, тем более не нужно использовать hash для шифрования паролей, есть специальные функции для этого.
    2) Для логина используются проверки регулярками, в соответствии с вашими условиями(длинна, символы, латиница, тире...) + наличие такого логина в базе(на занятость)
    3) нормальные сервисы требуют емэйл для подтверждения регистрации.
    4) как верно заметил BD_ l3ftoverZ!, правильнее создать вначале пустой массив ошибок, а затем его в конце проверить, если он пуст - все ок, если есть ошибки - передать в представление и вывести в форму регистрации.
    Ответ написан
    1 комментарий
  • Генерация json с вложенными объектами?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    создаете пустой массив А
    внутри цикла :
    создаете пустой массив Б
    вносите в массив Б пары ключ=>значение ваших данных
    присваиваете массив Б как новое значение в А
    после цикла можете кодировать А в json, получите то что хотели.
    Ответ написан
    Комментировать
  • Как подружить пагинацию и фильтрацию?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    после получения из гет номера страницы, ансетим пэйдж в гет, после чего в пэйджинге прибавляем
    <a class="page" href="?page=2&<?=http_build_query($_GET)?>">2</a>
    Ответ написан
    9 комментариев
  • Как по ссылке понять, что это сайт интернет-магазин?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Есть список из тысяч сайтов. Как создать список только из тех, которые являются магазинами?
    Сходу вижу несколько решений, но не зная ни вашего уровня ни целей постановки такой задачи сложно что-то порекомендовать.
    Как самый простой вариант - cURL + поиск регулярками "в лоб" по ключевым словам. Список ключевых слов тоже не совсем тривиальная задача, + и на обычных сайтах они могут встречаться. Короче, задача не на 5 минут, удачи в реализации )
    Ответ написан
    Комментировать
  • Header PHP не работает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - header может срабатывать только до вывода чего-либо "в браузер", то есть после всех ваших вышестоящих хтмл тегов хеадер просто не будет работать. Вынесете ваш код проверки в начало скрипта, до вывода хтмл, и будет вам счастье.
    Во вторых - код скринами вставлять не надо, это запрещено правилами ресурса, для этого есть тег кода.
    Ну и в третьих - включите вывод ошибок и варнингов, для девелоперского окружения это обязательный пункт. Если бы ошибки не подавлялись, вы бы уже увидели сообщение о невозможности редиректа, так как заголовки уже отправлены.
    Ответ написан
    2 комментария
  • Как получить значение поля image:width?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    С официальной странички:
    $graph = OpenGraph::fetch('http://www.rottentomatoes.com/m/10011268-oceans/');
    var_dump($graph->keys());
    var_dump($graph->schema);
    
    foreach ($graph as $key => $value) {
    	echo "$key => $value";
    }

    Если ничего не работает - посмотрите наконец документацию!
    Ответ написан
    Комментировать
  • Как записать ID пользователя из $_SESSION в таблицу БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых похожий вопрос вы уже задавали и вам на него ответили,
    во вторых перестаньте говнокодить и разберитесь уже один раз со структурами базы данных, типами данных и модификаторами.
    Кроме того, как вам уже писали - используйте встроенные механизмы бобов, а не городите хрень в стиле 90х годов.

    Проверьте типы данных которые у вас в полях и которые у вас в переменных.

    Все еще не понимаю нахуа вам разделять дату и время.

    UPD: если уж пользуетесь кривым подходом - то хоть с умом, проверьте что вы там выполняете...
    $sql = "INSERT INTO tasks (`task`, `date`, `time`, `users_id`) VALUES ('$task', '$date', '$time', $users_id)";
    var_dump($sql);
    R::exec($sql);


    PS: strip_tags нифига не защищает от скуэль инжекций, которые у вас там можно в полный рост...
    Ответ написан
    Комментировать
  • В чем ошибка в запросе file_get_contents?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    'content' => http_build_query(array(
                            'url' => urlencode('http://rulib.info/uploads/11_05_2013/view/201209/oboik.ru_44612.jpg'),
                            'path' => urlencode('app:/1.jpg')
                        ))
    Оно?

    UPD: о, у вас же вроде json должен быть, тогда заменить
    'content' => json_encode(array(
                            'url' => 'http://rulib.info/uploads/11_05_2013/view/201209/oboik.ru_44612.jpg',
                            'path' => app:/1.jpg'
                        ))
    Ответ написан
    5 комментариев
  • .htaccess изменение url как сделать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Любой фреймворк современный нормально это реализует, читайте по теме mvc, routing, mod_rewrite. Если описывать все что вы хотите в вопросе -как раз выйдет дока по этим понятиям.
    Ответ написан
    Комментировать
  • Как экранирование кавычки html атрибутов в json?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    json_encode($value); уже создает строку с экранированными кавычками. А ошибка у вас вроде к ним не относится.
    Ответ написан
    3 комментария
  • Как найти и заменить вхождение с помощью preg_replace?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer