Опубликован: 22.10.2016 | Уровень: для всех | Доступ: платный
Лекция 2:

Редактор сайта

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Форма авторизации. Шаблоны HTML

В нашем текущем файле index4.php при выполнении некоторого условия (наличие параметра "edit") нам нужно будет выводить уже не данные из mysql-таблицы, а совсем другую страницу (листинг 2.1 пример 2.1):

<?php
//...
$page = <<<PAGE
<!DOCTYPE html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Авторизация</title>
	<link rel="stylesheet" href="site.css" type="text/css">
	<script type="text/javascript" src="site.js"></script>
</head>
<body>
	<div class="page">
		<div class="body">
			<form class="auth" action="" method="post">
		<p>Имя: <input name="user"></p>
		<p>Пароль: <input name="password" type="password"></p>
		<p><input type="submit" value="Отправить"></p>
	</form>
		</div>
</body>
PAGE;
print $page;
?>
Листинг 2.1.

Сличив, однако, один из первых наших вариантов (листинг 1.6 пример 1.6) с кодом 2.1 пример 2.1, мы увидим, что наконец настало удачное время выделить тот самый заветный "повторяющийся кусок кода" в отдельную функцию (которую можно даже назвать "шаблоном") и открыть тем самым следующий этап работы по созданию CMS. Вы видите, что этот кусок начинается со слова DOCTYPE и заканчивается примерно на "/head>". На самом деле он заканчивается ниже, но мы не будем пока разрывать элементы HTML (хотя бы чтобы не запутаться).

Есть ещё одна незадача: внутри повторяющегося кода HTML есть несовпадение: слово "Авторизация" вместо слова "Астрология". Незадачу решаем добавлением в новую функцию параметра:

<?php
//...

/**** функции *******/

//...
function _head($title) {
	return <<<TPL
<!DOCTYPE html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>{$title}</title>
	<link rel="stylesheet" href="site.css" type="text/css">
	<script type="text/javascript" src="site.js"></script>
</head>
TPL;
}

Не забудем использовать новую функцию во фрагменте вывода основного шаблона страницы:

<?php
//...
$head = _head($row['title']);
$page = <<<PAGE
{$head}
<body>
	<p><img src="files/{$row['img1']}" />{$row['html1']}</p>
	<p><img src="files/{$row['img2']}" />{$row['html2']}</p>
</body>
PAGE;
print $page;
//...

Результат - в файле из предыдущей главы: http://nichtig.ru/index4.php?code

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Михаил Гутентог
Михаил Гутентог

Этот курс ( Практикум по разработке CMS ) создавался, когда у PHP была версия 5.3 или 5.4. Со временем какие-то функции PHP устаревают (mysql, each), какие-то начинают работать по-другому (empty). Пожалуйста, следите за изменениями в PHP по сайту php.net!

Александр Мельников
Александр Мельников

Изучаю курс "Практикум по созданию CMS" в листинге 4.3

$n = count($_GET); if ($n > 0) { $param = each($_GET); // самое простое: пропускаем только первый параметр if ($n > 1 || !isset($valid[$param['key']])) { _404(); }

При попытке просмотра в браузере получаю ошибку: Deprecated: The each() function is deprecated.  И не пойму как исправить ситуацию.

Елена Суханова
Елена Суханова
Россия, Москва, МИЭТ, 2011
Анастасия Щитова
Анастасия Щитова
Россия, Москва, ФГБОУ ВО "Московский государственный юридический университет имени О.Е. Кутафина (МГЮА)", 2016