Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

vyrkmod

Пишу на php. И не стыдно.
  • 34
    вклад
  • 0
    вопросов
  • 64
    ответа
  • 39%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Экранирование данных в bindValue?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Не нужно
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему header() срабатывает после вывода контента?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Читать обязательно. Кратко: буфферизация вывода позволяет добавлять хэдеры "вне очереди", поскольку тело ответа не отправляется без команды. Но на проде буффер, очевидно, отключён. Искать "output-buffering" в php.ini.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как составить массив категорий товаров с учётом вложенности?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Что-то вроде
    $prevDepth = 1;
    foreach($arr as $item) {
        $currDepth = $item['DEPTH_LEVEL'];
        if($prevDepth < $currDepth) {
            // открываем вложенный список
        } elseif($prevDepth > $currDepth) {
            for($i = 0; $i < $prevDepth - $currDepth; $i++) {
                // закрываем вложенный список
            }
        }
        // рисуем элемент
        $prevDepth = $currDepth;
    }

    Хотя можно и куда красивее.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как получить текст из таблицы MYSQL без изменений?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    С базой всё в порядке, это json_encode юникод экранирует. Пишем так:
    json_encode( $text, JSON_UNESCAPED_UNICODE );
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как установить X-Frame-Options DENY на WordPress?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    header('X-Frame-Options: DENY');
    Где вписать - не суть, главное до вывода.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как хранить название города в Cookies?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    >Есть подозрение на то, что каким-то образом Blade-шаблон грузится быстрее чем обновляются Cookies.
    Собственно да, печенька обновляется при получении ответа от сервера, а тот рисует страницу опираясь на уже отправленную печеньку. Вариант раз: редиректить на ту же страницу чтобы обрабатывать запрос уже с новой печенькой. Вариант два: для создания ссылок использовать значение из запроса либо из печеньки, если в запросе такого нет.
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Зависимые таблицы Yii2, как обходится без дополнительной модели?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Вам сюда, конкретно viaTable(). В итоге должно получиться как для книг $book->genres, так и для жанров $genre->books. А создавать для связующей таблицы не несущей в себе дополнительной информации отдельную модель - как правило не конструктивно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Вопрос по RedBean php?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    $_SESSION['logged_user'] разве объект? Дак с чего вдруг вы у него свойства ищете? А если включить вывод всех ошибок (что норма для машины разработчика), пых бы сам о том же написал.
    UPD: действительно объект, но свойство properties где всё это сложено - protected, а значит вне кода класса (или наследников) не доступно. Скорее всего надо дёрнуть магический геттер. Пробуйте
    $a = $_SESSION['logged_user']->login;
    var_dump($a);
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как исправить The requested URL /../.. was not found on this server?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Надо велеть апачу дергать index.php если по урлу ничего нет. Как-то так
    <Directory "/var/www/html/site">
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . index.php
    </Directory>
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • База данных грузит CPU в 100%. В чем может быть проблема?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Optimize помогает не везде и не от всего, читаем внимательно. Лог медленных запросов очень полезная штука. Если там оказываются частые запросы, все поля из условий в них - в индексы (какие конкретно - отдельное кунг-фу, вариант по-быстрому - каждое поле в отдельный индекс). Ну и ещё сильно помогает включить логирование всех запросов на тестовой машине (НЕ НА ПРОДЕ). Большое количество одинаковых запросов при прогоне одного кейса явно говорит о рукожопости разраба.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Где ошибка в логике запроса?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Ошибка в логике в том, что id нумерует строки в таблице, а не в выборке. Так что id кратных нужному числу в выборке может и не оказаться. Надо либо выгружать всё и выбирать n-ные строки уже в php, либо создавать временную таблицу и нумеровать в ней, либо клепать несколько запросов с "LIMIT n,1".
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как я могу считать запуск скрипта по крон?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Состояние должно сохраняться между запусками скрипта, значит надо задействовать внешнюю память. Так что альтернатив действительно нет.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как организовать сохранение опции товара при его редактировании?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Удалять всё разом не надо, пользователь от интерфейса же не этого просит. Соответственно, держим кнопки "удалить" для каждой опции и форму для новой. Умеем - пришем ajax-ы и редактируем html когда на них ответят. Не умеем - заворачиваем каждую кнопку в свою форму, клацая на них пользователь будет "уходить" со страницы. Ну а приняв и удалив нужную опцию, снова отправляем юзера на страницу продукта.
    З.Ы. удалять price из product не стоит, иначе товары без этих опций "оценить" будет нереально, лучше просто писать туда null и соответственно обрабатывать.
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Будет ли изменение нагрузки на БД и сайт?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Ну тут очевидно лучше "SELECT COUNT(*)" в первом запросе: результатом будет искомое число строк, а не 100000 строк с одной колонкой. И да, конкатенация в запросах - зло, используйте mysqli_prepare() и mysqli_stmt_bind_param().
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • YII2 Как правильно построить запрос с joinWith?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Очевидно, не описана связь картинка-продукт, иначе продукт "доставался" бы не через Products::find(), а навроде $model->product. Вот тут подробно. В вашем случае надо что-то вроде
    class Images extends ActiveRecord
    {
        // ...
    
        public function getProduct()
        {
            return $this->hasOne(Products::className(), ['id' => 'product_id']);
        }
    }

    UPD: для жадной загрузки используем метод with() а не joinWith(), последний предназначен для ручной сборки запросов.
    Ответ написан более трёх лет назад
    9 комментариев
    9 комментариев
  • Защита и хранение паролей. Как правильно?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Bcrypt вполне надёжен. Подобрать пароль можно всегда, вопрос только в ресурсо-часах. Если очень хочется чтоб брутить уведённый хэш было долго - ставим cost побольше, про конкретные цифры надо спрашивать знатоков.
    Тормозить запросы лучше на стороне веб-сервера, средства есть. Хотя "капча начиная с третьей попытки" лучше: задержкой на пять минут мы скорее отпугнём живых людей, чем ботов.
    Шифрование пароля перед хешированием не нужно. Если сервер ломанули и базу уводят, код тоже наверняка сольют и прям его и будут использовать для расшифровки. Увеличение cost для хеширования даст лучший результат без лишних телодвижений.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Cross-Origin Read Blocking (CORB) blocked cross-origin response?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Картинка "with MIME type text/html" ему не нравится. Надо чтоб dropbox картинку с правильным хэдером "Content-Type" отдавал. Люди пишут что в урле надо ?dl=0 на ?raw=1 поменять.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как найти алгоритм?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    $max = count($array);
    for($i = 0; $i <= $max - 2; $i++) {
        for($j = $i + 1; $j <= $max - 1; $j++) {
            for($k = $j + 1; $k <= $max; $k++) {
                echo($array[$i] . "|" . $array[$j] . "|" . $array[$k] . "\n");
            }
        }
    }
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Require_once failed to open stream, в чём может быть проблема?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    Судя по скриншоту, этот код в файле Registrator.php. Ну так от него путь будет "../connection/DBConnection.php. А вообще лучше один раз написать автолоадер и пользоваться нэймспэйсами (PSR-0 и PSR-4, если что).
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как обернуть некоторые символы?

    vyrkmod @vyrkmod
    Пишу на php. И не стыдно.
    preg_replace("/([1-3])/ui", "[$1]", $str)
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • Следующие →
Самые активные сегодня
  • russeljo
    • 19 ответов
    • 0 вопросов
  • Drno
    • 11 ответов
    • 1 вопрос
  • rPman
    • 9 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 8 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 8 ответов
    • 0 вопросов
  • cerbiz_kolosov
    • 6 ответов
    • 1 вопрос
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации