Ответы пользователя по тегу PHP
  • Как устранить ошибки при переносе сайта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Вообще суть такая : я перекинул сайт с одного хостинга на другой. Вылезло куча ошибок. Некоторые из них я понял - типо поставьте новую версию mysql (изменил файл config.php поставил mysqli , всё отлично, ошибки исчезли).

    Решение "в лоб" - на новом хостинге - поставьте версию PHP поменьше, предположительно 5.3, и все ошибки пропадут с большей вероятностью.

    Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /home/users/3/375297078078/domains/biceps.napervoy.ru/vqmod/vqmod.php on line 247

    С вероятностью 99% - из-за новой версии ПХП, модификатор "е" в регулярках устарел. Удалить его оттуда совсем и/или переписать регулярку соотв. образом

    Parse error: syntax error, unexpected 'elseif' (T_ELSEIF), expecting function (T_FUNCTION) in /home/users/3/375297078078/domains/biceps.napervoy.ru/system/database/mysqli.php on line 54

    Тут нужно строку с кодом смотреть, что-то на вскидку ничего в голову не приходит.

    P.S. Наиболее простое решение проблем(ы) - я озвучил в первом абзаце.
    Ответ написан
    2 комментария
  • Как исправить проблему с кодировкой при рисовании картинок на php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Андрей: ну... если верить документации, то там сказано следующее:
    font Может принимать значения 1, 2, 3, 4, 5 для встроенных шрифтов в кодировке latin2

    Я думаю, можно не объяснять, чем нам это грозит? :))

    С учётом
    если никаких шрифтов не привязываю?
    текст нужно не "кодировать" (изменять ему кодировку), а скорее делать транслитерацию, т.к. кодировка latin2, как мне думается, букв русского алфавита в себе не содержит.

    Либо, другой вариант, опять таки, из документации
    любому из ваших собственных идентификаторов шрифтов, зарегистрированных с помощью imageloadfont()
    - это загружать шрифт, который уже содержит нужные символы соотв.

    Или, пользоваться функцией imagettftext...
    Ответ написан
  • Платежную систему легче с нуля написать или изменить?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Написать самомум под магазин(Знания php только Азы)

    Насколько я понимаю, знания в области написания и работы плагинов "e-commerce" и "woocommerce", в лучшем случае, аналогичны тем, что озвучены в цитате выше? Тогда я думаю, выбор очевиден. Это всё-таки платежи/деньги, я бы не стал такие эксперементы ставить в подобной области.

    Ну или, просто решите для себя, что Вам дешевле. "Перенести магазин" на (под) то, что уже есть, или нанять спеца, который бы качественно сделал работу по написанию/переделки подобных плагинов за Вас, или изучить PHP и систему плагинов на уровне, достаточном для подобных задач.
    Ответ написан
  • PHP-сессии. Сколько их создается для одного посетителя?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Пока думал о причино-следственных связях происходящего и писал ответ, тут уже без меня и написали много и на часть вопросов ответили... и даже прояснилось кое что...

    Как Вы понимаете, сказать с большей вероятностью сложно, но мне картина видится, в таком порядке:
    1. У Вас есть сайт на ВП
    2. Админка ВП или её признаки, доступны по стандартным адресам
    3. Заходит бот, в поисках свежего ВП для взлома (с целью рассылки спама), и пытается брутфорсить Вашу админку, или ещё что-то в таком духе делать
    3.1 Возможно ему приглянулась админка не ВП, а какого другого сайта... без подробных логов доступа угадать - как пальцем в... небо!
    4. Бот несколько часов генерирует паразитные запросы
    5. Каждый такой запрос, создаёт новый файл сессии
    6. По умолчанию, файл сессии ПХП хранится 24 часа
    7. Файлов сессий стало слишком много

    Это наверное, самый вероятный вариант из всех, что мне удалось придумать не имея доступа к серверу и практически никакой информации о происходящем внутри оного...

    Возможные полезные действия с Вашей стороны:
    а) Можно настроить время жизни сессий в ПХП
    б) Не хранить админки в свободном доступе
    в) Выбрать и установить какой-то механизм защиты от ботов. Не сложно догадаться, что пользователь не мог запрашивать 500 страниц в минуту...
    Ответ написан
    8 комментариев
  • Как добавить массив в массив?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Например так:
    $myArr[] = $value;

    или так... или вот так...
    Ответ написан
    4 комментария
  • Как на php организовать парсер?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Можно, для этого даже готовые библиотеки есть.
    1. Symfony dom crawler
    2. phpQuery
    3. simple_html_dom

    С ними будет куда проще, чем с регуляркой.
    Ответ написан
    Комментировать
  • Как вытащить атрибут из XML?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Пример "высосанный из пальца":
    <?php
    
    $xml = simplexml_load_file("xml.xml");
    
    foreach ($xml->row as $row) {
        foreach ($row as $exchangerate) {
            var_dump((float)$exchangerate->attributes()['buy']);
        }
    }
    Ответ написан
    4 комментария
  • Как передать данные (типа: name="xxxx...") из формы в обработчик формы, если имена для полей формы генерируются автоматически?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Перебирать массивы, $_POST, $_GET, $_REQUEST, $_FILES (и т.д.) по ситуации, и доставать из них всё, что пришло.
    Ответ написан
    Комментировать
  • Как сделать mailto headers в зависимости от параметра?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Можно, например так:
    switch($Refereal_ID) {
        case 2:
            $email_from = 'email2@ya.ru';
            break;
        case 3:
            $email_from = 'email2@ya.ru';
            break;
        default:
            $email_from = 'email999@ya.ru';
            break;
    }
    
    // ...
    
    $headers = "From: $email_from \r\n";


    Примерно так.
    Ответ написан
  • Как сделать надежную панель администрирования для сайта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    С учётом возможностей Symfony3 "искаропки", можете взять готовую аутентификацию из нее. А если её не хватит, в Symfony3 есть целый арсенал разных средств безопаности/авторизации/аутентификации, в виде "отдельно стоящих" (переносимых) библитек, вплоть до "файрволов".

    Ссылка на пакет и на Git-репозиторий. Ссылка на его документацию есть на странице репозитория.
    Ответ написан
    1 комментарий
  • Как в php скрипте определить, что его запустил Cron?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Передать ему входной параметр, например -cron.
    Ответ написан
    Комментировать
  • Как обрезать текст сохраняя целостность html кода?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    1 вариант на мой взгляд просто ужасен, так как нам придется вызывать функцию очистки при каждой попытке отобразить статью.

    Зачем? Можно же в базе хранить в базе уже обрезанный текст, в дополнительном поле (если стандартное не устраивает).

    *Не понимаю, чего все так бояться добавить немного "лишних" (дополнительных) данных в БД... у Вас там гигбайты текста хранить нужно, а база работает на процессоре от калькулятора?

    При надобности обрезании подобного текста есть большой риск нарушить целостность html-кода.

    Не совсем понятно, что значит "риск нарушить целостность кода"? Нужно из кода что ли текст вырезать? Для этого есть другие инструменты, работающие с DOM-разметкой, они позволяют изменить HTML-элементы и их содержимое без нарушения целостности, какой-нибудь phpQuery например (а ещё Symfony Dom Crawler, Simple HTML DOM и т.д.), если принципиально хочется извращаться над HTML-кодом...

    P.S. Для HTML-редакторов, не редко случается такое, что либо пользователь навставлял какой-нибудь ерунды в код, либо сам редактор хорошенько в код нагадил... По этому, я бы всё-таки не снимал со счетов технологию "Хранение нормализованных данных вместе с оригинальными" (о которой я писал выше). Вернее будет сказать, "Хранение оригинальных данных рядом с нормализованными", если по какой-то причине они всё-таки нужны...
    Ответ написан
    Комментировать
  • Как правильно организовать структуру таблицы MySQL?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    все таки стоит их просто разделить ролями, но хранить в одной таблице?

    Иначе говоря, не денормализовывайте данные (не дробите их).

    В MySQL есть связи между таблицами, стоит ли хранить например, телефоны юзеров в отдельной таблице "phone_numbers" и по id их связывать с главной таблицей юзеров?

    Стоит, если у Вас действительно большой объём данных, сервер не справляется а телефони пр. параметры - запрашиваются относительно редко по сравнинию кол-вом запросов в таблицу пользователей. В этом случае, все редко используемые данные выносят в отдельную таблицу, что бы физически разделить их на диске и уменьшить объём основной таблице. При этом, данные из доп. таблицы получают отдельным запросом (без JOIN'ов). А вообще, когда такое случается (когда данных уже столько, что массив дисковый массив захлёбывается и данные приходятся дробить, индексы перестают работать нормально а внешние ключи сыпятся) - уже пора переходить на Postgresql, а не мучить MySQL, которая тихи и мирно начинает скатываться в "черную дыру непонятных ошибок"...
    Ответ написан
    2 комментария
  • Как переиспользовать значения удаленных user_id?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Можно. Вместо физического удаления записи - отмечайте её флагом "DELETED" (условно). Потом поиск первой свободной записи, примерно так:
    SELECT min(id) FROM my_table WHERE deleted = 1;
    А потом вместо добавления новой записи - обновляете существующую, с найденным ID.

    Как-то так.

    Можно одним запросом найти запись с минимальным ID и обновить её, установив попутно флаг DELETED = 0;
    Ответ написан
    Комментировать
  • Можно ли как-то отследить инпуты через ajax?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Мне кажется, Вам будет проще правильно инпуты именовать, например так:
    <input name="tovar[] />
    или
    <input name="tovar[0] />
    <input name="tovar[1] />
    <input name="tovar[2] />


    Тогда не придётся заниматься такими изысками...

    P.S. В принципе первый вариант - нормально работает, проставлять им номера руками - совершенно не обязательно.
    Ответ написан
    Комментировать
  • Как правильно принять файл с удаленного сервера?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    $f = fopen('file1.txt', 'w');
    fwrite($f, $_REQUEST['имя_переменной_с_файлом'];
    fclose($f);


    Как-то так, например.
    Ответ написан
  • Как реализовать в html форму как здесь http://author-alarm.ru/podderzhka_auto/?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Создаём набор нужных нам селектов, все селекты кроме первого - пустые.

    Далее, после выбора первого селекта, отправляем AJAX-запрос на сервер, с данными о том, что пользователь выбрал в первом селекте. Далее, в зависимости от этого, возвращаем JSON-массив и заполняем им второй селект... и так по цепочке.

    Если пользователь изменил выбор в первом селекте - очищаем второй, делаем повторный запрос и так далее, по кругу.
    Ответ написан
    Комментировать
  • Будет ли работать схема Apache2 + PHP5(mod_php) + PHP7-FPM?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    а если все сайты принадлежат разным пользователям, то как поступить в таком случае?

    Установить права на файлы (в частности php-файлы) таким образом, что бы FPM-PHP мог их как минимум читать.

    А вообще, в FPM-режиме, обычно создаётся столько пулов, сколько пользователей и каждый из них работает от своего пользователя, и проблема соотв. отпадает сама собой.
    Ответ написан
  • Как спарсить число между тегами и текстом?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Ну например так:
    $a = "Строка с числом 55 и текстом";
    $b = (int)preg_replace('/\D/', '', $a);
    var_dump($b);
    Ответ написан
  • Как сделать сортировку переменной по алфавиту?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Можно например так:
    $a = "abcab";
    $b = str_split($a); 
    asort($b);
    var_dump(implode('', $b));
    Ответ написан