<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

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

Создаём сокращатель 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 скриптов. Удачи!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (7):

Nats Nats 08.02.2015 15:30:10

Здравствуйте. Полезная статья, спасибо! Только возник вопрос. Когда ссылка генерируется, то при клике на неё попадаешь на локалхост, как сделать так, чтобы переходя по ссылке сгенерированной пользователь переходил куда задумано? https://yadi.sk/i/4D8InSLqeYB2w

Ответить

alexandrdante alexandrdante 08.02.2015 15:54:41

выучить php,для начала =) А иначе и лезть не стоит. Это ведь не сервис для сокращения ссылок создаётся,а просто сокращатель ссылок. В коде localhost замените на нужный вам домен

Ответить

Nats Nats 08.02.2015 16:00:40

В том то и дело, что пробовал менять на тот домен, где этот скрипт, но все равно неверно! Если это просто сокращатель ссылок, то это значит, что он не должен работать?))

Ответить

alexandrdante alexandrdante 08.02.2015 17:27:39

а что не верно? не переадресовывает на сокращённую ссылку?)

Ответить

Nats Nats 08.02.2015 17:28:13

Да

Ответить

mininvit mininvit 16.08.2016 12:30:50

У меня тоже такая проблема. Все скопировал как тут, в бд все попадает, а редеректить не хочет. Это как всегда Михаил ошибся)

Ответить

chenage chenage 26.12.2020 18:26:01

Спасибо за статью. Хочу отметить несколько моментов. Если ссылки добавляются в базу данных, но не работает на перенаправление и перенаправляет на {$url}, то необходимо заменить скобочки на 8 строке в redirect.php То есть, чтобы было не header('Location: {$url}'); а header("Location: {$url}"); Так же, если надо чтобы перенаправляло при вводе неверного id не на index.php, а просто на главную страницу сайта, то достаточно просто поменять в том же redirect.php 13 строку с header('Location: index.php'); на header('Location: .');

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.