Пока я творю, я живу!
Блог посвящен: HTML, CSS, PHP, Wordpress, Bootstrap
Всем привет!
Продолжаем изучать основы PHP с нуля!
В этом уроке я расскажу вам, как подключить файл в php.
Зачем нужно подключать файл в php?
Минутку внимания, сейчас все узнаете.
Помните наш предыдущий урок №16, где я рассказывал о функции php?
Так вот, вы можете создать файл, например «function.php» и вписать туда все функции, которые вам нужно будет использовать для сайта. Останется только подключить файл «function.php» на странице сайта и все. Это удобно, а также нет на главной странице сайта кучу лишнего кода.
Наведу еще один пример, где можно использовать подключение внешних файлов php.
Например, у вас есть сайт из 100 страниц, который состоит из шапки, меню, контента и футера.
И вам вдруг нужно добавить в меню еще один раздел. Представьте: для этого нужно открыть 100 файлов, чтобы сделать исправление.
Но можно всего этого избежать, если создать отдельно файл, например, «menu.php» и подключить его к вашему сайту там, где должно быть меню. И после это, если вы сделаете исправление только в одном файле «menu.php», замена произойдет на остальных 100 страницах сайта автоматически. Таким способом вы можете подключить шапку сайта, футер и т.д. Удобно, не правда ли?
Я думаю, в конце этой статьи я покажу на примере, как это организовать.
Итак, чтобы подключить внешние файлы php, существуют две основные конструкции включений: require и include.
Конструкция include позволяет включать файлы в код PHP скрипта во время выполнения сценария.
Синтаксис конструкции include:
<? include "имя_файла"; ?>
Если в папке:
<? include "имя_папки/имя_файла"; ?>
Пример:
Создайте файл «function.php» вот таким кодом:
<?php function Sreturn($numberA,$numberB) { $sum = $numberA * $numberB; return $sum; } ?>
Теперь в файле «index.php» попробуем подключить файл «function.php» (строка №2):
<?php include 'function.php'; echo Sreturn(5,2); // результат 10 ?>
Результат:
10
Внимание: бывают такие случаи, что вы можете забыть и попытаетесь подключить файл «function.php» еще раз (строка№2, №3):
<?php include 'function.php'; include 'function.php'; echo Sreturn(5,2); // результат 10 ?>
В итоге может возникнуть фатальная ошибка или может вывестись еще раз содержимое файла. В моем случае будет ошибка:
Fatal error: Cannot redeclare Sreturn() (previously declared in O:\home\localhost\www\php\function.php:2) in O:\home\localhost\www\php\function.php on line 5
Если саму функцию убрать, а прописать текст (файл «function.php»):
Ну и, естественно, в файле «index.php» тоже уберите вывод функции:
то результат просто повторится.
Привет! Привет!
Чтобы не допустить таких ошибок и исключить повторное подключение файла, вместо инструкции «include» надо применять инструкцию «include_once».
Синтаксис конструкции «include_once»:
<? include_once "имя_файла"; ?>
Пример (строка №2, №3):
<?php include_once 'function.php'; include_once 'function.php'; echo Sreturn(5,2); // результат 10 ?>
Хоть и два подключения, но файл будет подключен только один раз, то есть, подключение будет проигнорировано, так как файл уже подключен.
Конструкция require позволяет включать файлы в сценарий PHP до исполнения сценария PHP.
Синтаксис конструкции «require»:
<? require "имя_файла"; ?>
Если в папке:
<? require "имя_папки/имя_файла"; ?>
Пример:
<?php require 'function.php'; echo Sreturn(5,2); // результат 10 ?>
Если у нас в коде встретятся несколько инструкций require, которые подключают один и тот же файл, то интерпретатор выдаст ошибку. Чтобы избежать данной ситуации, надо использовать инструкцию «require_once»:
<? require_once "имя_файла"; ?>
Пример:
<?php require_once "function.php"; require_once "function.php"; echo Sreturn(5,2); // результат 10 ?>
Внимания: если подключить несуществующий файл через «include», «include_once», «require» или «require_once», то в результате будет ошибка:
Warning: include_once(function1.php) [function.include-once]: failed to open stream: No such file or directory in O:\home\localhost\www\php\index.php on line 2
Теперь, как я и обещал, покажу, как на сайте подключить меню, шапку и футер сайта. Возьму для примера уже готовый сайт, тот, что мы с вами делали, когда изучали основы HTML.
Разобьем этот сайт на такие файлы:
Итак, создайте папку «Experiment» на локальном сервере (или на хостинге). Там будет новый сайт для эксперимента.
В папке «Experiment» создайте еще одну папку под названием «include». Как вы поняли, в папке «include» будут храниться файлы для подключения («menu.php», «heder.php» и «footer.php»).
Теперь зайдите в папку «include» и создайте там файл «menu.php» вот с таким кодом:
<tr bgcolor="#795548"> <td colspan="2"> <a href="index.php">ГЛАВНАЯ</a>     <a href="obo-mne.php">ОБО МНЕ</a>     <a href="uslugi.php">УСЛУГИ</a>     <a href="obratnaja-svjaz.php">ОБРАТНАЯ СВЯЗЬ</a> </td> </tr>
Создайте еще один файл под названием «heder.php» и вставьте вот такой код:
<tr bgcolor="#fff"> <td width="400"><center><img src="image/logo.png"></center></td> <td> <center> <h1><font size="+5">StepkinBLOG.RU</font></h1> <p><font size="+2" color="#666">обучение основам HTML</font></p> </center> </td> </tr>
Создайте еще один файл под названием «footer.php» и вставьте вот такой код:
<tr bgcolor="#795548"> <td colspan="2"><font color="#fff"> StepkinBLOG.RU © 2016</font></td> </tr>
Теперь выходим из папки «include» и создаем главный файл «index.php»
(внимание: не «index.html», а именно «index.php» ) вот с таким кодом:
<html> <head> <title> Практика по основам HTML на StepkinBlog.ru</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body background="image/fon.jpg" link="#00FF00" alink="#FFFF00" vlink="#EEE9E9"> <center> <table border="0" cellpadding="20" cellspacing="0" width="1200"> <!-- menu <tr bgcolor="#795548"> <td colspan="2"> <a href="index.html">ГЛАВНАЯ</a>     <a href="obo-mne.html">ОБО МНЕ</a>     <a href="uslugi.html">УСЛУГИ</a>     <a href="obratnaja-svjaz.html">ОБРАТНАЯ СВЯЗЬ</a> </td> </tr> --> <? include_once 'include/menu.php'; ?> <!-- heder <tr bgcolor="#fff"> <td width="400"><center><img src="image/logo.png"></center></td> <td> <center> <h1><font size="+5">StepkinBLOG.RU</font></h1> <p><font size="+2" color="#666">обучение основам HTML</font></p> </center> </td> </tr> --> <? include_once 'include/heder.php'; ?> <tr bgcolor="#fff"> <td colspan="2"> <hr> <h2>ГЛАВНАЯ</h2> <p>Здесь будет текст для главной страницы</p> </td> </tr> <!-- footer <tr bgcolor="#795548"> <td colspan="2"><font color="#fff"> StepkinBLOG.RU © 2016</font></td> </tr> --> <? include_once 'include/footer.php'; ?> </table> </center> </body> </html>
Подключение файлов я сделал в строках №19, №32, №38.
Обратите внимания, что я просто закомментировал участки кода, которые выводятся через «include_once», просто для понимания, а так комментарии можно убрать, код сократится и файл станет легче:
<html> <head> <title> Практика по основам HTML на StepkinBlog.ru</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body background="image/fon.jpg" link="#00FF00" alink="#FFFF00" vlink="#EEE9E9"> <center> <table border="0" cellpadding="20" cellspacing="0" width="1200"> <!-- menu--> <? include_once 'include/menu.php'; ?> <!-- heder --> <? include_once 'include/heder.php'; ?> <tr bgcolor="#fff"> <td colspan="2"> <hr> <h2>ГЛАВНАЯ</h2> <p>Здесь будет текст для главной страницы</p> </td> </tr> <!-- footer --> <? include_once 'include/footer.php'; ?> </table> </center> </body> </html>
Теперь дублируйте этот код для остальных файлов «obo-mne.php», «uslugi.php», «obratnaja-svjaz.php», только меняя текст заголовка и самого контента.
Вот и все, смотрите и проверяйте.
Для полного счастья (чтобы отображались картинки) не забудьте создать папку «image» с картинками.
Подписывайтесь на обновление блога, чтобы не пропустить вкусных уроков по основам PHP.
Перекопировал всё с вашего сайта notepad++ и ничего не работает. Не могу понять почему.
Ответить
28 января, 2020 at 17:25
может то что Вы хотите проверить файл php. А он работает только на сервере. Залейте файл на хостинг или установите на домашний комп локальный сервер и проверяйте...
Ответить
У меня код работает, только если подключение записать вот так:
Видимо, php в данном случае писать обязательно.
Ответить
12 ноября, 2021 at 14:44
да, это зависит от версии php или настроек хостинга
Ответить