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

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Советую к fetch добавить тип который хотим получить и получить данные, что-то типо
    fetch("http://localhost:8080",{
    /* тут данные */
    }).then((response) => {
    if (!response.ok) {
    throw new Error("error");
    }
    return response.json();
    }).then((data) => {
    console.log(data);
    }).catch();


    в php делаем это.
    <?php
    $content = file_get_contents("php://input");
    echo $content;
    ?>

    В console.log появится результат который вы отправили. Это позволит вам узнать, отправляются ли данные на сервер. И лучше делать форму, на нее вешать событие submit и отменить поведение по умолчанию.
    Ответ написан
    Комментировать
  • Имеет ли смысл разбирать чужие сложные скрипты для самообучения?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Да нужно. Хотя бы понимая, что говнокодить нельзя.
    Ответ написан
    Комментировать
  • Как значения из одного массива преобразовать в другой массив?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Самое банальное, при помощи цикла и функции explode
    Ответ написан
    Комментировать
  • Как передать параметры настройки php при связке apache+php-fpm?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Вот что ответил chat gpt.
    Когда Apache работает в режиме mod_php (например, с mpm_prefork), параметры PHP можно настраивать напрямую в конфигурации виртуальных хостов с помощью директив php_admin_flag и php_admin_value. Однако, когда используется php-fpm в связке с многопоточным MPM (например, mpm_worker или mpm_event), PHP запускается как отдельный процесс, и Apache передает запросы через FastCGI. В этом случае директивы Apache, такие как php_admin_flag и php_admin_value, больше не работают.
    Чтобы задать отдельные настройки PHP для каждого виртуального хоста при использовании Apache с php-fpm, можно воспользоваться следующими подходами:
    1. Использование .user.ini
    PHP поддерживает использование файлов .user.ini для переопределения определённых настроек на уровне директории. Вы можете создать файл .user.ini в корневой директории каждого виртуального хоста и добавить в него настройки, которые вы хотите изменить. Например:
    /var/www/example.com/.user.ini
    ini
    Копировать код
    memory_limit = 512M
    max_execution_time = 300
    upload_max_filesize = 1024M
    post_max_size = 1024M

    Примечание: Убедитесь, что в файле php.ini включена директива user_ini.filename, и она указывает на имя файла .user.ini.
    2. Настройка PHP-FPM пула для каждого VirtualHost
    Вы можете создать отдельные пулы для каждого виртуального хоста в конфигурации php-fpm. В конфигурации каждого пула можно задать свои параметры PHP.
    Создайте новый конфигурационный файл пула, например, /etc/php-fpm.d/example.com.conf:
    ini
    [example.com]
    user = apache
    group = apache
    listen = /var/run/php-fpm-example.com.sock
    listen.owner = apache
    listen.group = apache
    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    
    php_admin_value[memory_limit] = 512M
    php_admin_value[max_execution_time] = 300
    php_admin_value[upload_max_filesize] = 1024M
    php_admin_value[post_max_size] = 1024M

    После этого в конфигурации виртуального хоста Apache пропишите использование соответствующего пула:
    apache
    <VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/example.com
    
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/run/php-fpm-example.com.sock|fcgi://localhost/"
        </FilesMatch>
    </VirtualHost>

    3. Использование SetEnv и .htaccess
    Если вы хотите использовать переменные окружения для передачи настроек PHP, можно использовать директиву SetEnv в конфигурации виртуального хоста Apache. Затем в php-fpm можно настроить обработку этих переменных.
    Пример для Apache:
    apache
    <VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/example.com
    
        SetEnv PHP_VALUE "memory_limit=512M
        max_execution_time=300
        upload_max_filesize=1024M
        post_max_size=1024M"
    </VirtualHost>

    Резюме
    Наиболее гибкий и мощный способ управления настройками PHP при использовании php-fpm — это создание отдельного пула для каждого виртуального хоста. Этот подход позволяет точно настраивать параметры PHP для каждого сайта или приложения, а также эффективно управлять ресурсами сервера.
    Ответ написан
    2 комментария
  • Как передать путь к файл через $_GET?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Возможно get данные нужно пропустить через urlencode
    Ответ написан
    Комментировать
  • Как узнать, какой день недели был 100 дней назад?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Я бы сделал на mktime. где указывается число, минуснуть на 100 и получим секунды того дня. Дальше взять date() поставить w и поставить секунды из mktime во-второй аргумент.
    <?php
    $mktime = mktime(12,00,00,8,8-100,2024);
    echo date("w",$mktime);
    ?>
    ?>
    Ответ написан
    Комментировать
  • Как получить имя переменной из строки?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Имена переменной можно задавать через $$.
    К примеру
    $str = "str555";
    $$str = "hello";
    echo $str555; // выводит hello
    Ответ написан
  • Как записать в базу пустое поле?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Так вроде как в новых версиях mariadb и mysql запрещено пустые поля делать. Можно NOT NULL, NULL или DEFAULT
    Ответ написан
  • В чем может быть проблема у простого php-роутера?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    В моем htaccess есть такой код.

    RewriteEngine On
    # Не применять к существующим файлам файлам
    RewriteCond %{REQUEST_FILENAME} !-f
    # Не применять к существующим директориям
    RewriteCond %{REQUEST_FILENAME} !-d
    # Редирект всех запросов на index.php
    # L означает Last, нужен чтобы на этом этапе mod_rewrite сразу остановил работу.
    # Короче, небольшое увеличение производительности.
    RewriteRule .* index.php [L]


    Далее, в моем роуторе я обращаюсь через $_SERVER['REQUEST_URI']
    Разбиваю его на части.
    К примеру у меня есть два адреса.
    site.ru/blog/one-day
    site.ru/de/blog/one-day
    Все что разделено косыми чертами, я отдал на откуп explode.
    Роутору объяснил, что нулевой может иметь два значения и он это должен учитывать. Если в нем храниться только две буквы и не более, тогда он должен привести нас в изменение языка интерфейса. Если букв больше, тогда он должен привести нас в модуль, который мы хотим вызвать.
    Если модуля нет, тогда нужно отправить пользователя на 404, но в моем случае я отправляю пользователя на главную.
    Причем я делаю проверку не только на существование каталога для модуля, но и на существование некоторых файлов.
    А $_GET параметры передаются автоматически и их не нужно обрабатывать.
    site.ru/blog/one-day?page=comments&sort=desc
    $_GET параметры сами подставятся как положено и их не нужно прогонять через роутер.
    Аааа, простите, забыл добавить, что у меня есть второй explode, который в самом начале разделяет строку через знак ?

    Мой файл имеет размер в 3.2 kb и 48 строк.
    Но это только лишь из-за развернутых комментариев, которые я писал для себя, чтобы не запутаться.
    Да, в таком роуторе должен быть метод, который пошлет куда подальше пользователя, если он будет безобразно вводить адрес сайта.
    К примеру, у вас есть материал по адресу
    site.ru/blog/one-day, но после one-day ничего нет, то тут должна сработать защита, которая просто прогонит пользователя на главную или подготовленную страницу для таких случаев.
    Я реализовал это таким способом.
    Есть метод error404(), который принимает номер элемента, после которого должна произойти остановка.
    site.ru/blog/one-day
    Только два элемента и третьего нет, тогда я вызываю метод error404(2) и все что будет введено после one-day, сработает остановка.
    site.ru/blog/one-day/photo/city-berlin
    error404(4) Все что больше четыре, сработает остановка.

    Как-то так. А если на регулярках решать данную задачу, мне кажется это еще более нагружать сервер, да и казусы могут всякие быть.

    Простите за такой длинный комментарий.
    Это чисто мой велосипед и никого не призываю им пользоваться.
    Ответ написан
    Комментировать
  • Как заставить php скрипт корректно работать?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Использовать функцию mb_substr и в ней указать кодировку для японских символов.
    Ответ написан
    1 комментарий
  • Не работает php код?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Перед session_start, а так же перед header() - не должно ничего выводиться. Если вы будете что-то выводить, это сразу выводит ошибку. Подумайте над другим вариантом, как пользователю сообщить, что логин занят.
    Ответ написан
  • Как удалить сессию при закрытии вкладки/окна браузера?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Могу лишь предложить такую логику. Нужно поставить жизнь сессии пять минут. Каждый раз, пока пользователь на сайте, будет обновляться жизнь сессии. Когда пользователь закроет вкладку или окно, то сессия больше обновляться не будет. Соответственно она удалится.
    Ответ написан
  • Как отловить ошибку Parse error: syntax error, unexpected end of file in page-hub.php on line 328?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    У меня такое было. Проблема почему-то была в таком коде.
    <?php
    if (1==1) {
     echo "Да, числа ровны";
    }
    else echo "Нет, не ровны";
    ?>

    Добавил скобки и проблема исчезла, хотя на windows такой проблемы не было.
    Ответ написан
    Комментировать
  • Как на php показать какой отрезок времени назад был опубликован пост?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    1. Хранить метку времени в секундах.
    2. Взять метку времени и реальное время. От реального времени отнять метку, которая сохраняется в базе. Так мы получим количество секунд с момента создания записи.
    3. Написать метод или функцию, которая должна секунды превратить в тот результат, который вам нужен.
    Ответ написан
  • Ошибка Cannot modify header information при работе с cookie?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Кука должна объявится раньше, чем будет html
    Ответ написан
    Комментировать
  • Как поправить query запросы в базу mysql php?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Единицу нужно в кавычки взять. user='1'
    Ответ написан
    Комментировать
  • В чём ошибка (скорее всего php)?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Попробуйте между атрибутами и значениями убрать пробелы, только оставить знаки равно.
    name="radio" method="post"
    И попробуйте php скрипт запустить вручную.
    То есть,поменяйте параметры с post на get и посмотрите, может происходит какая-то ошибка там.
    А в адресной строке наберите
    file.php?a=1
    Ответ написан
  • The requested URL was not found on this server?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    в action='/' не нужно ничего писать.
    Вы отправляете форму на этот же файл.
    Если ваш файл имеет чпу, тогда нужно указывать адрес к обработчику.
    Можно action убрать, или сделать так action='#'
    Ответ написан
    Комментировать
  • Parse error: syntax error, unexpected '">"' (T_CONSTANT_ENCAPSED_STRING), expecting ']' in CODE on line 54 Errors parsing CODE?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    Пожалуйста, обратите внимание на то, что на вашем open server может быть настроена только <?php ?>, вместо <? ?>
    У меня вызывает ошибку, если делать так.
    <? else: ?>
    Вместо этого нужно делать так.
    <?php else: ?>
    <?=$x;?>
    <?php endif;?>

    Когда вы пытаетесь делать так? <? elsse: ?>
    php ждет, что вы вставите что-то для вывода на экран.
    Ответ написан
    Комментировать
  • Как вывести на php результат SELECT COUNT(*) из MySql?

    @artem-dainov
    Php, java, js. Boot spring, jquery, git
    echo $query['count(*)'];
    Ответ написан
    Комментировать