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

26

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

Про що це я?

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

Цей програмний мова є серверним. Тобто, виконується на стороні сервера (на хостингу), а не на стороні клієнта (користувача браузері). Щоб це продемонструвати, я вставлю в HTML кілька рядків коду PHP.

Тепер збережемо його у файлі з розширенням .php і відкриємо у браузері.

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

Поки нічого незвичайного. Але тепер давайте переглянемо розмітку сторінки в браузері:

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

У ній ми не побачимо код скрипта, тому вивести файл PHP стороннього ресурсу не вдасться, якщо тільки у вас немає доступу до сервера. Що ми і довели шляхом експерименту :) .

А якщо треба?

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

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

Відкрити файл.

Вважати його вміст в буфер.

Закрити файл.

Вивести вміст на екран.

Приклад:

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

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

Відображаємо скрипт

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

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

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

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

Але перед тим як вивести файли з папки PHP, хотілося б зробити «допилинг» попереднього прикладу. Код скрипта відображався на екрані порядково, потрібно весь вміст файлу перетворити масив. За допомогою функції file():

«;
}
?>

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

Отримуємо імена файлів

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

«;
}
?>

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

У прикладі для отримання імен файлів ми використовували функцію glob(). Вона здійснює пошук, згідно шаблону, який передається їй в якості обов’язкового параметра.

Як необов’язкових аргументів дана функція приймає різні прапори. Наприклад, з допомогою прапора GLOB_NOSORT можна вимкнути сортування за алфавітом, застосовувану функцією до елементів повертається масиву.

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