Изработка на сайт с PHP и HTML, Вграждане на PHP в HTML

Накратко казано, съвременните динамични уеб сайтове се нуждаят от динамични програмни езици за Web, за да могат да изпълняват своите функции и предназначения. Най-разпространение език при изработка на сайт днес е компютърния език PHP, лежащ върху Oepn Source платформата Apache. Като начало, ще запознаем читателите с началните стъпки при програмирането на един уеб сайт – вграждането на програмния код на PHP езика във форматиращият език, използван в уеб дизайн практиките HTML.

При вграждането на PHP код в HTML потока се използва тагът <?php … ?>, а ако е необходимо да се отпечата стойност в HTML потока, в тага <?php … ?> се добавя конструкцията echo, която може да се използва и като езикова конструкция и като функция:

<?php echo “<p>Здравейте !</p>”; ?>

Разгледаните тагове имат и своите кратки форми – съответно <? … ?> и <?= … ?> . Тяхната употреба обаче не е препоръчителна, защото те действат коректно само когато конфигурационният параметър short_tags има стойност on, което не е гарантирано при всеки сървър. Още по-неприятен проблем създава фактът, че форматът на тага <? … ?> съвпада с XML формата, което може да доведе до конфликти с използването на XML.
При вграждането на PHP код в HTML потока обаче не бива да се забравя основният принцип: разделяне на логиката от съдържанието. Пример:

<body>
<h2>Основно меню</h2>
<?php if( $_SESSION['username'] == ‘admin’ ) { ?>
<a href=”admin.php”>Акаунти</a>
<?php }else{ ?>
<a href=”users.php”>Начало</a>
<?php } ?>
</body>

Тук логиката, която решава дали да генерира административен или потребителски линк, е смесена със съдържанието на линковете. Това е лош стил на програмиране; по-доброто р-е в случая е да се отпечатва само 1 пром., чието съдържание се определя от логика извън HTML потока:

<body>
<?php
$link = ‘<a href=”users.php”>Начало</a>’;
if( $_SESSION['username'] == ‘admin’ ) {
$link = ‘<a href=”admin.php”>Акаунти</a>’;
}
?>
<h2>Основно меню</h2>
<?php echo $link; ?>
</body>

Тук вече разделението между логика и съдържание е налице. Така кодът е много по-лесен за разчитане и манипулиране.

Ако искате професионален уеб сайт, то трудно бихте се разминали без форми и тяхната обработка.

Обработка на заявки

За да може един PHP скрипт да обработи отправената към него HTTP заявка е необходимо да бъдат извлечени вкл. в нея данни. Необходими са и редица допълнителни данни – за текущата сесия, бисквитките, променливите от обкръжението и др. Всички тези данни са достъпни за PHP програмиста през автоматично дефинираните суперглобални масиви (super-globals):
$GLOBALS – съдържа вс. глобално деф. PHP пром., включ. и др. супер-глобални масиви;
$_SERVER – съдържа хедърите, изпратени от браузъра в текущата заявка, както и някои стойн. от сървъра: пътят до DOCUMENT_ROOT, текущо изпълняваният скрипт, IP на клиента и др.;
$_GET – съдържа имената и стойн. на всички парам. от GET заявката (URL);
$_POST – съдържа имената и стойностите на всички параметри от POST заявката ;
$_COOKIE – съдържа всички бисквитки, изпратени от браузъра.;
$_FILES – съдържа файловете, изпратени от браузъра с помощта на форма с file upload компонент (компоненти);
$_ENV – съдържа пром. от обкръжението на ОС – OS, PATH, TEMP и др;
$_REQUEST – съдържа заедно всички пром. от масивите $_GET, $_POST, и $COOKIE;
$_SESSION – съдържа всички промелниви, текущо регистрирани в сесията. Техният брой и съдържание се променят според логиката на приложението, защото програмистът може да регистрира и премахва променливи от сесията по всяко време.

Освен в масива на сесията, динамични промени могат да се правят и в останалите масиви, но тази възможност се използва в по-редки случаи.

Включване на хедъри в отговора

При оформянето на отговора на получената заявка, сървърът включва необх. хедъри (content-type, content-length и т.н. ) според съдържанието на документа, който ще бъде върнат. Възможно е и явното задаване на стойности за всеки хедър, посредством ф-ята header:

header(“Location: http://dir.bg”);

Като параметър на функцията трябва да се подаде коректно формиран HTTP хедър – това е отговорност на програмиста. Разбира се изпратените хедъри трябва да отговарят по смисъл на съдържанието на документа, който ще бъде подаден обратно на клиента. Следващият пример илюстрира изпращането на отговор, съдържащ не HTML документ, а графично изображение:

header(“Content-type: image/jpeg”);
$img = imagecreatefromjpeg(“picture.jpg”);
imagejpeg($img);
imagedestroy($img);

При това в примера не трябва да се генерира ни-какво друго съдържание, дори <html> таг, за да може picture.jpg да бъде коректно изобразена.
Изпращането на хедъри трябва да се осъществи преди да започне генерирането на съдържание в тялото на отговора, т.е. преди да се отпечата каквото и да било в страницата, в противен случай се стига до Headers already sent error. Това ограничение може да се заобиколи, ако в конфигурационния файл php.ini се включи директивата output_buffering = On. Да се разчита на това обаче не е добра идея, защото ако PHP скриптът бъде публикуван на сървър, където тази директива не е включена, скриптът няма да работи.

Related posts:

  1. Уеб дизайн с картинки и Flash анимации Картинките и анимациите във вашият сайт са неизбежна част за оформлението на свежият и предпочитан от мнозина дизайн като това не е тайна за никого. В днешни дни твърде много...

Comments are closed.