Storm-coder
7/18/2017 - 5:24 PM

Лабораторная работа 3. "Создание и чтение журнала посещения страниц". (уровень2, рабочая тетрадь, стр. 40)

Лабораторная работа 3. "Создание и чтение журнала посещения страниц". (уровень2, рабочая тетрадь, стр. 40)

<?
			/*Создание и чтение журнала посещения страниц*/
	define('PATH_LOG', 'path.log'); // Имя файла журнала. define() - Определяет именованную константу во время выполнения (константа и её значение) / Константа на тот случай, если я захочу поменять имя файла
	include 'inc/log.inc.php';
			/* / Создание и чтение журнала посещения страниц*/
	include 'inc/headers.inc.php';
	include 'inc/cookie.inc.php';
?>

<!DOCTYPE html>
<html>
	<head>
		<title><?= $title?></title>
		<meta charset="utf-8" />
		<link rel="stylesheet" type="text/css" href="inc/style.css" />
	</head>
	<body>

		<div id="header">
			<!-- Верхняя часть страницы -->
			<img src="img/logo-php.png" width="187" height="29" alt="Наш логотип" class="logo" />
			<span class="slogan">обо всём сразу</span>
			<!-- Верхняя часть страницы -->
		</div>

		<div id="content">
			<!-- Заголовок -->
			<h1><?= $header?></h1>
			<blockquote>
			<?php //Куки. Приветствие пользователя и время последнего посещения (работа с куки в файле inc/cookie.inc.php):
			if ($visitCounter == 1) { // если пользователь зашел первый раз
				echo "Спасибо, что зашли на огонек<br>";
			}else { // если пользователь зашел не первый раз
				echo "<h1>Вы зашли к нам {$visitCounter}-й раз</h1><br> Последнее посещение: {$lastVisit}";
			}
			?>
			</blockquote>
			<!-- / Заголовок -->
			<!-- Область основного контента -->
			<?php
				include 'inc/routing.inc.php';
			?>	
			<!-- Область основного контента -->
		</div>
		<div id="nav">
			<!-- Навигация -->
			<h2>Навигация по сайту</h2>
			<ul>
				<li><a href='index.php'>Домой</a></li>
				<li><a href='index.php?id=contact'>Контакты</a></li>
				<li><a href='index.php?id=about'>О нас</a></li>
				<li><a href='index.php?id=info'>Информация</a></li>
				<li><a href='test/index.php'>Он-лайн тест</a></li>
				<li><a href='index.php?id=gbook'>Гостевая книга</a></li>
				<li><a href='eshop/catalog.php'>Магазин</a></li>
				<li><a href="index.php?id=log">Журнал посещений</a></li> <!-- id=log - уже есть в routing.inc,php -->
				<!-- обработчик в headers.inc.php -->
			</ul>
			<!-- Навигация -->
		</div>
		<div id="footer">
			<!-- Нижняя часть страницы -->
			&copy; Супер-мега сайт, 2000 &ndash; <?= date('Y')?>
			<!-- Нижняя часть страницы -->
		</div>
	</body>
</html>
<?
	// Создание и чтение журнала посещения страниц (файл журнала посещений)
$dt = time(); // текущая временная метка (timestamp)

$ref = $_SERVER['HTTP_REFERER']; // присвоить переменной значение серверной переменной 'HTTP_REFERER' ( http://php-lessons/borisov_level-2/inc/log.inc.php)
// HTTP_REFERER - Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя (откуда пришел пользователь, т.е. с какой страници).

$page = $_SERVER['REQUEST_URI']; // присвоить переменной значение серверной переменной 'REQUEST_URI' (куда пришел пользователь), текущая страница
// REQUEST_URI - URI, который был передан для того, чтобы получить доступ к этой странице (приходит id страници, например, id=log)

$ref = pathinfo($ref, PATHINFO_BASENAME);
// pathinfo — Возвращает информацию о пути к файлу (вот тебе путь, вытащи из него кусок (без http://php-lessons/borisov_level-2/), чтоб строка была поменьше, нет смысла каждый раз писать http... ). Т.е. выведи мне имя файла и id (index.php?id=log)

$path = "$dt | $ref | $page\n"; // строковая переменная, содержащая значения переменных (для хранения логов в папке 'path.log')
	// можно было бы сделать массив (сеарилизовать массив):
// $path = serialize(['dt'=>$dt, 'ref'=>$ref, 'page'=>$page]); // а в файле view.log.php вместо строки list()... распаковали бы массив: $arr = unserialize($line);

file_put_contents("log/".PATH_LOG, $path, FILE_APPEND); // PATH_LOG = path.log (пишем строку в файл 'path.log')
// FILE_APPEND - дозапишет в конец файла
// папку "log" создал самостоятельно
1500469323 | index.php?id=log | /borisov_level-2/index.php?id=log
1500469326 | index.php?id=log | /borisov_level-2/index.php
1500469327 | index.php | /borisov_level-2/index.php?id=log
<?
if (is_file('log/'.PATH_LOG)) { // существует ли файл журнала посещений 'path.log' (PATH_LOG = path.log)
	$log = file('log/'.PATH_LOG); // получить все содержимое файла в виде массива строк (можно написать проверку, массив ли там? - if (is_array($log)) )


		echo "<ol>";

		foreach ($log as $line) {
			list($dt, $ref, $page) = explode("|", $line); // содержимое файла 'path.log' разбыто разделителем "|" (разбить массив $line по переменным $dt, $page, $ref)
			$dt = date('d:m:Y H:i:s', $dt); // $dt - timestamp
			echo <<<OUT
			<li>
				&nbsp	[$dt]: $ref --> $page
			</li>
OUT;
		}

		echo "</ol>";

}

// &nbsp - пробел (спецсимвол html)