PHP-скрипт для сокращения ссылок — short 3.1.1 lite

Если функционала таких сервисов как goo.gl, bit.ly и прочее вам недостаточно — скачайте бесплатно PHP-скрипт для сокращения длинных ссылок — short 3.1.1 lite.

PHP-скрипт для сокращения ссылок — short 3.1.1 lite

Примечание: Это не сервиса, это PHP-скрипт для персонального использования.

Страница «Статистика»
Страница «Статистика»

Требования:

PHP 5 и PDO драйвер SQLite.

Плюсы:

  • это своё: в папке, на поддомене или домене;
  • это бесплатно (по крайней мере, lite-версия);
  • адаптивный интерфейс (можно работать и с мобильного устройства);
  • маленький: index.php и style.css;
  • легко переносится (за счёт использования SQLite);
  • минимальная нагрузка на сервер (хорошо для виртуального хостинга);
  • есть автоматическое создание БД (без отдельного шага установки);
  • сохраняет красивый вид URL даже без модуля преобразования URL (mod_rewrite), пример: sitename.ru/?htNdl;
  • есть возможность прописать свой ЧПУ,
    например: %action%.html — получим: sitename.ru/htNdl.html;
  • всего 4-ри опции;
  • Можно редактировать все данные: «длинный URL», «фрагмент короткого URL», «примечание» и даже «количество кликов».

При добавлении:

  • нужно указать только «длинный URL» (если что, скрипт обрежет лишние пробелы по краям и добавит http:// в начале);
  • можно прописать свой «фрагмент короткого URL» или он будет создан автоматически (пятизначный уникальный идентификатор);
  • можно прописать «примечание» (например, содержания TITLE страницы).

Страница «Добавить»
Страница «Добавить»

При изменении, есть возможность редактировать количество кликов.

Страница «Изменить»
Страница «Изменить»

Минусы:

  • Нужен свой хостинг;
  • Нет подробной статистики (только клики);
  • Нет поддержки кириллических доменов;
  • Нет интеграции с движками (WordPress, Drupal и прочее);
  • Все ссылки выводятся списком без разбиения на страницы;
  • Шрифт иконок Awesome берётся со стороннего CDN.

Демо-версия

Статус: тестируется вариант без ЧПУ
Адрес: http://c3h.ru/
Пароль: 12345

Установка и настройка

  1. Скачайте архив по ссылке ниже, распакуйте его содержание в отдельную папку, на домен или поддоммен сайта:
    • .htaccess — настройки для работы с ЧПУ под Apache;
    • index.php — сам скрипт сокращалки;
    • style.min.css — таблица стилей.
  2. Откройте файл index.php, раскомментируйте (уберите «//» в начале строки) и пропишите требуемые значения для нужных опций:
    • SHORTURL — URL отправной точки (если опция не задана, создаётся «на лету»);
    • SHORTFURL — ЧПУ (если опция не задана: false):
      • true — включить (если mod_rewrite есть — простой ЧПУ, иначе — красивый URL),
      • false — выключить (красивый URL, иначе — через параметры),
      • строка с %action%, например: %action%.html;
    • PASSWORD — пароль в MD5 (если опция не задана: 12345);
    • FILENAME — имя файла БД (если опция не задана: db.sqlite) или строка подключения к БД (надо допиливать).
  3. Обратитесь к скрипту по месту нахождению, введите пароль и сокращайте ссылки.

Скачать бесплатно

Последнюю версию short 3.1.1 lite можете бесплатно скачать по этой ссылке.

Версии:

  • 3.1.1 (8 февраля 2016) 6Кб
  • 2.0 (12 июня 2014) 12Кб
  • 1.0 (28 октября 2013) 2Кб

Короткая ссылка: http://goo.gl/k2ZP72

Максим
Максим комментирует...

Заманчиво, но я предпочитаю ставить прямые ссылки, даже если URL очень длинный и включает в себя кириллицу. Сейчас пользователи слабо доверяют всяким сокращениям, т.к. под ними может скрываться ссылка на страницу с вирусом, рекламой и т.д.

С другой стороны, я неоднократно встречал короткие ссылки в виде естественного URL, как бы на обзор сервиса или чего-то в этом роде. Предложенный php-скрипт в этом плане можно доработать, и получится нечто подобное, стоит попробовать. Правда многое будет зависит от того, насколько пользователи доверяют конкретному блогу или любому другому сайту.

wmascat
wmascat комментирует...

Интересную сторону вопроса вы затронули. Безусловно, доверие пользователей к конкретному автору играет далеко немаловажную роль. И тут мы возвращаемся к вопросу нюансов человеческой психологии, которые вы затронули в моей статье о спорах.

Progmed
Progmed комментирует...

Почему бы не выложить скрипт на Github?

wmascat
wmascat комментирует...

2Progmed можно и на Github, но я с ним никогда не работал. Главное, что скрипт общедоступен, а остальное имхо фигня.

Unknown
Unknown комментирует...

Хороший и простой скрипт, но возникло два вопроса. 1. Как заменить index.php допустим на short.php чтоб не мешало основным файлам? 2. Как настроить так чтобы генерировать только цифровые сокращения? Заранее благодарен!

wmascat
wmascat комментирует...

2Роман Фещенко
1. по сути скрипт рассчитан на то, что будет работать на поддомене или находиться в папке... можно конечно переименовать index.php на любое другое имя и прописать в .htaccess вместо:

RewriteRule ^(.*)$ index.php?furl=$1 [L,QSA]

например:

RewriteRule ^(.*)$ short.php?furl=$1 [L,QSA]

но это по моему изврат.

2. сокращения можно вводить вручную при добавлении... ну а так смотрите:

14 строка в includes\add.php и 28 строка в includes/edit.php:

if ( empty($url_short) ) $url_short = substr(md5($url_long), 0, 5);

именно это условие отвечает за генерацию сокращения, если таковое не указано.

Unknown
Unknown комментирует...

К сожалению так исключается возможность загрузки движка из корня. В общем ситуация такая, есть url'ы такого вида, lvov.moymagazin.com/samiy-luchshiy-tovar-sezona, нужно получать короткие ссылки вида moymagazin.com/457896 для быстрого набора. Возможно ли настроить Ваш скрипт таким образом?

wmascat
wmascat комментирует...

2Роман Фещенко скажу так: при создании скрипта я не рассматривал такой вариант его использования. Гораздо проще будет реализовать интеграцию коротких ссылок в сам движок, по тому же ID продукта в БД. Но здесь вам нужно обращаться к создателю движка своего магазина.

Unknown
Unknown комментирует...

Благодарен за ответ! Владельцам магазина эта функция не интересна. Это нужно мне как менеджеру для удобства, тогда как вариант вижу установку скрипта на поддомен и получать ссылки вида short.moymagazin.com/457896.

wmascat
wmascat комментирует...

2Роман Фещенко это самый оптимальный вариант... хотя, можно и в директорию, например: moymagazin.com/short/457896. К слову, более наглядным будет всё таки читаемое сокращение, например: moymagazin.com/short/ipad ;-)

Unknown
Unknown комментирует...

Как сделать чтобы генерировалось сразу много ссылок а не одна?

wmascat
wmascat комментирует...

2Евгения Саморезова В скрипте подобной функции нет и ничего подобного я не встречал, ведь это было бы неудобно — ищи потом какая короткая ссылка, какой длинной соответствует.

seoonly.ru
seoonly.ru комментирует...

Спасибо, что фри))

Unknown
Unknown комментирует...

Константин, можете мне помочь, сделать сокращатель ссылок для определенного сайта?

wmascat
wmascat комментирует...

2Алексей Сотников Качайте, устанавливайте и делайте… всё расписано по самые гланды и я не знаю, чем могу ещё помочь.

Михаил
Михаил комментирует...

Очень интересный и нужный скрипт.
Константин, скажите, можно ли использовать этот скрипт в своих целях.
Например встраивать в другие PHP системы и всячески изменять под свои нужды? Спасибо.

wmascat
wmascat комментирует...

2Михаил да, можно.

Unknown
Unknown комментирует...

Здравствуйте!

А можно каким-то образом использовать Ваш скрипт для массового самостоятельного сокращения ссылок при загрузке в БД?
Есть XML-файл, где одно из полей у категории - ссылка. Можно каким-то образом при занесении ссылки в MySQL её автоматом конвертнуть?
Спасибо заранее за ответ.

wmascat
wmascat комментирует...

2Ra Akm В этой версии нет импорта данных, но вы действительно можете сделать INSERT в таблицу links, которая имеет следующие поля:

id (integet) — уникальный авто-генерируемых идентификатор,
url_long (text) — длинная ссылка,
url_short (text) — фрагмент (идентификатор) короткой ссылки,
excerpt (text) — краткое описание,
clicks (integer) — количество кликов,
pubdate (integer) — дата публикации в секундах.

Для авто-генерации url_short я использую следующее решение:

$url_short = substr(md5($url_long . time()), 0, 5);

slikov_ru
slikov_ru комментирует...

Константин вы написали в своей статье что этот скрипт бесплатный, а есть платный? Можно в таком случае глянуть на платную версию? Я бы возможно купил.

wmascat
wmascat комментирует...

2Виктор Рихтер Была идея развить тему, но я её пока не осилил.

Sibroy
Sibroy комментирует...

Пагинация нужна,или поиск...

wmascat
wmascat комментирует...

2Sibroy Дарёному коню в зубы не смотрят ))) Думал сделать это в платной версии, но лень )))

Unknown
Unknown комментирует...

Что-то не работает скрипт. В демке ввожу адрес этой страницы и мне пишет "Длинный URL неправильный."

wmascat
wmascat комментирует...

2Unknown так может он и неправильный? Ну, там http не указан или ещё чего...

Unknown
Unknown комментирует...

Кириллица работает, спасибо!

Unknown
Unknown комментирует...

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

wmascat
wmascat комментирует...

Для этого всё равно нужно быть авторизованным, а попытка продлить сессию авторизации — дополнительная уязвимость, так что я не стал заморачиваться.

zuma
zuma комментирует...

Так и не смог даже протестировать. И гугл вводил и яндекс. И свой сайт. Толку никакого. Пишет "Длинный URL неправильный". Хоть бы ссылка появилась, а какой собственно правильный. Записал по этому поводу видео. https://youtu.be/eKhheDDtfls

wmascat
wmascat комментирует...

Спасибо за видео. Да, есть ошибка.
1) откройте index.php
2) Найдите фрагмент кода:
if(filter_var($url,FILTER_VALIDATE_URL)===false)
3) Замените его кодом:
if(filter_var($url_long,FILTER_VALIDATE_URL)===false)
P.S. Там 2 таких фрагмента (для добавления и редактирования ссылки). Будет время, выложу исправленную версию.

Unknown
Unknown комментирует...

Скрипт супер, как раз похожий искал. Большое спасибо.
Одно не понимаю: где хранятся ссылки и как долго?

wmascat
wmascat комментирует...

Ссылки хранятся в создаваемой при первой инициации скрипта базе данных db.sqlite, поэтому перенести её очень просто, не нужно ничего экспортировать, импортировать и прочее.

Unknown
Unknown комментирует...

Сори, затупил. Одно жалко, что показывает только общее количество кликов. Хотелось бы, чтоб считал количество кликов в день, месяц. Может реализуете, если не сложно? Готов немножко проспонсировать.

wmascat
wmascat комментирует...

Вся суть скрипта - минимализм. Я даже хочу его ещё больше упростить.

Анонимный
Анонимный комментирует...

как удалить "?" из урл?

Анонимный
Анонимный комментирует...

и еще вопрос. как сделать так, чтобы урл формировался не относительно папки, а относительно корня. то есть не site.ru/url/fjl3, а site.ru/fjl3? При этому скрипт в корень установить нельзя.

wmascat
wmascat комментирует...

Для использования ЧПУ нужно убрать "//" перед define('SHORTFURL', true); т.е. раскоментировать её.

Чтобы получить адрес относительно корня, нужно скрипт залить в корневую папку, и никак иначе.

Анонимный
Анонимный комментирует...

Я не про ЧПУ имел ввиду, а как просто убрать знак "?" из url, то есть урл формировался автоматически, но без знака вопроса?

wmascat
wmascat комментирует...

Знак вопроса в короткой ссылке говорит о том, ЧПУ не используется, т.е. работает вариант с $_SERVER['QUERY_STRING']

M4rkeLL
M4rkeLL комментирует...

Спасибо! Очень приятный скрипт! Забрал себе, слежу за обновлениями! Статистику бы конечно побольше, например точки открытия на карте и по датам.
Спасибо еще раз!

pashaki
pashaki комментирует...

совсем новичок и никак не поставлю себе на сайт скрипт, хотя это что искал; подробную бы инструкцию

wmascat
wmascat комментирует...

Я не знаю куда подробней, сорь

Анонимный
Анонимный комментирует...

Добрый день!
Спасибо за скрипт, подскажите, а как можно немного перепилить его, что бы добавлять и видеть то что сейчас добавил без пароля, а вот полную статистику по паролю - как бы открыть добавление и вывод текущей ссылки для публичного доступа.