Привет всем и это последняя статья из цикла по созданию сокращателя URL . В прошлой статье мы создали класс для работы, а сегодня нам осталось лишь его использовать по назначению.

Создаём сокращатель URL. Часть 3.

Привет всем и это последняя статья из цикла по созданию сокращателя URL. В прошлой статье мы создали класс для работы, а сегодня нам осталось лишь его использовать по назначению.

Откроем файл shorten.php и пропишем следующее:

<?php
  session_start();
  require_once "classes/shortener.php";

  $s = new Shortener();

  if(isset($_POST['url'])) {
   $url = $_POST['url'];

   if($code = $s->makeCode($url)) {
    $_SESSION['feedback'] = "Готово! Вот ваша ссылка: <a href='http://localhost/test/$code'>http://localhost/test/$code</a>";
   } else {
    $_SESSION['feedback'] = "Ошибка! Возможно, некорректный URL?";
   }
  }
  header('Location: index.php');
?>

Теперь откроем файл index.php с нашей разметкой и немного его изменим:

<?php
  session_start();
?>
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Сокращатель URL</title>
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
  <div class="container">
   <h1 class="title">Сокращатель URL</h1>
<?php
  if(isset($_SESSION['feedback'])) {
   echo "<p>".$_SESSION['feedback']."</p>";
   unset($_SESSION['feedback']);
  }
?>
   <form action="shorten.php" method="post">
    <input type="url" name="url" placeholder="Введите URL" autocomplete="off">
    <input type="submit" value="Сократить">
   </form>
  </div>
</body>
</html>

Дальше redirect.php

<?php
  require_once "classes/shortener.php";

  if(isset($_GET['code'])) {
   $s = new Shortener();
   $code = $_GET['code'];
   if($url = $s->getUrl($code)) {
    header('Location: {$url}');
    exit();
   }
  }

  header('Location: index.php');
?>

Всё, что нам осталось, это файл .htaccess

RewriteEngine on
RewriteRule ^([a-z0-9]+)$ redirect.php?code=$1

Код сам говорит за себя, но всё-таки немного поясню. В файле shorten.php мы подключаем наш класс, создаём его объект и проверяем наличие url. Если он есть, то записываем в переменную, которую передаём в метод makeCode. Если метод makeCode возвращает код, то записываем в сессию нашу ссылку, иначе записываем туда ошибку, а в конце делаем редирект на главную страницу.

В файле index.php мы начинаем сессию и проверяем её наличие. Если она есть, то выводим значение и уничтожаем её.

В файле redirect.php мы проверяем наличие get параметра с кодом. Если есть, то создаём объект нашего класса, записываем код в переменную $code и передаём её методу getUrl. Если метод getUrl возвращает URL, то перекидываем туда и завершаем скрипт, иначе же перекидываем на главную страницу.

Сейчас, чтобы всё работало, нам нужно передавать ссылку такого вида:
http://localhost/test/index.php?code=1jsch/
что не очень-то удобно. Чтобы это исправить и сделать ЧПУ ссылку, мы прописываем регулярное выражение в файл .htaccess.

Вот и всё. Мы закончили создание нашего сокращателя URL. Хоть он получился и несложным, но, думаю, вы многое узнали и поняли, сможете ли написать его сами. Если нет, то значит вам ещё нужно тренироваться в написании php скриптов. Удачи!