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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    НИКОГДА
    НЕ ХРАНИ В БАЗЕ ДАННЫХ
    РНР КОД
    Ответ написан
    2 комментария
  • Самый оптимальный вариант для серверной части?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На вордпрессе ты сделаешь пусть 30% своих хотелок, но они хотя бы будут работать.
    На РНР ты потратишь пару лет на самый базовый функционал

    Кроме вордпресса есть другие CMS
    Ответ написан
  • Как передать двойные кавычки и пайп в exeс php?

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

    чтобы отладить вместо exec пиши eсho и выводи свою строку до тех пор пока не станет нужной
    Ответ написан
    Комментировать
  • Изучаем/не изучаем htaccess?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Самое главное что надо понять - нету никакого синтаксиса .htaccess!
    Есть только синтаксис конфигурации веб-сервера Апач.

    Отсюда следует, что упираться в изучение не нужно, поскольку с профессиональным ростом ты неизбежно перейдешь на nginx.

    Вообще, с таим совковым подходом ты далеко не уедешь. Надо не зазубривать тонны команд. Надо учиться искать нужную информацию в интернете. Если тебе понадбится документация по натсройке mod_mime, то найти её - 5 сек. Вот что ты должен уметь.
    Ответ написан
    4 комментария
  • Стоит использовать шаблонизатор или нет?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    По каким еще тестам?
    Средний хомячок РНР, если уж дорывается до теста, то не понимает ни что он тестирует, ни зачем, ни как интерпретировать результаты. Так что 99% "тестов" можно смело выкидывать в утиль.

    Чтобы разобраться в проблеме шаблонизаторов, надо сначала понять несколько вещей:
    1. Прежде всего надо понять, что ты хочешь отделить от чего. Это самое трудное.
    2. Запомнить на всю жизнь, что твои тесты гроша выеденного не стоят и никакой разницы в скорости при использовании шаблонов нет и быть не может.
    3. Понять, что выбор есть только один - использоватть ли РНР в качестве шаблонизатора, или использовать внешний, такой как Твиг или Смарти.

    Понять первое тебе поможет вот этот текст: phpfaq.ru/tpl
    Второе понять невозможно, надо просто выучить.
    Третье состоит из нескольких пунктов. Хоть РНР и прост в качестве шаблонизатора, он все же уступает в гибкости использования внешним шаблонизаторам, по таким причинам, как
    • Работает из коробки
    • Есть автоискейпинг.
    • Мощная поддержка сообщества

    Уяснив для себя всё это, поставь twig и учись с ним работать
    Ответ написан
    8 комментариев
  • Как вставить переменные в sql запрос на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как вставить переменные в sql запрос на php?

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

    Соответственно, тебе нужна библиотека, которая поддерживает плейсхолдеры. Хотя старушку mysql ext можно заставить, но для новичка лучше всего подойдет PDO.

    $sql = "SELECT * FROM mytable WHERE city = ? AND price BETWEEN ? AND ? AND type = 'Продать'";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$_POST['city'], $_POST['area'], $_POST['price']-50, $_POST['price']+50]);
    $data = $stmt->fetchAll();

    Как соединяться с БД и вообще про PDO читай здесь: phpfaq.ru/pdo

    А твоя ошибка вызвана опечаткой и неправильной обработкой ошибок.
    Во-первых, у тебя в какой-то из запросов передается пустая строка - скорее всего, из-за опечатки
    Во-вторых, если бы в РНР было включено нормальное отображение ошибок, то РНР тебе бы сам ругнулся на эту опечатку.
    В-третьих, если бы ошибки mysql обрабатывались по-человечески, то РНР тоже указал бы на тот конкретный запрос, который оказался пустым. И ты бы не хватался вместо него за первый попавшийся.
    Ответ написан
    1 комментарий
  • Почему код работает не правильно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    А зачем в этом коде session_start()?
    Ответ написан
    Комментировать
  • Как правильно написать php код для проверки значения поля в MySql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $stmt = $pdo->prepare("SELECT `group` FROM users WHERE id=?");
    $stmt->execute([$id]);
    $group = $stmt->fetchColumn();
    if ($group != 2)
    {
        throw new NotEnoughPermissionsException();
    }
    Ответ написан
  • Как обратится к элементу JSON?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если ты с синтаксисом РНР "на вы", то делай так
    $test = json_decode($data, TRUE);
    - будет проще
    Ответ написан
    7 комментариев
  • Перенес сайт на localhost из хостинга. Сайт на CodeIgniter. Сайт не открывается. В чем может быть проблема?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какого ответа ты ждешь?
    На такой вопрос можно ответить только идиотскими вопросами же стандартного суппорта - "Выньте роутер из розетки, подождите 5 секунд и снова включите"

    Ты веб-сервер-то установил?
    Ответ написан
  • Как отловить что было выбрано в выпадающем списке?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    <select name = ''>
    тебе в этой строчке ничего не кажется необычным?
    Ответ написан
  • Как вывести текущую дату и время на сайте с учетом пользовательского часового пояса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Гугление ничего толкового не дало.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    помогает
    Ответ написан
    Комментировать
  • Правилен ли ход мыслей?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если у тебя не используется пользовательский ввод, то и защищаться ни от чего не надо.
    Если используется, и HTML запрещен, то htmlspecialchars()
    Если используется, но HTML разрешен - то htmlpurifier.org
    Ответ написан
    Комментировать
  • Как правильно поступить?

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

    человек читает... и старательно наступает на ровно те же самые грабли:
    для КАЖДОГО запроса, который может вернуть ошибку (то есть вообще для любого) он собирается писать колбасу из try catch на 6 строк.

    Для кого написано про централизованную обработку? Казалось бы - разул глаза, погуглил php exception handler, скопировал по образцу, нарисовал там хоть котиков, хоть слоников, хоть себя без трусов, добавил отправку почты себе поздравление бабушке, соболезнования котику. Все что угодно, но в одном, ОДНОМ месте.
    Ответ написан
  • Как при достижении конца массива продолжить его обходить сначала?

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

    Я бы на твоем месте посмотрел на функцию GregorianToJD()
    Захардкодил бы в скрипте возвращаемое ей значение в день начала показов
    А потом из разницы с текущим значением вычислял смещение.
    Оператор % тебе в этом мог бы пригодиться.
    Ну и array_slice добавить, для красоты
    Ответ написан
  • Как правильно проверять переменную в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Аналогом
    if ($var)
    для случая, когда переменная может быть не инициализирована, является
    if (!empty($var))

    Тем не менее, следует учесть замечание OnYourLips, и делать так, чтобы переменные, источником которых является твой скрипт, всегда были определены.

    Update.
    Мда. Полез поискать тебе ответ для случая, когда 0 считается не пустым значением.

    Если бы тогда пассажир по фамилии KorsaR-ZN написал тебе не феерически бредовую отсебятину,
    empty - проверят именно на пустоту переменной, т.е возвращает true если переменная является пустой и false в противоположном случаи.

    а объяснил, что
    !empty($var)
    всего-навсего является короткой записью
    if (isset($var) && $var))
    то сейчас у тебя вопроса не возникло бы.

    Это к вопросу о том, почему давать плохие ответы плохо (для автора) но хорошо (для посещаемости). И объясняет, почему администрация специально разводит на сайте лохов.
    Ответ написан
  • Как вернуть код ошибки из метода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если исключение ловить, то оно не относится к фатальным ошибкам.
    Ответ написан
    1 комментарий
  • Можно ли использовать глобальные переменные?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Про статью.
    Аффтар кликушествует и тупит.
    Единственная претензия, которую он родил, сводится к тому, что глобальную переменную можно переписать. Офигеть недостаток. А используя while, можно уйти в бесконечный цикл. Следуя его логике, while нельзя использовать, он разрушает структуру программы. И ещё моск.

    2. О глобальных переменных.
    Существует [по крайней мере] два способа использовать глобальные переменные.
    1. Для доступа к глобальным сервисам.
    2. Для передачи данных в функцию и получения результата из неё.

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

    3. О твоем коде.
    1. Учитывая п.2 из предыдущего раздела, становится понятно, что твой второй вариант нежелателен. При этом.
    2. Я не понял фразу про "тасакать". Куда и что ты собираешься таскать? Код коннекта должен лежать вызываться РОВНО ОДИН РАЗ, лежать, где-нибудь глубоко в бутстрапе, и не вызывать ни малейших ассоциаций со словом "таскать".

    И - да. Сто процентов отвечателей будут тебе писать не про твои переменные с хостом и паролем, а про саму $pdo. Потому что вопрос про неё является более логичным и куда боле актуальным: ведь переменные для коннекта требуются тебе 1 раз, а само соединение - десятки раз в разных местах скрипта.
    Ответ написан
    4 комментария