Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу PHP
  • Какая концепция работы админки сайта на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В принятом ответе зачем-то две таблицы, что не имеет вообще никакого смысла.

    В принципе, алгоритм совершенно банальный, ничем не отличается от админки для юзеров, новостей или товаров в магазине. Тупо одна форма, одна таблица. В форме три поля - заголовок, анонс, текст.
    Для показа в ленте выбираем ид, заголовок, анонс
    Для показа полного текста выбираем заголовок и текст.

    Ну то есть абсолютно ничего нового или сложного.
    Ответ написан
    5 комментариев
  • Поиск по началу слова sql и php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если "дохнет" значит "работает медленно", то поставить индекс.
    Если дохнет значит перестает работать но ошибок не выдает - надо включить вывод ошибок, прочесть и исправить.
    Ответ написан
  • Как исправить ошибку PHP PDO?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну если "в переводя" и так понятно, то какой смысл еще и на тостер идти?
    Ответ написан
    9 комментариев
  • Правильно ли делать такую структуру проекта?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет, неправильно.

    - get_functions.php ужасное название, винегрет внутри. все эти функции разложить по своим модулям.
    - inc/main_tpl.php подключается слишком рано. сначала надо закончить работу с данными, а только потом начинать вывод. Это азбука.
    - 'modules/' . $_GET['section'] . '/index.php' инклюдится слишком поздно. модуль надо инклюдить ДО начала вывода. При этом основной шаблон должен вызываться не в индексе, а в модуле. модуль решает, бует ли он что-то выводить, если да - то присваивает переменной имя своего шаблона и вызывает основной шаблон, который в себе инклюдит шаблон модуля. Подробнее: phpfaq.ru/tech/tpl
    - в include 'modules/' . $_GET['section'] . '/index.php' тебе напихают такого, что на ежика станешь похож. имя модуля надо обязательно валидировать. в идеале по белому списку.

    В остальном нормально, только обычно все кроме индекса кладут выше корня.
    Ответ написан
    9 комментариев
  • Я разучился понимать работу кода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень смешное предложение про md5 и длину.
    Направление в принципе верное, но вот что делать с полученным результатом - вот тут мысль наших добестных похапешников останавливается.

    А теперь внимание - правильный ответ
    urlencode() - самая удобная отладчная функция. Читаемые символыв она оставит как есть, а непечатные - закодирует в удобный формат.
    Ответ написан
  • Можно ли заполнить форму на сайте при помощи ЯП?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Следующий вопрос автора: как обойти капчу.

    Из-за таких вот заполнятелей сейчас уже практически нереально пользоваться гуглом или яндексом в режиме инкогнито - задалбывает капчей, причем такой, которую хрен прочтешь.
    Ответ написан
    2 комментария
  • Phpmailer или сторонний сервис по отправке email?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Мужчина в соседнем ответе не совсем в теме.

    Хотя, конечно, вопрос и сам по себе дурацкий.
    Phpmailer - это не почтовый сервер. Это всего лишь mail()-переросток. Доставкой писем не знаимается. И "поставить через композер" проблему доставки писем не решит - все равно нужен будет сервер.
    То есть выбор не между "phpmaier" vs transactional email service, а "мой аккаунт на гмейле" vs mailgun.

    И тут уже надо думать - какой исходящий емейл мы хотим использовать, как гмейл будет правляться с нашими объемами, как быть с попаданием в спамоловки и пр. И нормальное "стороннее АПИ" (чтобы это выражение не значило) окажется в разы предпочтительнее
    Ответ написан
    1 комментарий
  • Почему PHP теряет популярность?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не знаю, не знаю. Судя по количеству тупых вопросов на Тостере, стать менее популярным пыху совсем не помешало бы, да только не получается никак.
    Ответ написан
    Комментировать
  • Как сделана функция var_dump?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я так думаю что этот вопрос, который автор не осилил сформулировать - он про рекурсию.

    То есть вопрос не про то чтобы вывести информацию о типе скалярной переменной и ее значение, а как обходить сложные структуры - массивы и - главное - вложенные массивы и объекты.
    То есть вопрос про циклы и рекурсию. Про которую автор, теперь зная нужное слово, может посмотреть в интернете, тем более что на том же тостере примерно чуть меньше миллиона ответов, которые разжевывают тему.
    Ответ написан
    Комментировать
  • Нужно ли комментировать код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нужно различать технические комментарии, которые по сути являются надстройкой над языком, и пояснения к коду.
    В вопросе все свалено в кучу, и ответ от тов. куратора получился таким же. В итоге все говорят о разном и никогда не придут к единому мнению (причина 99% споров в интернете).

    Я так понимаю, о технических комментариях АКА phpdoc (о которых говорит тов. куратор) речь сейчас не идет. Если идет, то автор приглашается объяснить, чем они его не устраивают.

    Если же автор говорит о пояснениях к коду, то позиция совершенно правильная, такой подход называется самодокументируемый код, впервые упомянутый великим Фредериком Бруксом еще в 60-х годах прошлого века.
    Ответ написан
    2 комментария
  • В PHP канонично сначала проверить, потом сделать или попробовать и обработать ошибку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень хороший вопрос и тема, в которой самое чудовищное количество самых дремучих северий на единицу кода.

    В общем случае, по умолчанию, никаких проверок и траев с кетчами быть не должно.

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

    Пример: В обоих приведенных выше случаях мы имеем масло масляное: попытка подменить пхп в выборосе ошибки. Вопрос - зачем? Если файл не найден, то РНР сам прекрасно сообщит нам об ошибке, причем в подробностях, и скажет в чем конкретно заключается проблема. А по строчке "file not found" иди гадай - путь ли кривой или в имени файла опечатка, или вообще пустоту передали.

    Любые проверки надо делать только тогда, когда есть осмысленный сценарий их обработки.

    И обсуждать выше приведенные примеры имеет смысл только если автор вопроса предоставит такой сценарий. тупое error: file not found таким сценарием не является. Так что в общем случае оставляем код в покое и не устраиваем никакого карго культа из перехвата ошибок.

    Если чисто выбирать между двумя действиями (проверка и чтение) и одним (сразу читаем, потом ловим исключение),

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

    Но повторюсь, если нет никакого осмысленного сценария обработки ошибки, то ловить её не надо.
    Ответ написан
    6 комментариев
  • Почему не понимает подключение require_once?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ради бога, не лезьте вы со своим корявым RedBean и require_once в Laravel!

    Либо колупайтесь дальше в своем похапе спагетти, либо, если уж используете современный фреймворк, используйте его собственные, нормалmные инструменты. Для работы с БД в Ларавеле служит Eloquent, который примерно в 100500 раз умнее этой протухшей фасоли
    Ответ написан
    Комментировать
  • Почему не отправляются данные post-формы при переносе на хостинг?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    form action="http://'.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"].'#spec"
    Замените на <form action=""
    Ответ написан
    Комментировать
  • Снова про кеширование запросов к БД, как сделать?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Запоминаем второе главное правило программирования: если работает медленно, то не надо ничего кэшировать. Надо делать так, чтобы все работало быстро без всякого кэша.
    Ответ написан
    Комментировать
  • Функция на php для обрезки теста?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сейчас я расскажу тебе про один секретный сайт.
    Лохи про него не знают, но по я тебе по секрету расскажу.
    Сайт называется google.com.

    Там, короче такая тема, пишешь, какой тебе код нужен и оно тебе выдает ссылки на кучу сайтов. Реально, без подставы. Пишешь " функция для обрезки текста в анонсе" и сразу куча сайтов. Я, когда попробовал сам обалдел.

    Только, главное, никому больше про этот сайт не рассказывай.
    Если все будут про него знать, то роскомнадзор его точно закроет.
    Ответ написан
    7 комментариев
  • Переводчик с ограниченным словарем?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос из серии "тетенька, дайте попить, а то так есть хочется, что аж переночевать негде".

    "Простых" переводчиков не бывает.
    Чтобы описать правило "перед существительным в ед числе ставится une, un" надо определить

    - что слово является существительным
    - употреблено в единственном числе

    Ты все еще называешь свой переводчик "простым"?
    Ответ написан
    Комментировать
  • Как обрезать строку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $last = pathinfo ('web.pages.page', PATHINFO_EXTENSION);
    Ответ написан
    Комментировать
  • Универсальный метод обновления данных в БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Подход нормальный, но в описании класса должны быть жетско прописаны имена таблицы и всех полей.
    Имена полей в простейшем случае случае тупо засунуть в массив.

    После этого ты можешь использовать их для формирования динамических запросов.
    Например так: https://phpdelusions.net/pdo_examples/dynamical_update

    $allowed - это твой список полей.
    $_POST лучше не использовать напрямую, а передавать копию в метод, но принцип тот же - берем из поста только заполненные поля и добавляем в запрос.

    Метод Update будет у класса-предка, от которого будут наследоваться классы дл работы с отдельными сущностями, такими как article. Таким образом в классе Article у тебя вообще не будет метода Update, но при этом ты будешь писать

    $article->update($_POST);

    и все будет прекрасно обновляться.
    Ответ написан
    1 комментарий
  • Почему не устанавливается статус запроса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    хтаксесс по каким-то причинам (я уже не помню по каким) не ловит 500 ошибку в ErrorDocument
    Ответ написан
    Комментировать