Анемичный link php. Простой скрипт для сокращения URL-адреса

СКАЧАТЬ ИСХОДНИКИ

Мне нравится решать проблемы с помощью маленьких и компактных скриптов. Чем меньше кода нужно написать, тем лучше. Недавно у меня в очередной раз появился шанс это сделать.

Эта проблема может быть решена с помощью скрипта для сокращения URL-адресов. Уже довольно давно существуют сервисы, предоставляющие такие возможности, но они не без недостатков. Вот некоторые из них:

  • Зависимость от внешнего сервиса – когда он не работает, ссылки тоже оказываются недоступными. Еще хуже, если сервис закрывается – сами понимаете к чему это приведет;
  • Вся статистика отслеживается сторонними сервисами;
  • Обычно, не разрешается изменять вид укороченных ссылок;
  • Некоторые сервисы позволяют выбрать свои псевдонимы, но большинство назначает их автоматически.

Итак, задача состоит в написании собственного PHP-скрипта, который был позволил решать задачу, описанную выше!

Идея

Если скрипт создается исключительно для собственного пользования, то можно опустить создание таких вещей, как регистрация пользователя и административная панель. Ниже перечислены возможности, которыми должен обладать наш будущий скрипт:

  • Короткие ссылки будут иметь вид http://example.com/l/short-link . Посещение данного URL-адреса будет переадресовываться на реальный адрес;
  • Весь скрипт будет располагаться в единственном файле – index.php, без внешних зависимостей;
  • Панель администратора с инструментами добавления и редактирования ссылок отсутствует. Все будет управляться с помощью простого текстового файла, расположенного на сервере, который очень легко отредактировать;
  • Идентификаторы не будут автоматически присваиваться ссылкам – вы сами будете вводить псевдоним.

Эти пункты упростят наш будущий скрипт. Чтобы сделать все еще более понятным, я решил хранить ссылки в INI-файле, потому что его легко отредактировать и PHP имеет их встроенную поддержку через функцию parse_ini_file (это убережет нас от необходимости читать содержимое файла и парсить его вручную, к тому же эта функция работает очень быстро).

INI-файл

INI-файл выглядит так:

links.ini

Реализация

Наш PHP-скрипт гениально прост:

index.php

$links = parse_ini_file("links.ini"); if(isset($_GET["l"]) && array_key_exists($_GET["l"], $links)){ header("Location: " . $links[$_GET["l"]]); } else{ header("HTTP/1.0 404 Not Found"); echo "Unknown link."; }

Скрипт ожидает получения псевдонима в массиве $_GET[‘l’] , который выглядит например так: http://example.com/index.php?l=google .

Конечно это не сокращение, но мы можем улучшить это с помощью файла .htaccess (используется для запуска веб-сервера Apache).

Htaccess

RewriteEngine On RewriteCond $1 !^(index.php) RewriteRule ^(.*)$ index.php?l=$1 [L]

Этот файл должен находиться в той же директории, что и index.php и links.ini . Его назначение состоит в том, чтобы перенаправлять каждый запрос, который идет НЕ к файлу index.php , на адрес вида index.php?l=xxx . Это защитит от циклических ссылок и сделает файл links.ini недоступным из браузера.

Для достижения наилучших результатов, поместите три этих файла в папку с коротким именем, к примеру «l », в корневую папку сайта, и получите короткий вид ссылок в форме http://example.com/l/google .

Пример с сайтом google.com не слишком нагляден, так как укороченная ссылка получается длиннее оригинала, однако важно было показать именно суть работы механизма, что, надеюсь, и было достигнуто.

Заключение

Еще одно улучшение, которое можно сделать, это создать простейший административный интерфейс, чтобы можно было менять содержимое INI-файла.

Конечно, в данном скрипте можно еще много чего реализовать. Надеюсь, что мое творение было для вас полезным!

Данная публикация представляет собой перевод статьи «Quick Tip - Create a Simple URL Shortener With 10 Lines of PHP » , подготовленной дружной командой проекта

Описание

HTML тег определяет отношение между текущим html-документом и внешним ресурсом, на который он ссылается. Он является пустым элементом (не имеет содержимого и закрывающего тега) и всегда должен располагаться внутри элемента . Чаще всего тег используется для подключения внешних таблиц стилей:

Первый атрибут href определяет адрес документа, который может быть как абсолютным так и относительным. Второй атрибут rel указывает связь между HTML файлом и тем, на что вы ссылаетесь, в данном случае мы ссылаемся на таблицу стилей, поэтому используется значение stylesheet. Атрибут type сообщает браузеру MIME тип документа, для таблиц стилей значением всегда будет "text/css" .

Примечание: по стандарту HTML5, при подключении к документу внешнего файла CSS, атрибут type указывать не требуется:

Предварительная загрузка страниц

Обычно, когда вы кликаете по ссылке на другую страницу приходится ждать несколько секунд пока она загрузится. Однако, вы можете настроить вашу веб-страницу таким образом, чтобы определённые страницы загружались заранее в кэш браузера в то время пока вы находитесь на текущей странице. Это означает, что когда вы кликнете по ссылке для перехода на другую веб-страницу, то она откроется сразу и не надо будет ждать, пока она загрузится. Это называется "предварительное получение страницы". Чтобы сделать это, используется тег с атрибутом rel="prefetch" , а также указывается целевая страница, которая будет заранее загружена на компьютер.

Такая запись позволит заранее закешировать страницу tag_p.php на компьютере, пока вы читаете содержимое текущей страницы. Вы можете использовать тег для предварительной загрузки любого количества страниц вашего собственного сайта или любых других из интернета.

Примечание: вместо адреса на HTML-документ можно указать путь к файлу другого типа (картинку, видео и тд.).

Атрибуты

href: Указывает месторасположение (URL) внешнего файла (путь к файлу может быть указан с помощью абсолютного или относительного адреса). hreflang: Указывает двухбуквенный код языка, определяющий язык документа, на который ведет ссылка. Атрибут hreflang используется только совместно с атрибутом href . media: Определяет под какие устройства оптимизирован файл. Главным образом он используется с файлами таблиц стилей, для определения различных стилей под разные типы носителей. Атрибут media может принимать сразу несколько значений, разделяемых между собой пробелами. rel: Указывает связь между текущим документом и документом, на который ведет ссылка.
  • alternate - ссылка на альтернативную версию документа (то есть страницы для печати, перевод или зеркало).
  • author - определяет ссылку страницу об авторе документа или на страницу с контактными данными автора.
  • canonical - позволяет пометить страницы с дублирующимся контентом, это значит что все страницы, имеющие одинаковое содержимое должны содержать тег с атрибутом rel="canonical" .

    Атрибут href , в этом случае, должен содержать ссылку на страницу с идентичным содержимым, которую поисковые системы должны считать основной:

  • first - указывает ссылку, ведущую на первый документ из последовательности документов.
  • help - ссылка на документ со справкой.
  • icon - определяет путь к иконке, которая будет использована для текущего документа.
  • last - указывает ссылку, ведущую на последний документ в последовательности документов.
  • licence - ссылка на сведения об авторских правах для документа.
  • next - указывает, что этот документ является частью серии, и что ссылка будет вести на следующий документ в этой серии.
  • prefetch - указывает, что следует заранее кэшировать файл, на который ведет ссылка.
  • prev - указывает, что этот документ является частью серии, и что ссылка ведет на предыдущий документ в этой серии.
  • search - ссылка на поиск для документа.
  • stylesheet - определяет внешний файл, который будет использоваться в качестве таблицы стилей для данного документа.
sizes: Указывает размер иконок для визуального отображения. Атрибут sizes используется только совместно с rel="icon" , может принимать следующий значения:
  • ширинаXвысота - определяет список размеров, разделенных пробелами, каждый размер должен быть в формате - ширинаxвысота (размеры иконки определяются в пикселях), пример:
  • any - иконка может масштабироваться до любого размера.
type: Указывает MIME-тип (спецификация форматирования сообщений и кодирования информации для передачи по интернету) документа, на который ведет ссылка, используется только совместно с атрибутом href .

Тег так же поддерживает

Не секрет, что практически все разработчики модулей, плагинов да и самих CMS, склонны оставлять прямые ссылки на свои личные сайты. Иногда поиск таких ссылок занимает у вебмастера порядочное количество времени. Времени, которое он бы мог потратить на более важные задачи. Предлагаемый нами скрипт Find-Link предназначен исключительно для поиска внешних ссылок. При этом он довольно просто в установке и использовании: все, что от Вас потребуется - скопировать файл скрипта в корень сайта и открыть его в браузере. Find-Link покажет Вам в каком файле присутствует внешняя ссылка, а также укажет ее код. После этого Вам останется только удалить ее.

Скачать скрипт можно версия 0.5.0
Скачать скрипт можно версия 0.4.0
Скачать скрипт можно версия 0.3.1
Скачать скрипт можно версия 0.3.0
Скачать скрипт можно версия 0.2.0
Скачать скрипт можно версия 0.1.0

Установка:

1. Скопируйте файл find-link.php в корень вашего сайта.
2. Откройте файл http://your web site/find-link.php в броузере.

Важно - если Find-Link не успевает выполнить поставленную перед ним задачу, то скопируйте файл скрипта в подкатегории и проверьте Ваш сайт по частям.

Надеемся, что наш ресурс и все предлагаемые нами инструменты не раз помогут Вам в работе с Вашими проектами.