• Какой аналог PHP в JavaScript (не знаю как называется)?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Альтернативный синтаксис в php имеет смысл только при смешении php и не-php кода в одном файле. В случае в javascript это не так работает - php сразу влияет на структуру страницы, еще на этапе подготовки и отдаче кода браузеру, а js влияет на структуру dom-дерева (т.е. когда браузер сможет превращать код на странице в то, с чем js может работать). Самое близкий ответ на вопрос - это шаблонизаторы на js с похожими конструкциями, но это уже "надстройка", отдельные пакеты, а не конструкция языка
    Ответ написан
    Комментировать
  • Как правильно прикрепить вложенный файл?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Три простых шага для решения данной проблемы:

    1. Посмотреть на календарь и уточнить, какой сейчас век на дворе.
    2. Аккуратно выделить этот код, и нажать клавишу Del
    3. Скачать phpmailer
    4. Забыть все эти кустарные ковыряния как страшный сон.

    В итоге код должен получиться примерно таким:

    require 'PHPMailerAutoload.php';
        $mail = new PHPMailer;
        $mail->setFrom('from@example.com', 'First Last');
        $mail->addAddress('whoto@example.com', 'John Doe');
        $mail->Subject = 'PHPMailer file sender';
        $mail->msgHTML("My message body");
            // Attach uploaded files
        $mail->addAttachment($filename1);
        $mail->addAttachment($filename2);
        $mail->send();

    следует понимать, что отправка почты - это не просто копирование в свой скрипт каких-то определенных сочетаний символов, которые случайно сработали в прошлом веке у автора какой-либо допотопной статьи. Это гораздо более сложный процесс, который включает множество нюансов. И поэтому отправку почты надо не лепить вручную на ходу из навоза и палок, а доверить проверенному и отлаженному решению.
    Ответ написан
    1 комментарий
  • Как взять последние 5 строк у которых category равен 1 в Mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В SQL понятия "первые" и "последние" строки появляются только после того, как вы явно зададите порядок сортировки. Для того, чтобы последние стали первыми достаточно этот порядок поменять (ASC/DESC). Ну а взять первые пять строк - это вообще не проблема.
    Ответ написан
    Комментировать
  • Как "защитить" лендинг от скачивания html-кода всей страницы?

    Aetae
    @Aetae
    Тлен
    Никак.
    Ответ написан
    Комментировать
  • Где начинающему разработчику подглядеть примеры неговнокода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На самом деле надо качать Лару а ещё лучше - Симфони.
    Только не тупо зазубривать, а пытаться понять, почему там так сделано. Это и будет теми самыми примерами.
    И да - не Лару точно. Потому что там очень много магии которая полезна тем кто понимает как она работает и очень вредна для тех кто учится.

    И вот изучая нормальный фреймворк ты как раз и будешь учиться примерам хорошего кода.
    Начать можно с этой хрестоматийной статьи https://symfony.ru/doc/current/introduction/from_f...
    А потом переключаться на https://github.com/symfony/demo

    Честно говоря, я не очень понимаю, что ты имеешь в виду под "знаниями чистого пыха".
    Чисты пых - это синтаксис, учится за две недели.
    А остальное - это уже программирование, общее для любых языков и фреймворков. Отладка, репортинг ошибок, профайлинг, оптимизация, структурирование кода, олгоритмы.

    И кстати я совсем забыл. У нас же есть гений в своем отечестве, Дмитрий Елисеев. На фоне бесчисленных неграмотных выскочек типа хаудихи или, прости господи, руселлера, это реально человек который знает, о чем говорит.
    И - что гораздо реже случается - умеет донести эти знания до аудитории.
    И насколько я понимаю, твой уровень уже должен позволять в принипе понимать, о чем он говорит.
    В общем начать можно отсюда, https://elisdn.ru/blog/113/psr7-framework-http
    и дальше остальные материалы.
    Ответ написан
    8 комментариев
  • Где начинающему разработчику подглядеть примеры неговнокода?

    Adamos
    @Adamos
    Практика. Нужен опыт решения конкретных задач средствами языка.
    Фреймворки, паттерны и прочая архитектура не может изучаться на пустом месте, все это нужно цеплять на опыт.
    Говнокод, который решает задачу, лучше, чем красивая архитектурка, списанная с учебника.
    Когда понимаешь, как можно решать - можешь оценить качество решений. Без этого понимания будешь смотреть, как баран, и изобретать карго-культы.
    Ответ написан
    1 комментарий
  • Почему файл PNG не проходит imagecreatefrompng?

    Adamos
    @Adamos
    imagejpeg($newImg, $path);
    imagecreatefrompng ХХХХХХХХХХХХХХХХХХХХХ.png' is not a valid PNG file.
    Ответ написан
    1 комментарий
  • Как сделать паузу в цикле на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    sleep(3) выполняется в каждой итерации, то есть никаких "остальные все сразу" не будет

    другое дело непонятно зачем спать три секунды когда надо спать одну треть секунды, то есть надо писать

    usleep(400000);
    Ответ написан
    1 комментарий
  • Зачем интерфейсы если есть трэйты?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос действительно философский.
    Интерфейс - это публичный контракт. Соглашение. "Данный класс обязается делать это и это, и если соглашение подписано, то всегда можно ожидать выполнение классом таких обязанностей". А как он это делает - это его личные половые трудности. То есть интерфейс - это такое министерство иностранных дел класса, отдел внешних сношений. Фасад, вывеска.

    Абстрактный класс и трейт - это министерство внутренних дел.
    Абстрактный класс - это внутренний контракт. Чертеж, прототип, по которому строится класс. Включает внутреннюю кухню, которую посторонним знать не обязательно.
    Трейт - просто повторное использование кода. Возможность нескольким классам использовать один и тот же код.
    Ответ написан
    2 комментария
  • Вопрос чувствительности LIKE MySQLi?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Так это не чувствительность это разные строки. Либо режте ее либо токенизируйте либо используйте fts engine для нечеткого поиска
    Ответ написан
    3 комментария
  • Как выдавать пустую страницу в PHP?

    @alexalexes
    Проблема такой защиты от DDOS на PHP в том, что атакующий пользователь все же успевает запустить скрипт на PHP, хоть и с минимальными ресурсами. Если у вас архитектура серверного приложения построена не на event loop (как правило, обычные сайты), то для каждого запущенного скрипта выделяется отдельный системный процесс - не самый экономный вариант работы PHP сервера.
    Поэтому, нерадивых пользователей лучше отшивать как можно раньше.
    Идентифицировать плохого пользователя вы можете и на PHP, а вот работу по его отсечению лучше доверить системе, которая стоит перед PHP сервером. Это может быть и Apache, и Nginx.
    Определяете пользователя и добавляете его в файл черного списка по IP, user agent или cookie, который будет обрабатывать настроенный Apache или Nginx.
    Лучше конечно, чтобы это был отдельный файрвол, еще лучше - на железке (но в условиях арендуемого хостинга такое маловероятно).
    Ответ написан
    Комментировать
  • Какой способ лучше защитит пароль?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    https://www.php.net/manual/ru/function.hash-pbkdf2.php
    Предостережение
    Метод PBKDF2 может быть использован для хеширования паролей в целях их хранения. Однако стоит помнить, что для этих целей гораздо лучше использовать password_hash() или crypt() с CRYPT_BLOWFISH.
    Ответ написан
    1 комментарий
  • Какой способ лучше защитит пароль?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Первый вариант, разумеется, вообще ни о чём.

    Есть три вектора атаки на пароли: перебор по радужным таблицам, брутфорс и подбор по словарю.
    От первого защищает соль, от второго алгоритм, от третьего сложность пароля.

    У нас здесь речь идет об алгоритме. То есть, о буртфорсе. Что такое брутфорс? Это тупо подстановка случайных сочетаний символов по очереди и проверка, не совпал ли хэш. Чем быстрее вычисляется хэш, тем быстрее раскалывается пароль.
    ПОЭТОМУ, ключевой характеристикой хэша для паролей является сложность его вычисления.
    Твой ша-пицот-двенадцать выплоненный стопицот раз - это для современной техники как воробей чихнул. А для будущей и подавно.
    Поэтому умные люди придумали алгоритмы которые во-первых вычисляют каждый хэш гораздо медленнее, а во вторых адаптируются под растующую скорость процессоров, и говорят тебе когда пора уже усложнять алгоритм. Именно этим и занимаются встроенные функции, и поэтому ты должен использовать именно их.
    Ответ написан
    Комментировать
  • Php+Mysql. Минимизация кл-во запросов, для подсчета просмотров, как?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    А зачем делать 20 UPDATE запросов, если можно сделать 1 запрос? :)

    Просто указать все ID списком:
    UPDATE posts SET views = views + 1 WHERE id IN (1,2,3,5)
    Ответ написан
    2 комментария
  • Как избавится от двойной отправки формы, методом POST?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    1. отправлять форму через XHR / fetch (ajax post).
    2. редирект после отправки формы - типовое и надёжное решение
    3. можно сохранять в сессию последнюю отправленную форму. и если видим дубликат данных то игнорировать этот post-запрос.

    Если редирект "не помогает" то прошу в студию минимальный пример кода где у вас форма + страница которая после получения формы делает редирект, а мы проверим правда ли "не помогает".
    Ответ написан
    3 комментария
  • Есть ли ограничения на количество файлов и папок на php-хостингах?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    БД на файлах называется SQLite и не надо изобретать ничего другого
    расширение для работы с sqlite встроено в РНР начиная ещё с версии 5.3, кажется
    почитать про inodes
    Ответ написан
    Комментировать
  • Наставничество для создания своего сайта: неужели только платные варианты?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Я бы на вашем месте поискал наставника самостоятельно. Здесь, на behance, в телеграм-чатах найдите несколько человек, чьи работы вам действительно нравятся и того уровня, которого вы хотите добиться и просто напишите им просьбу о помощи

    Да, кто-то вам ответит, что его/ее консультации платные, но в основном людям нравится, когда их считают экспертами и ценят мнение, поэтому, я уверен, что большинство вам поможет советом совершенно бесплатно

    Крайне желательно иметь сформулированный список вопросов, а на дизайн и фронтенд лучше искать разных людей
    Ответ написан
    Комментировать
  • Как поставить перенос строки в функции mail?

    @alexalexes
    https://www.php.net/manual/ru/function.mail.php
    Читайте документацию:
    Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.
    Ответ написан
    Комментировать
  • Как поставить перенос строки в функции mail?

    @Giperoglif
    PHP_EOL
    Ответ написан
    Комментировать
  • Что это за ошибка (blocked by CORS policy)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    сайт.ру и www.сайт.ру - это два разных сайта. Естественно, что запросы с одного к ресурсам другого будут работать только при соблюдении политики CORS.
    Ответ написан
    4 комментария