Скрипт короткие ссылки на php и mysql - сокращение url

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

Это скрипт предназначен для переадресации с длинного uri на короткий с установленными выбранными функциями.

Скачать скрипт короткие ссылки на php sql

php5.6 и выше, лучше 7
Демо пример (временно не доступно)

Что умеет скрипт короткие ссылки:

Конфиг скрипта, пример.

# index.php: V3.0
if (false) { ini_set('display_errors',1); error_reporting(E_ALL | E_STRICT); } else { ini_set('display_errors', 0); error_reporting(0); } # Отладка (false - вык., true - вкл.)
setlocale(LC_TIME, "ru_RU.utf8");                                     # Кодировка желательна utf-8 
date_default_timezone_set('Europe/Moscow');                           # Временная зона
$_CONFIG['INF_DOMAIN'] = array( 'https://domain1.com' => '',          # Список доменов для переадресации,  и его префикс (дополнительно указывается в ручную в .htaccess)
                                'https://domain2.net' => '*',       
                                'https://domain3.ru' => '-' );
$_CONFIG['LOG_ERRORS'] = 1;                                            # Лог ошибок введенных данных в форме
$_CONFIG['PASSWORD_ONOFF'] = 0;                                        # пароль Front-end включить/выключить 1/0
$_CONFIG['PASSWORD'] = '5825';                                         # пароль Front-end
$_CONFIG['PSWD_ADM'] = '827ccb0eea8a706c4c34a16891f84e7b';             # пароль Админа в MD5 формате
$_CONFIG['URI_ADM'] = 'admin';                                         # адрес админки, смените для безопасности!!!
$_CONFIG['BLOCKING_USER'] = array();                                   # Запретить вход на сайт по IP или диапазону.
$_CONFIG['BAD_POST_URL'] = 'xxx.ru|xxx.com';                           # Запрещенные домены (Кириллица - регистроЗависимая)
$_CONFIG['MAX_SYMBOL_LONG_URL'] = 4000;                                # максимум символов в длинным url, стандарт 4000.
$_CONFIG['MIN_SYMBOL_LONG_URL']= 8;                                    # минимум символов в длинном url (8 минимум)
$_CONFIG['MIN_SYMBOL_SHORT_URL'] = 3;                                  # Минимум символов в коротком url 
$_CONFIG['MAX_SYMBOL_SHORT_URL'] = 40;                                 # Максимум символов в коротком url
$_CONFIG['BAN_POST_SHORT_URL'] = 'xxx.html|fack';                      # Запрещенные короткие urlы 
$_CONFIG['SEND_HEADER_ARR'] = array('301 Moved Permanently',           # Отправляемые http заголовки 3xx: Redirection (перенаправление)               
                                    '302 Found',
                                    '307 Temporary Redirect',
                                    '303 See Other',
                                    "305 Use Proxy");                      
$_CONFIG['SEND_HEADER_DEFAUL'] = 1;                                     # Отправляемый заголовок по дифолту (счет с нуля)
$_CONFIG['CLOCK_TIME_DEFAUL'] = 168;                                    # Время хранения ссылки в часах по дифолту (неделя => 7 дней * 24 часа = 168 часов)
$_CONFIG['CLOCK_TIME_ARR'] = array( 1 => 'час',                         # Дополнительные пункты "Время хранения ссылки".
                                    24 => 'сутки',                    
                                    168 => 'неделя',               
                                    744 => 'месяц',
                                    4463 => 'полгода',
                                    87600 => 'максимум');               # 10 лет
$_CONFIG['CLOCK_TIME_SORT'] = 3;                                        # разбивка списка переменной CLOCK_TIME_ARR
$_CONFIG['URI_PROTOCOL_BAD'] = 'dns:|soldat:|ssh:|file:';               # запрещенные протоколы 
                                                                        # разрешенные протоколы:
$_CONFIG['URI_PROTOCOL_GOOD'] = 'cid:|crid:|data:|dav:|dict:|fax:|ftp:|go:|gopher:|h323:|http:|https:|im:|imap:|ldap:|mailto:|mid:|news:|nfs:|nntp:|pop:|pres:|rtsp:|tel:|telnet:|urn:|wais:|xmpp:|about:|aim:|bolo:|btc:|bzr:|callto:|chrome:|cvs:|daap:|ed2k:|ed2kftp:|feed:|fish:|git:|irc:|ircs:|lastfm:|ldaps:|magnet:|mms:|msnim:|rsync:|skype:|svn:|sftp:|smb:|sms:|steam:|unreal:|view-source:|vzochat:|webcal:|xfire:|ymsgr'; 
...

Как установить скрипт короткие ссылки

Для работы скрипта требуется php и база данных mysql.
Создать базу данных mysql, и в phpmyadmin импортировать дамп файл shortLinks.sql. Залить файлы в архиве на сервер и отредактировать файл index.php прописав в нем данные для конекта к базе, покрутить настройки и запустить его. Будут вопросы задавайте.

Хелпы и факю

$_CONFIG['INF_DOMAIN'] Массив с доменами предназначенные для переадресации коротких ссылок и их префикс.
Префикс - символ после домена, например собачка www.domain.ru/@12321, разграничивает ресурсы между вашими страницами и этим скриптом или оставить пустым если домен используется только для скрипта коротких ссылок.
По мимо редактирования масива нужно откорректировать файл .htaccess и указать в нем выбранный вами префикс для каждого домена.
Папка /other-domains/ - для доменов с префиксами.
Без префикса - htaccess в корне архива.
Количество доменов не ограничено.
$_CONFIG['PSWD_ADM'] Пароль админа шифрованный в md5 (однократно), по дифолту пароль 12345.
Сгенерируйте свой пароль в md5 и присвойте его этой переменной.
Как? вот несколько способов:
  • Спомощью notepad++ > Инструменты > MD5 > Сгенерировать
  • На своем сервере выполнив php код: echo md5('12345');
  • Онлайн сервисами
$_CONFIG['URI_ADM'] url адрес администрированной панели. По дифолту адрес: www.domain.ru/?admin.
Смените адрес на свой для безопасности!
Файлы и папки:
[other-domains]   // для редиректа доменов С префиксом
.htaccess -       // для редиректа БЕЗ префикса
func.php          // скрипт
index.php         // шаблон и настройки (при обновлении скрипта, файл НЕ ОБНОВЛЯЕТСЯ)
shortLinks.sql    // дамп БД для импорта
script.js
style.css

  1. # obmen86 13 апреля 2019, 09:53
    Давненько не было обновление :(
    Планируется ли выпуск обновления, что там будет и когда )))
    1. # obmen86 09 февраля 2019, 12:43
      Сделать бы какой-то плагин для популярных CMS, чтобы можно было ссылки сокращать через основной сайт (это больше для админов сайтов сокращения ссылок).
      Только как, вопрос :)

      Типа Wordpress, DLE. Ставишь плагин и сервис сокращает и изменяет ссылки на сторонние ресурсы через основной сайт (который на скрипте работает).

      Есть предложение как реализовать?
      1. # Телек 09 февраля 2019, 13:09
        Чтоб особо не заморачиваться, при авторизации в движке автоматом авторизуется и в админке скрипта. И в движке добавить пруф на админку скрипта.
      2. # obmen86 03 февраля 2019, 19:26
        Добрый день.
        Не работает скрипт сокращения geurl.ru
        1. # Телек 04 февраля 2019, 03:15 (Комментарий был изменён)
          Файл htaccess писал под apache, а nginx как раз то что у Вас не учел.
          В корне дериктории скрипта замените в htaccess все содержимое на:
          # nginx configuration
          
          location / {
            if (!-e $request_filename){
              rewrite ^(.*)$ /index.php?redirLink=$1;
            }
          }
          1. # obmen86 05 февраля 2019, 20:11
            Теперь совсем не работает сайт :(
            1. # Телек 06 февраля 2019, 13:59
              Я так понимаю что у Вас статику (картинки, стили и т.д) отдает nginx а проксирует запросы на apache для обработки php.
              По этому htaccess верните старый и проверьте свой журнал ошибок httpd ну естественно прогуглите их…
              1. # obmen86 07 февраля 2019, 05:23
                Перезалил и заработало, оч странно…
                Пожелания:
                1. Сделать ЛК для пользователя (где хранились бы его ссылки)
                2. Сделать возможность временной задержки при переходе (например 10 сек.) для получения средств от платной рекламы. А также платную подписку для отключения и моментального перехода
                3. Сделать возможность вписать дизайн (не нашел сейчас).
                1. # Телек 07 февраля 2019, 12:23 (Комментарий был изменён)
                  Возможно была ошибка с правами доступа или левый символ пролез…
                  2. Да, Вы дельные пожелания предложили, реализую при первой возможности.
                  3. Что вы именно предлагаете?
                  На текущий момент файл index.php готов редактироваться под ваши нужды или же просто интегрируется к примеру инклудом, предварительно удалив head заголовки.
                  1. # obmen86 08 февраля 2019, 05:16
                    Я предлагаю полностью вытащить дизайн из index.php перенеся его в админку или отдельные файлы (верх/низ) для отдельного редактирования и в последующем, при обновлении дизайн чтобы не снесся.
                    1. # obmen86 08 февраля 2019, 06:37
                      Ну и сделать адаптацию под мобильную версию
                      1. # Телек 09 февраля 2019, 01:24
                        Файл index.php является шаблонным и при последующих обновлений скрипта этот файл можно не обновлять / не заменять.
                        Таким образом можно делать и мобильную версию и делать временную задержку с рекламой — поставив условие функции redirLink(); (пока не выйдет новая версия с встройной такой функцией).
                        ### РЕДИРЕКТ КОРОТКОГО URL
                        elseif(isset($_GET['redirLink'])): redirLink();
                        P.S. Нет, не забросится, Возможно на гидхаб переедет.
                        1. # obmen86 09 февраля 2019, 04:57
                          Мне кажется удобнее разграничевать начать файлы, так как в будущем и личный кабинет и рекламу может будет юе лелаиь, а это неизбежно приведёт к перевожу дизайна в отдельный файл, и так далее
                          1. # Телек 09 февраля 2019, 12:53
                            Дык пожалуйста… делайте, шаблон это позволяет и разограничивать и подключать файлы, как Вам удобней…
                      2. # FeeWebber 09 ноября 2018, 11:31
                        Добрый день, у меня при формировании короткой ссылки «domain.ru/-sds» после слеша постоянно приписывается дефис "-" можно ли сделать так что бы его не было в начале?

                        Спасибо.
                        1. # Телевизор 09 ноября 2018, 12:15
                          Эта приставка в виде дефиса разграничивает ресурсы между вашими страницами и этим скриптом.
                          Т.е если вы создадите свой ресурс-страницу в этом же корне домена то переадресация коротких ссылок будет работать и не пересекаться с вашим ресурсом.
                          В принципе можно эту приставку убрать но тогда вы не сможете создавать свои страницы в этом домене.

                          При первой возможности сделаю это функционально с выбором.
                          1. # FeeWebber 09 ноября 2018, 16:47
                            спасибо, ну у меня домен специально для коротких ссылок =)
                            1. # FeeWebber 12 ноября 2018, 13:39
                              Я думаю, не плохо было бы если была возможность выбора без спец символа и добавлять свой спец символ @ # и т.д… =)
                              1. # Телевизор 12 ноября 2018, 15:12
                                Да уже сделал, многое переделал и улучшил, как например разделил скрипт и html — что бы не было болезненно при обновлении.
                                А также теперь на разных доменах можно с префиксом и без него.
                                На днях опубликую и Вас уведомлю.
                          2. # Влад22 11 октября 2018, 14:31
                            Здравствуйте, подскажите пожалуйста в чем может быть проблема. Не создается в Базе запись. Сама База подключена правильно

                            Спасибо
                            1. # Телевизор 11 октября 2018, 17:01 (Комментарий был изменён)
                              О какой версии идет речь?
                              В самом начале index.php, есть режим отладки: смените с false на true и помониторте ошибки.
                              1. # Влад22 11 октября 2018, 21:00
                                Причина: на MySQL 5.7.21-0ubuntu0.16.04.1 не работает
                                1. # Телевизор 11 октября 2018, 21:07
                                  Дык какую версию юзаете?
                                  1. # Влад22 11 октября 2018, 21:11
                                    v2.0
                                    1. # Телевизор 11 октября 2018, 22:08 (Комментарий был изменён)
                                      Гуд, у меня вообще марияДБ, а демка на MySql и все гуд — запросы одни и теже.
                                      скиньте ошибку лог а то не понятно так.
                                      1. # Влад22 11 октября 2018, 23:19
                                        Я немного некорректно написал. Об этом понял позже. Дело в том, что у меня на сервере работает высоконагруженный сайт и База настраивалась под него. Так что дело не в версии, а в индивидуальных настройках. На другом сервере ваш скрипт работает на УРА!!!

                                        Скажите, а какую роль выполняет «Эта [Кнопка] как рулетка.»?
                                        1. # Телевизор 12 октября 2018, 00:06
                                          Очищает БД от не актуальных по времени хранения ссылок.
                                          Цифры указывают количество ссылок в БД.
                                          P.s чтобы не юзать крон, боты лазиющие по сайту сами активируют чистку.
                                          1. # Влад22 12 октября 2018, 00:35
                                            Аплодирую стоя!!! Весьма хитроумное решение.

                                            Спасибо за скрипт
                                      2. # 55555 07 сентября 2018, 14:42 (Комментарий был изменён)
                                        Если ссылку не генерировать а просто нажать кнопку «ПОЛУЧИТЬ ССЫЛКУ» то получается сверху фигня, где подправить?
                                        1. # Телевизор 07 сентября 2018, 16:06
                                          какая у Вас версия php?
                                          1. # 55555 07 сентября 2018, 16:24 (Комментарий был изменён)
                                            Я хотел убрать это-----> [Delete] Вернул на место, все заработало ) PHP 5.6 стоит, кака должна PHP 5.2 — 7.2?
                                            1. # Телевизор 07 сентября 2018, 16:45
                                              Она как раз под php 5.6.
                                              В любом случае сегодня опубликую и для php7.
                                        2. # 55555 04 сентября 2018, 21:56
                                          Не качается «Блокируется реклама!
                                          Отключив блокировку рекламы, Вы сможете
                                          бесплатно скачать файл с наших серверов.»
                                          1. # Телевизор 05 сентября 2018, 01:26
                                            Дык отключите блокировку рекламы в вашем браузере.
                                            1. # 55555 05 сентября 2018, 07:12 (Комментарий был изменён)
                                              Дык отключал в 3х браузерах и все равно ни с одного не скачал (((. Ха ха только что скачал на телефон, ссылка появилась. Браузер тотже что и на компе (яндекс) но рекламу в телефоне не отключал, магия…
                                              1. # Телевизор 07 сентября 2018, 11:53
                                                Прошу прощения, исправлено.
                                          2. # ОЛЕ 28 марта 2018, 19:29
                                            Проблема была в том, что нужно было свое доменное имя указать в $_CONFIG['REDIR_DOMAIN']= array().
                                            Спасибо за скрипт)))!
                                            1. # ОЛЕ 28 марта 2018, 19:03
                                              Без входа в админку этот скрипт должен работать? Поскольку при попытке перейти в админку выдает оповещение, что «Учетная запись отключена администратором сервера».
                                              Скрипт в меня тоже нормально не работает: выдает постоянно ошибку «Не удается получить доступ к сайту. ERR_NAME_RESOLUTION_FAILED»!
                                              К тому же, последние три колонки в БД остаются пустыми
                                              1. # Телевизор 28 марта 2018, 20:21 (Комментарий был изменён)
                                                Без входа в админку этот скрипт должен работать
                                                да.
                                                Эти ошибки не как не связаны со скриптом, это уже траблы на стороне сервера или браузера.
                                              2. # hi-cd 28 марта 2018, 12:41 (Комментарий был изменён)
                                                Доброго времени суток! Скрипт коротких ссылок так и не удалось запустить. Редирект не работает, перекидывает на сайт первоисточник. [ссылка]
                                                1. # Телевизор 28 марта 2018, 12:58 (Комментарий был изменён)
                                                  1) В файле index.php в первой строке включите вывод ошибок на экран, вместо
                                                  if (false) замените на if (true)
                                                  2) Как мне кажется у Вас не обрабатывается / не настроен .htaccess учитывая что скрипт Вы положили в дерикторию.
                                                  Попробуйте файл .htaccess положить в корень вашего домена и в самом файле .htaccess указать верный путь к скрипту
                                                  RewriteRule ^-(.*) ПАПКА/?redirLink=$1 [L]
                                                  В ведь ваш сайт при редиректе отдает страницу 404 — что означает не верно указанный путь, а путь должен быть к index.php скрипта, далее идет подключение к БД и выборка к переадресуемой ссылке.