2. Съдържание
1.Включване на файлове
2.Избягване на повторенията
3.Примерен сайт
Разглеждат се начините за изграждане
на динамично съдържание и
многократното използване на един и
същи код в сайтовете.
11.12.14 2
3. 1. Включване на
файлове
Функцията - include():
приема като параметър пътят (абсолютен или
относителен) до файла, който искаме да включим;
включеният чрез include() файл като код, се намира
на реда, в който се намира функцията - "вгражда" в
тялото на текущия документ;
всички променливи, които са дефинирани до
появата на функцията ще са достъпни и за кода на
включени файл;
файла се загражда с - ”” ;
Ако извикате PHP файл от отдалечен сървър,
трябва да сте сигурен, че скриптът може да бъде
изпълнен там.
11.12.14 3
4. Пример_1
../uroci/t4/indext41.php
<HTML>
<BODY>
<h2>
<?php // Това е index41.php
$name="Иван";
$ip=getenv('REMOTE_ADDR')
11.12.14 4
;
include ("content41.php");
?>
</h2>
</BODY>
</HTML>
../uroci/t4/content41.php
<?php // Това е content41.php
echo "Здравейте, $name!
<br>Вашият IP адрес е $ip";
?>
Двата файла са в една
директория
5. Особености
Пътищата до
даден файл
могат да са
абсолютни и
относителни;
Абсолютен е
пътят от
коренната
директория на
системата, а
относителен - от
единия файл до
другия.
Когато файла е в друга
директория:
include ("../files/content.php");
Или
include
("/home/www/files/content.php");
Когато е на отдалечен сървър
include ("http://www.server.com/content.php");
11.12.14 5
6. Функцията- require ()
според официалната документация на PHP, това не
е функция, а езикова конструкция;
последица от този факт е, че не връща стойност -
т.е. не можете да проверите дали включването на
допълнителния файл е било успешно или не;
кодът първо се обработва (парсва) и чак след това
изпълнява.
Важна е следната особеност - ако имате грешка на
последния ред от кода си, той може да не се
изпълни изобщо, нито ред от него, защото може да
се появи грешка при обработването - Parse error .
11.12.14 6
7. Пример_2 –
включваният файл не съществува
../uroci/t4/indext42.php
<HTML>
<BODY>
<h2>
<?php // Това е index42.php
echo "Поздрав : <br>";
$name="Иван";
$ip=getenv('REMOTE_ADDR');
include ("content.php"); //
файлът не съществува
echo "<h1>Добре дошъл в сайта!
</h1> <br>";
?>
</h2>
</BODY>
</HTML>
- Изпълнението продължава
../uroci/t4/indext42_r.php
<?php // Това е index42_r.php
echo "Поздрав : <br>";
$name="Иван";
$ip=getenv('REMOTE_ADDR');
require("content.php"); // файлът
не съществува
echo "<h1>Добре дошъл в сайта!
</h1> <br>";
?>
- Изпълнението спира
11.12.14 7
8. 2.Избягване на
повторенията
При по-сложни включвания на файлове
един в друг, може да се получи
неколкократно повтаряне на кода на един
и същи файл;
Това най-често води до грешки - или в
обработката или в логиката на изпълнението;
Предотвратяване чрез:
include_once()
и
require_once().
11.12.14 8
9. Изпълними файлове
Така скриптът ще се изпълни на
отдалечения сървър, а в нашия
файл ще се включи резултатът
от това изпълнение - в случая
изображение на банер и линк
към съответен сайт.
Съществува разликата между включване на файл
от отдалечен сървър и на файл от локалната
машина:
да включим в текущата страница perl скрипт за банерна
ротация - banner.cgi;
Ако той се намира на друг сървър, можем да направим
включването така:
<?php
// Включване на банер
include ("http://www.server.php/banner.cgi?
page=$_SERVER[‘PHP_SELF’]");
echo "<br>Добре дошъл в сайта!<br>";
?>
11.12.14 9
10. При опит по този
начин да извикаме
локален файл,
резултатът ще бъде
друг.
../uroci/t4/ex43.php
<?php
// Включване на банер
$page=$_SERVER[‘PHP_SELF’];
include("cgi.cgi");
echo "<br>Добре дошъл в сайта!<br>";
?>
При изпълнението - на екрана ще
се изпише изходния код на CGI
скрипта, а не резултатът от
неговото изпълнение
11.12.14 10
11. Функцията -- virtual () --само
за Apache
По този начин можете да изпълнявате различни видове файлове в
PHP скриптовете си, но трябва да запомните, че не можете
да използвате virtual () за PHP файлове.
../ login/ex44.php
<?php
// Включване на банер –изпълнява се само със сървър Apache
//$page=$_SERVER[‘PHP_SELF’];
echo "това(ок) е от файла cgi.cgi:-----------> ";
virtual("cgi.cgi");
echo "<br>Добре дошъл в сайта!<br>";
?>
//ако банерната система е написана на PHP, то използването на virtual
() ще върне грешка – за това трябва да използвате include () или
require ()
11.12.14 11
12. 3.Примерен сайт
За да илюстрираме на практика използването на функциите:
Нека съставим малък сайт.
Сайтът ще се състои от няколко страници с еднакъв външен
вид - т.е. еднакви горна и долна част, както и еднакво
навигационно меню.
Сайтовете, правени по тази схема могат да се управляват
лесно и са приятелски към потребителите, защото не им
поднасят "изненади" на всяка страница - като променено
местоположение на менюто или различна цветова схема.
Страниците в примерния сайт ще се състоят от 4 части -
header.html, footer.php, menu.php и съответното съдържание
за всяка от тях.
11.12.14 12