От автора: мне всегда было интересно, как работают чужие сайты. Так и хочется подсмотреть код стороннего скрипта, чтоб и себе такой «замутить». Вот только PHP – это серверный язык, поэтому «списать» чужой код не удастся. Но все-таки, как вывести файл PHP?
О чем это я?
Согласен, заголовок статьи больше ориентирован на продвинутых юзеров. Если вы таким не являетесь (пока), я сейчас поясню, почему скрипт PHP просто так не получится «подсмотреть».
Этот программный язык является серверным. То есть, выполняется на стороне сервера (на хостинге), а не на стороне клиента (в пользовательском браузере). Чтобы все это продемонстрировать, я вставлю в HTML несколько строк кода PHP.
1 2 3 4 5 6 7 8 9 10 11 12 |
<html> <head> <title></title> </head> <body> <?php $a="Hello! I am PHP-string!"; echo $a; ?> </body> </html> |
Теперь сохраним его в файле с расширением .php и откроем в браузере.
Пока ничего необычного. Но теперь давайте просмотрим разметку страницы в браузере:
В ней мы не увидим код скрипта, поэтому вывести файл PHP стороннего ресурса не удастся, если только у вас нет доступа к его серверу. Что мы и доказали путем эксперимента :).
А если надо?
Вы, как владелец собственного ресурса, можете предоставить своим пользователям доступ к определенным файлам. Для этого нужно отобразить их содержимое в браузере. Чем мы и займемся.
Чтобы реализовать данное решение, придется выполнить несколько операций:
Открыть файл.
Считать его содержимое в буфер.
Закрыть файл.
Вывести содержимое на экран.
Пример:
1 2 3 4 5 6 |
<?php $h = fopen("f2.txt", "rb"); $text = fread($h,20); fclose($h); echo $text; ?> |
Так можно в PHP вывести содержимое текстового файла, картинку. Но код скрипта или разметку страницы точно не получится. Проверено на себе :).
Отображаем скрипт
Немного «подровняем» предыдущий пример с помощью функции htmlspecialchars(), которая преобразовывает весь программный код в «читаемый» для браузера:
1 2 3 4 5 6 |
<?php $h = fopen("sample_html.php", "rb"); $text = htmlspecialchars(fread($h,200)); fclose($h); echo $text; ?> |
А можно вообще обойтись всего несколькими строчками. Для этого нам понадобится функция file_get_contents():
1 2 3 4 |
<?php $h = htmlspecialchars(file_get_contents("sample_html.php")); echo $h; ?> |
Но перед тем как вывести файлы из папки PHP, хотелось бы сделать «допилинг» предыдущего примера. Чтобы код скрипта отображался на экране построчно, нужно все содержимое файла преобразовать в массив. Воспользуемся функцией file():
1 2 3 4 5 6 |
<?php $cod = file('sample_html.php'); for ($d = 0; $d<sizeof($cod); $d++) { echo htmlspecialchars($cod[$d])."<br />"; } ?> |
Получаем имена файлов
Теперь с помощью PHP выведем список файлов. Так как я по своей натуре личность ленивая, то использую самый короткий метод без всяких там функций типа opendir():
1 2 3 4 5 6 |
<?php $script = glob("*.php"); foreach ($script as $file){ echo $file."<br/>"; } ?> |
В примере для получения имен файлов мы использовали функцию glob(). Она осуществляет поиск согласно шаблону, который передается ей в качестве обязательного параметра.
В качестве необязательных аргументов данная функция принимает различные флаги. Например, с помощью флага GLOB_NOSORT можно отключить сортировку по алфавиту, применяемую функцией к элементам возвращаемого массива.
Ну, на этом и закончим. Вывести список файлов в папке PHP мы научились, отображать содержимое скриптов тоже. Думаю, пока я удовлетворил ваше любопытство :).
Комментарии (1)