Сервис коротких ссылок на PHP

Форум для тех кто начинает осваивать язык php.
Force
Сообщения: 35
Благодарил (а): 1 раз

Сервис коротких ссылок на PHP

Сообщение Force » Пт ноя 20, 2015 3:25 pm

Я не люблю длинные ссылки и всё время думаю о том, как бы ещё сделать их короче, от сюда и.
Про то, что существуют сайты, где введя длинную ссылку, получишь короткую конечно знаю и знаю давно, но о создании такого сайта всерьёз задумался недавно. Я так думаю, что имея простенький сайт коротких ссылок, больше 20 мегабайт хостинга не потребуется, в ближайшие лет 50, ведь добавляя ссылку, будет добавлена всего одна запись в базу, а вес одной записи, одного url всего ни чего, а сам движок можно сделать всего из двух файлов. Первый файл будет отвечать за получении адреса и выдачи короткой ссылки, второй за перенаправление на страницу с длинным адресом. База такого сайта состоит всего из одной таблицы:
  1. id - Идентификатор ссылки, не нужно говорить зачем это поле. В принципе это поле не нужно.
  2. long - Это полученная длинная ссылка.
  3. short - Это поле сгенерированной короткой ссылки.
Вот и вся база.
Оценили идею? Теперь давайте вместе доведём этот набросок до ума!
Жду ваших советов. Спасибо.

Из поста: Re: Сервис коротких ссылок на PHP:
Работа над сервисом закончена.
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Сервис коротких ссылок на PHP

Сообщение Slash » Пт ноя 20, 2015 9:24 pm

Что именно до ума надо довести? Судя по названию темы Сервис коротких ссылок на PHP надо помочь в написании движка?

До этого не приходилось обращаться к сервисам коротких ссылок, но после прочтения вашего поста, попробовал пару сервисов. Сложностей написать такой движок не вижу, все действительно просто. Могу предложить небольшую хитрость - пользователь перейдя по короткой ссылке попадает не сразу на какой то сайт с длинным URL (то есть не так быстро перенаправлять), а попадает на страницу вашего сервиса, страница весит определенное время, например 5 - 10 секунд, затем перенаправляет уже на сайт с длинным адресом. За эти 5 - 10 секунд пользователю можно показать рекламу, предложить попробовать сервис и "укоротить" какую ни будь длинную ссылку.

Можно сделать личный кабинет и дать возможность пользователям управлять своими ссылками, дать возможность самому составлять ссылку, то есть если кто то хочет ссылку с именем Антон, то пусть будет site/Антон, site/Антон1, site/Антон2 и так далее.
Аватара пользователя
June
Сообщения: 22

Re: Сервис коротких ссылок на PHP

Сообщение June » Сб ноя 21, 2015 1:44 am

Я по мотивам одной темы на киберфоруме хочу написать про это статью. Правда, в ней будет идти речь о собственном сервисе, поэтому ссылки добавляются из обычной админки без лишних проверок на структуру, на зацикленность на сам сервис и т.п. Модуль, собственно реализующий перенаправление, совсем смешной:

Код: Выделить всё

<?php
header
('Location: '.$content); 
exit;
 

В качестве id используется сама короткая ссылка. Т.е. действительно достаточно и двух полей. Короткие ссылки задаются вручную и осмысленно (пример: http://g09.ru/rrres). Можно сделать и автоматическое формирование, например, при помощи триггера, когда значение id остается пустым (кстати, мы недавно со Слешем общались на тему триггеров). У меня в таблице три основных поля. Третье - это name. Очень удобно иметь для ссылки развернутое имя. Например, чтобы управлять большим списком ссылок и "просматривать" их. У меня в админке предпросмотр страниц легко под это подстраивается. Четвертое поле содержит имя модуля (go). Хотя если выносить на отдельный специально предназначенный для коротких ссылок домен, можно имя модуля жестко прописать в движке. Я пока думаю просто записать go, как значение по умолчанию для соответствующего поля таблицы и отключить его отображение в админке. Пятое и последнее поле содержит флаги, влияющие на работу модуля, определяющие структуру короткой ссылки и т.п. Подходящее значение можно также записать, как значение по умолчанию для поля, и скрыть это поле в админке.
Аватара пользователя
June
Сообщения: 22

Re: Сервис коротких ссылок на PHP

Сообщение June » Сб ноя 21, 2015 1:32 pm

Решила еще поле Категория добавить. На главной можно будет выводить ссылки, сгруппированные по категориям. Получится достаточно удобный каталог ссылок.
Force
Сообщения: 35
Благодарил (а): 1 раз

Re: Сервис коротких ссылок на PHP

Сообщение Force » Сб ноя 21, 2015 6:44 pm

Slash писал(а):надо помочь в написании движка?

Было бы здорово! За советы и идеи спасибо.
Slash писал(а):страница весит определенное время, например 5 - 10 секунд, затем перенаправляет уже на сайт с длинным адресом

Боюсь, что люди не оценят этот фокус, а было бы замечательно. Люди пользуются сервисом не только те, что меняют ссылку, но и те, что ходят по этим ссылкам.
June писал(а):На главной можно будет выводить ссылки, сгруппированные по категориям.

Это уже каталог получается! Но идея заслуживает внимания. Будем думать дальше.
Жду чуда! Спасибо.
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Сервис коротких ссылок на PHP

Сообщение cefp » Сб ноя 21, 2015 10:12 pm

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

Кроме того, была бы интересна функция проверки существования ссылки. Со временем сайт на который ведет ссылка закрывается и показывает пустую страницу или просто выдает ошибку. Для таких случаев можно предусмотреть возможность вывода сообщения, что с такого-то числа страница стала недоступна. И отображать людям рекламу вместо нерабочей страницы.
d o h o d - s - n u l y a .ru - идеи бизнеса.
Force
Сообщения: 35
Благодарил (а): 1 раз

Re: Сервис коротких ссылок на PHP

Сообщение Force » Чт ноя 26, 2015 9:39 pm

Всем спасибо за отклик. Здорово, что идея нравится!
Хочу немного просветить о текущем состоянии энтого сервиса, если кому-то интересно.
Связавшись с админом (Slash), обговорили данный движок, Slash предложил несколько вариантов, у каждого варианта свои плюсы и практически ни одного минуса. Единственный минус - это то, что подобных сайтов оказалось очень много и раскручивать такое творение будет не просто, впрочем раскрутка любого сайта даётся непросто.

На данный момент Slash занят написанием движка коротких ссылок. На сколько мне известно доменное имя для этого сайта уже куплено и движок тестируется на нём.
О движке! Движок не будет иметь всяких бесполезных выкрутасов, только самое необходимое для работы: ввел длинный адрес, получил коротенький, всё. Но будут учтены советы из этой темы.

Пока это все новости. Следите за темой и узнаете все новости.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Сервис коротких ссылок на PHP

Сообщение Slash » Сб ноя 28, 2015 9:16 pm

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

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

Теперь о движке. В общем то весь необходимый функционал собран в кучу. Появился вопрос! Сделал проверку на существование адреса (писал выше), перед тем, как сгенерировать короткую ссылку, сценарий парсит ссылку, функцией file_get_contents(). Если адрес введен полностью латиницей, то проверка выполняется сразу, если в адресе присутствует кириллица, то приходится издеваться над URL, сделал так:

Код: Выделить всё

# Проверка существования введенного адреса (URL)
$parse_url $url;
if (
preg_match('#[а-я]#i'$url)) 
{
    
$part parse_url($parse_url);
    
$scheme    = (isset($part['scheme'])) ? $part['scheme'] . '://' null;
    
$host      = (isset($part['host'])) ? idn_to_ascii($part['host']) : null;
    
$port      = (isset($part['port'])) ? ':' rawurlencode($part['port']) : null;
    
$user      = (isset($part['user'])) ? rawurlencode($part['user']) : null;
    
$pass      = (isset($part['pass'])) ? ':' rawurlencode($part['pass']) . '@' null;
    
$path      = (isset($part['path'])) ? rawurlencode($part['path']) : null;
    
$query     = (isset($part['query'])) ? '?' rawurlencode($part['query']) : null;
    
$fragment  = (isset($part['fragment'])) ? '#' rawurlencode($part['fragment']) : null;
    
$parse_url $scheme $user $pass $host $port $path $query $fragment;
    
$parse_url str_replace(array('%2F''%3D''%26'), array('/''=''&'), $parse_url);

    unset(
$part$scheme$host$port$user$pass$path$query$fragment);
}

if (!@
file_get_contents($parse_url))
{
    echo 
$lang['error_url_correct'];
    exit;

Данный код не допускает кривых ссылок на ~90%. Но парсить станицы сторонних ресурсов долго, процесс затягивается до 2 секунд, в зависимости от отдачи ресурса. Без этой проверки, весь процесс генерации составляет ~ 0.015 секунд. Вот и думаю, может отказаться от этой проверки или это терпимо? Что может быть плохого от такой проверки (кроме проблем описанных в этом посте)?

Добавлено спустя 1 час 43 минуты 50 секунд:
Добавил индикатор, во время обработки URL будет имитировать загрузку. С индикатором длительность не так заметна.
Проверку на существование адреса, решил оставить.
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Сервис коротких ссылок на PHP

Сообщение cefp » Сб ноя 28, 2015 10:51 pm

Проверку можно делать в фоновом режиме. То есть сразу без проверки предлагать короткий адрес. А внизу пометка о том, что идет проверка корректности введенного адреса, доступности страницы. Ну и генерировать скриншот страницы куда ведет ссылка. Сокращатель гугла выдает скриншот.

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

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

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

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

Еще одно предложение, чуть не по теме. Сделать скрипт переадресации с короткими ссылками, чтобы каждый мог установить его у себя на сайте.
d o h o d - s - n u l y a .ru - идеи бизнеса.
Аватара пользователя
Змейка
Супермодератор
Сообщения: 37

Re: Сервис коротких ссылок на PHP

Сообщение Змейка » Вс ноя 29, 2015 10:34 am

Slash писал(а):Проверку на существование адреса, решил оставить.

Данная проверка может оказаться лучше регулярного выражения, т. к. сравнивает настоящий адрес, но всё ровно лучше заменить эту проверку на регулярное выражение.
Slash писал(а):Что может быть плохого от такой проверки (кроме проблем описанных в этом посте)?

Допустим у меня сайт с большим количеством вкладок и каждая вкладка имеет ряд подвкладок. Все вкладки размещаются на одной странице и не перезагружают страницу при переходе на другую вкладку, url каждой вкладки не изменяется, но визуально он разный. Подвкладка - это уже полноценная страница. Так вот при попытки получить короткую ссылку одной из подвкладок, всё получится, а вот при попытке обменять ссылку на вкладку, скрипт может просто не найти страницу и выдаст ошибку, т. к. фактически этого адреса не существует... Если бы вкладки имели адреса (site/inset1/, site/inset2/, site/inset3/) изменяющиеся при нажатии в адресной строке, то этой проблемы бы не было. Попробовать работу скрипта с вкладками можно взяв сайт: http://advego.ru/, как раз там вышеописанные вкладки: http://advego.ru/campaigns/, http://advego.ru/shop/ и т. д. Вставляем в форму ссылку вкладки http://advego.ru/shop/ и получаем ошибку - такой странице на существует. Кстати при переходе по этой ссылке человек попадёт на: http://advego.ru/shop/find/. Другая сторона этой точки зрения, кому может потребоваться вставлять адрес вкладки, которая всё ровно приведёт на другую страницу? Просто кто-та этого может не знать и будет в недоумении, почему такой страницы не существует? Вот и всё.
Slash писал(а):Добавил индикатор, во время обработки URL будет имитировать загрузку. С индикатором длительность не так заметна.

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

Re: Сервис коротких ссылок на PHP

Сообщение Slash » Вс ноя 29, 2015 5:21 pm

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

Хорошая идея! Очень удобно, когда можно обменять ссылку не открывая другие сайты, буду думать, как сделать ajax передачу с одного домена на другой (Кроссдоменный AJAX (будем читать: http://api.jquery.com/jQuery.ajax/)), возможно frame, или еще какое решение подвернется...

Сервис готов! Учтены не все советы с данной темы, но будут доработки по советам.
Механизм, как и было сказано выше, без всяких выкрутасов, но всё можно доделать.
Очень жду Вашей критики, чего не хватает? Что не так?
Спасибо за оценку.
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Сервис коротких ссылок на PHP

Сообщение cefp » Вс ноя 29, 2015 6:38 pm

:) Генерацию имен начали с одного? Успел воспользоваться первым :)

По поводу сервиса, фразу "Генерация коротких ссылок, в обмен на длинные." предлагаю заменить чем-то типа "Генерация коротких ссылок для замены длинных" или "генерация коротких ссылок из длинных". Или что-то подобное. Иначе сейчас в первые секунды прочтения фразы можно толковать её как продажу услуги генерации с оплатой длинными ссылками.

В поле, где выводятся сокращенные ссылки предлагаю добавить графу сокращаемой ссылки. И перед сокращенными ссылками можно добавить заголовок, например: "короткие ссылки".

Третью строку с сокращенными ссылками увеличить по длине, чтобы входил весь текст ссылки.

Из предложений к сервису - добавить возможность самому выбирать текст короткой ссылки. На тот случай если случайно получится неудобочитаемая ссылка или чтобы сделать красивую ссылку.
d o h o d - s - n u l y a .ru - идеи бизнеса.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Сервис коротких ссылок на PHP

Сообщение Slash » Вс ноя 29, 2015 7:48 pm

cefp писал(а):предлагаю заменить чем-то типа

За это отдельное спасибо, я вообще не задумывался над этой фразой, все откладывал на потом. Заменил на: Генерация коротких ссылок для замены длинных.
cefp писал(а):Из предложений к сервису - добавить возможность самому выбирать текст короткой ссылки.

Да. Думаю, что сделаю, возможно скоро.

Пожалуйста, предлагайте ещё!
Спасибо.
Force
Сообщения: 35
Благодарил (а): 1 раз

Re: Сервис коротких ссылок на PHP

Сообщение Force » Вс ноя 29, 2015 10:16 pm

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

Может ещё кнопки социальных сетей поставить, что бы через соц.сети крутить?
Аватара пользователя
Местный бот
Сообщения: 153

Re: Сервис коротких ссылок на PHP

Сообщение Местный бот » Пн ноя 30, 2015 5:51 am

Slash, исходник выкладывать будешь?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость