Как вывести файл PHP, чтобы «замутить» чужой код

Как вывести файл PHP, чтобы «замутить» чужой код

От автора: мне всегда было интересно, как работают чужие сайты. Так и хочется подсмотреть код стороннего скрипта, чтоб и себе такой «замутить». Вот только PHP – это серверный язык, поэтому «списать» чужой код не удастся. Но все-таки, как вывести файл PHP?

О чем это я?

Согласен, заголовок статьи больше ориентирован на продвинутых юзеров. Если вы таким не являетесь (пока), я сейчас поясню, почему скрипт PHP просто так не получится «подсмотреть».

Этот программный язык является серверным. То есть, выполняется на стороне сервера (на хостинге), а не на стороне клиента (в пользовательском браузере). Чтобы все это продемонстрировать, я вставлю в HTML несколько строк кода PHP.

<html>
<head>
  <title></title>
</head>
<body>
<?php
$a="Hello! I am PHP-string!";
echo $a;
?>
</body>

</html>

Теперь сохраним его в файле с расширением .php и откроем в браузере.

Как вывести файл PHP, чтобы «замутить» чужой код

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Пока ничего необычного. Но теперь давайте просмотрим разметку страницы в браузере:

Как вывести файл PHP, чтобы «замутить» чужой код

В ней мы не увидим код скрипта, поэтому вывести файл PHP стороннего ресурса не удастся, если только у вас нет доступа к его серверу. Что мы и доказали путем эксперимента :) .

А если надо?

Вы, как владелец собственного ресурса, можете предоставить своим пользователям доступ к определенным файлам. Для этого нужно отобразить их содержимое в браузере. Чем мы и займемся.

Чтобы реализовать данное решение, придется выполнить несколько операций:

Открыть файл.

Считать его содержимое в буфер.

Закрыть файл.

Вывести содержимое на экран.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Пример:

<?php
 $h = fopen("f2.txt", "rb");
 $text = fread($h,20);
 fclose($h);
 echo $text;
?>

Как вывести файл PHP, чтобы «замутить» чужой код

Так можно в PHP вывести содержимое текстового файла, картинку. Но код скрипта или разметку страницы точно не получится. Проверено на себе :) .

Отображаем скрипт

Немного «подровняем» предыдущий пример с помощью функции htmlspecialchars(), которая преобразовывает весь программный код в «читаемый» для браузера:

<?php
 $h = fopen("sample_html.php", "rb");
 $text = htmlspecialchars(fread($h,200));
 fclose($h);
 echo $text;
?>

Как вывести файл PHP, чтобы «замутить» чужой код

А можно вообще обойтись всего несколькими строчками. Для этого нам понадобится функция file_get_contents():

<?php
 $h = htmlspecialchars(file_get_contents("sample_html.php"));
 echo $h;
?>

Как вывести файл PHP, чтобы «замутить» чужой код

Но перед тем как вывести файлы из папки PHP, хотелось бы сделать «допилинг» предыдущего примера. Чтобы код скрипта отображался на экране построчно, нужно все содержимое файла преобразовать в массив. Воспользуемся функцией file():

<?php
 $cod = file('sample_html.php');
for ($d = 0; $d<sizeof($cod); $d++) {
 echo htmlspecialchars($cod[$d])."<br />";
}
?>

Как вывести файл PHP, чтобы «замутить» чужой код

Получаем имена файлов

Теперь с помощью PHP выведем список файлов. Так как я по своей натуре личность ленивая, то использую самый короткий метод без всяких там функций типа opendir():

<?php
 $script = glob("*.php");
 foreach ($script as $file){
 echo $file."<br/>";
}
?>

Как вывести файл PHP, чтобы «замутить» чужой код

В примере для получения имен файлов мы использовали функцию glob(). Она осуществляет поиск согласно шаблону, который передается ей в качестве обязательного параметра.

В качестве необязательных аргументов данная функция принимает различные флаги. Например, с помощью флага GLOB_NOSORT можно отключить сортировку по алфавиту, применяемую функцией к элементам возвращаемого массива.

Ну, на этом и закончим. Вывести список файлов в папке PHP мы научились, отображать содержимое скриптов тоже. Думаю, пока я удовлетворил ваше любопытство :) .

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (1)

  1. nazar

    >> Думаю, пока я удовлетворил ваше любопытство.>>
    Удовлетворили не то слово ;)
    Теперь, если можно, раскажите, как уберечься от подобных методов считывания кода.
    Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree