Изучаем PHP 7. №27. Одностраничный мини сайт с админкой и авторизацией

Изучаем PHP 7. №27. Одностраничный мини сайт с админкой
Сегодня попробую показать как работает авторизация на сайте и управление содержимым сайтом пока что без базы данных. Для этого нам понадобятся те знания которые я уже описал в предыдущих статьях, плюс изучим новую функцию, позволяющую выводить на экран содержимое текстового файла. Она выглядит так:

<?php echo file_get_contents('bd.txt'); ?>

В этом уроке я вообще не зацикливался на дизайне или хоть каком-то внешнем виде, поэтому все выглядит довольно аскетично, но нам ведь главное понять принцип.
Итак, вспомним работу с файлами и сессии, операторы ветвления и работу с формами, глобальные методы $_POST и $_GET. Все это уже нам знакомо.


Скрипт будет состоять из таких файлов, которые вы можете создать заранее:
index.php — главная страница сайта
admin.php — страница редактирования контента
login.php — страница авторизации
functions.php — функции
config.ini — файл конфигурации, где хранятся логин и пароль
bd.txt — текст

Вот так будет выглядеть наш сайтик:
Изучаем PHP 7. №27. Одностраничный мини сайт с админкой
————————
Это была главная страница, а вот так выглядит админка и форма входа:

Изучаем PHP 7. №27. Одностраничный мини сайт с админкой
————————
Изучаем PHP 7. №27. Одностраничный мини сайт с админкой

Скрипт будет ну очень простой. Но при этом он покажет весь ужас PHP. Поскольку я писал его на коленке, то код ужасен, но работает. И это главная проблема PHP — он располагает к говнокоду. Но пока что не придумали чего-то столь же гибкого, простого и встраиваемого, так что будем пользоваться.
Итак, главная страничка — index.php:

<?php 
//подключаем сессии
session_start();
//подключаем функции
include_once('functions.php'); 
?>


<!DOCTYPE html>
<html>
<head>
  <title>Мой маленький сайт</title>
</head>
<body>
<h1>Мой маленький сайт</h1>

<!-- Выводим данные с файла -->
<p><?php echo file_get_contents('bd.txt'); ?></p>

<!-- Проверяем сессию -->
<?php 
if($_SESSION['login'] == 'OK'){
  echo '<a href="/admin.php">Редактировать</a> | <a href="/admin.php?logout">Выйти</a>';
}else{
  echo '<a href="/login.php">Войти</a>';
}
 ?>

</body>
</html>

functions.php:

<?php 
//-------------------------------------------------------
//функция отображающая данные из bd.txt
//-------------------------------------------------------
function view(){
  $file = fopen('bd.txt','r');
  if($file){
    while(!feof($file)){
      $read = fgets($file);
      return $read;
    }
  }
  	fclose($file);
}


//--------------------------------------------------------
//функция редактирующая данные в bd.txt
//--------------------------------------------------------
function update(){
  echo "<h2>Форма редактирования данных</h2>";
  $file = view();
  echo '
  <form method="post">
  <textarea name="text" rows="25" cols="100" placeholder="Текст файла">'.$file.'</textarea><br>
  	<input type="submit" name="update" value="Сохранить">
  </form>
  ';

  if($_POST['update']){
    $text = $_POST['text'];
      	$file = fopen('bd.txt', 'w');
      	//Записываем строку в файл
      	$write = fwrite($file, $text);
    	fclose($file);
    	echo "<br>Данные успешно сохранены. <a href='/'>Посмотреть</a>";
  	}
}

//--------------------------------------------------------
//функция входа
//--------------------------------------------------------
function login($login,$password){
  $config = parse_ini_file('config.ini', true);
  $alogin = $config['login'];
  $apass = $config['password'];
  if($alogin == $login && $apass == $password){
    $_SESSION['login'] = 'OK';
    echo "Вы авторизованы! Перейти в <a href='/admin.php'>Админку</a>";
  }else{
    echo "Логин или пароль не верные.";
  }
}
 ?>

admin.php:

<?php 
session_start();
include_once('functions.php');

if($_SESSION['login'] == 'OK'){

  if(isset($_GET['logout'])){
    unset($_SESSION['login']);
    echo '<br><a href="/">На главную</a> | <a href="/login.php">Войти</a>';
  }
  else{
    update();
    echo '<br><a href="/">На главную</a> | <a href="/admin.php?logout">Выйти</a>';
  }
  
}else{
  echo "Вы НЕ авторизованы! <a href='/login.php'>Войти</a>.";
}

?>

login.php:

<?php 
session_start();
include_once('functions.php');
?>
<center>
<form method="post">
  <input type="text" name="login">
  <input type="password" name="password">
  <input type="submit" name="ok" value="Войти">
</form>

<?php
if($_POST['ok']){
  $login = $_POST['login'];
  $password = $_POST['password'];
  login($login,$password);
}
?>
</center>

config.ini:

login = 'admin'
password = '12345'

bd.txt:

<p><img alt="" src="https://pp.vk.me/c635101/v635101389/17be6/LJTNoXe1Sws.jpg" style="float:left; height:169px; margin-left:10px; margin-right:10px; width:300px" />Что в этом мире дороже всего? Оказывается, не золото и не платина (их, хотя и считают тройскими унциями, цена за грамм драгоценных металлов не так уж и высока, в зависимости от колебания общемирового курса: золото, в среднем, обойдется в $39, а платина - в $53). Мы составили список самых дорогих веществ и соединений, и их цену за грамм.<br /><br />1. Плутоний - $4 000<br />Как известно, человечество без этого радиоактивного металла жить уже не может. Именно он отапливает наши дома, взрывает наши города и запускает в космос наши ракеты. То есть широко используется в производстве ядерного оружия, ядерного топлива для атомных реакторов, и в качестве источника энергии для космических аппаратов. Получение плутония из урановой руды - дело затратное, но необходимое.<br /><br />2. Солирис - $17 000<br />Самое дорогое лекарство на Земле, которое лечит тех, кто страдает редким имунным заболеванием - пароксизмальной ночной гемоглобинурией (это когда красные кровяные тельца во время ночного сна разрушаются), граммами, конечно не продается. Курс на год стоит $409 500. И хотя таких людей на свете немного - несколько десятков тысяч, доход фармацевтической компании Alexion Pharmaceutical за первый год составил более $300 млн.<br /><br />3. Тритий - $30 000<br />Радиоактивный сверхтяжелый водород, крайне популярный в коммерческом использовании, скажем, им покрывают стрелки наручных (и не только, часов) или помещают в герметичные брелки, чтобы светились в темноте, и можно было понять, сколько времени, или найти ключи, если на станции закончился плутоний и электричество отключили.<br /><br />4. LSD - около $30 000<br />Диэтиламид лизергиновой кислоты известный психотропный наркотик, который отправляет человека в разноцветный трип. Эксперименты с расширением сознания были крайне популярны во времена хиппи, так же использовался наркотик в тайных экспериментах ЦРУ. Так как до начала 90-х в список запрещенных веществ в России он не входил, то его легко можно было приобрести.<br /><br />5. Алмаз - около $42 000<br />Лучший друг любой девушки, бриллиант - самое твердое вещество на Земле, бывает стольких видов и оттенков, что с ценой определиться нелегко. Конечно, драгоценные камни, как и металлы, граммами не меряют. Для них существует своя мера веса - карат: 0,2 грамма. Средняя цена карата прозрачного алмаза - $8000, голубой стоит подороже - около $9500, желтые и розовые - дешевле, приблизительно $6000.<br />

 

 
——————
http://13stroy.ru/load/dizajn_uchastka/6

4 идей о “Изучаем PHP 7. №27. Одностраничный мини сайт с админкой и авторизацией

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.