За последние 24 часа нас посетили 16454 программиста и 1593 робота. Сейчас ищут 1311 программистов ...

оптимизировать под php8

Тема в разделе "PHP для новичков", создана пользователем Doc, 1 ноя 2024.

  1. Doc

    Doc Активный пользователь

    С нами с:
    15 дек 2011
    Сообщения:
    17
    Симпатии:
    0
    Приветствую , имею небольшой код для публикации списка файлов на странице
    он был написан еще под php5и работал под php7 (не мной)
    Сейчас потребовалось обновить сервер до 8.2. Скрипт работать перестал. Пока я развернул руками параллельно еще и php 7.4 , но хотелось бы от него избавится.
    Ругается он на функцию get_magic_quotes_gpc() которую убрали в 8 версии , но не понимаю как и чем ее заменить и что она делает:
    Код (Text):
    1. if(get_magic_quotes_gpc())
    2. $folder = stripslashes($_GET['folder']);
    3. else
    4. $folder = $_GET['folder'];
     
  2. Survivor

    Survivor Новичок

    С нами с:
    8 фев 2023
    Сообщения:
    86
    Симпатии:
    17
    Привет!
    Это пока-что он ругается только на эту функцию, а дальше думаю будет сыр не в масле :D

    Функция использовалась для автоматического экранирования.
    Просто убери её к чертям. Заменять её ничем не нужно.

    Используй заранее подготовленные запросы, mysqli_ , pdo , переписывай запросы (select, insert)

    Т.к. ты работаешь с файловой системой, я думаю что этого будет достаточно

    PHP:
    1. $folder = filter_input(INPUT_GET, 'folder', FILTER_SANITIZE_STRING);
    2. $folder = realpath($folder); // реальный путь
    3.  
    4.  
    5. if (strpos($folder, '/your/base/path') !== 0) {
    6.     throw new Exception('Неверный путь');
    7. }
     
    MouseZver и Doc нравится это.
  3. Doc

    Doc Активный пользователь

    С нами с:
    15 дек 2011
    Сообщения:
    17
    Симпатии:
    0
    Спасибо!
    просто загомонил эту функцию , и else

    Да выполз некий "сыр" - ног незначительный
    в коде есть "самопальная" функция подотчета объема папки
    Код (Text):
    1. function folder_size($path)
    2. {
    3.    $folder_size = `du -s $path`;
    4.     $size_array = explode("\t", $folder_size);
    5.     return $size_array[0]*1024;
    6. }
    пока придушил
    буду смотреть как современными методами подсчитать объем, или вообще плюнуть на нее.

    остальное вреде работает

    p.s. ну Вот теперь от этих разговоров про сыр и масло , не захотелось будерброд ....
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!
    Замените function folder_size на
    PHP:
    1. function folder_size($path)
    2. {
    3.   return array_sum(array_map('filesize', glob("{$path}/*.*")));
    4. }
    Удачи!
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.790
    Симпатии:
    1.330
    Адрес:
    Лень
  6. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!
    Doc написал:
    была показана нерабочая функция, которая суммировала веса всех файлов в папке.
    Переделал эту функцию.
    Зачем?
    Если требуется распечатать список файлов в директории с указанием их типов и размеров
    и в конце показать общий размер папки, то функция disk_total_space не подходит.
    Если применить disk_total_space и упомянутую выше функцию, то результат будет отличаться.
    p.s. Между прочим, если посмотреть свойства папки, то выводится два отличающихся значения:
    размер и размер на носителе данных.
    Удачи!