Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490

Реализация сервиса сокращения ссылок

24.09.2015, 21:40. Показов 6796. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу для внутренних нужд сделать сервис по сокращению ссылок. Дело в том, что клиентам приходится часто рассылать длиннющие ссылки с get-параметрами, что некрасиво как-то смотрится.

Как я себе это представляю: настроить .htaccess так, чтобы при переходе по несуществующей ссылке юзера редиректило на скрипт обработки ссылки.
Сделать БД, в которой хранить соответствие короткая_ссыль => длинная_ссыль
Скрипт обработки (упомянутый выше) ищет соответствие в БД. Если есть - редирект на длинную_ссыль, если нет - редирект на главную страницу сайта.
Все верно? или я что-то упустил?

Буду благодарен за ссылки на какие-нить статьи по теме
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2015, 21:40
Ответы с готовыми решениями:

Реализация Реферальных Ссылок
Расскажите (желательно по пунктам) Как Реализуются реферальные ссылки . или если есть статью на существующую

Реализация ссылок с передачей параметров
Я хотел бы спросить как реальзуются ссылки id.php?id=1 в php, найти в интернете не могу Можно через скрытое поле, но данный способ не...

ЧПУ реализация или почему не работает такой вид ссылок
реализация через htaccess /// Изначально ссылка вот такого типа: http://site.php/?page=edit Хочу преобразовать вот в такой вид:...

34
Заблокирован
26.09.2015, 22:48
Студворк — интернет-сервис помощи студентам
Для чего это не для этого? Вам мои ссылки не понравились только потому, что они состоят не из 6 символов, а из 4-5?
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
27.09.2015, 08:19
Цитата Сообщение от Laroux Посмотреть сообщение
Все верно? или я что-то упустил?
Цитата Сообщение от Laroux Посмотреть сообщение
настроить .htaccess так, чтобы при переходе по несуществующей ссылке юзера редиректило на скрипт обработки ссылки.
В целом верно, только проверку на несуществование ссылки нужно делать средствами PHP.


Цитата Сообщение от Laroux Посмотреть сообщение
Буду благодарен за ссылки на какие-нить статьи по теме
Да тут вроде ничего сложного, несколько строчек кода.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
27.09.2015, 09:03
Цитата Сообщение от Jodah Посмотреть сообщение
Да тут вроде ничего сложного, несколько строчек кода.
Весь PHP это "несколько строчек кода", но я свою авторизацию (качественную) со всеми админками, утилитами и отчетами, уровнями доступа уже почти месяц пишу...

Так и здесь - редирект (изучить теорию и провести полные тесты) часа 2-3...
поиск соответствия по базе с созданием таблиц - еще час-два...
полноценное заполнение таблиц - это уже надо детальную логику сайта составлять, админку делать, индексатор страниц, исключения страниц, фильтры и тесты каждого подвида/подгруппы... много часов...
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
27.09.2015, 09:16
Tester64, я бы сказал, полчаса от силы на тестовую реализацию. Алгоритм вы ведь уже полностью описали.

Добавить управление через свою админку - это да, займёт время, но вряд ли вам для этого понадобятся какие-то статьи.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
28.09.2015, 01:36
Цитата Сообщение от Jodah Посмотреть сообщение
полчаса от силы на тестовую реализацию.
Не пудрите мозги новичкам!
Я понятие не имею как делать переадресацию с my.com/go/2dkwsod на my.com/go.php?id=2dkwsod. И думаю минимум пол часа буду только искать в инете инфу по этому и вычитывать теорию. Потом еще столько-же на тесты и надежность (чтобы другие страницы не "зацепило"). Итого на надежный вариант - часа два. (Когда-то, года 3 назад, убил больше 4х часов на то-же в nginx - не получилось). Создать таблицу, продумать запросы - еще пол часа. Но если 2-3 ссылки можно заполнить через phpMyAdmin, то на сотню нужна админка и механизм "автозаполнения". А это уже много часов хитрой логики. Причем под каждый сайт отдельно...

для НЕ новичка, знакомого с тонкостями каждого "кусочка конструктора" - действительно работы на пол часа! Но это ветка для новичков...
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
28.09.2015, 10:33
Tester64, ничего не пудрю, гугл "переадресация PHP" и через 3 минуты вы уже знаете решение.

Но обсуждать это как-то не конструктивно, посему этот разговор предлагаю закончить. Если возникнут какие-то сложности в написании кода - пишите, обсудим.
0
Заблокирован
28.09.2015, 11:31
Tester64, начните с просмотра ссылок в этой теме. Может, дальше идти искать не придется
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
28.09.2015, 11:37  [ТС]
ой как тут разгорелись споры на такую простую тему))
Я уверен, что ваше недопонимание друг друга вызвано ни чем иным, как различными задачами, которые д.б. быть возложены на указанный сервис.
Вот смотрите пример: в моем случае мне нужен данный сервис банально для того, чтобы в письме, которое не html и т.п. была ссылка, но она была не 300 символов в длину, а от силы 15.. и при этом она не предназначена для того, чтобы ее "диктовать по телефону"
Мне просто надо "зарезать" кусок, который после слэша основного доменного имени и состоит из 200-250 знаков. Да и всех делов - просто для того, чтобы в письме эта ссылка смотрелась более-менее адекватно

Я когда от разного рода сервисов (причем достаточно крутых) получаю ссыль для подтверждения регистрации, которая на 4-5 строк в письме растягивается - ну меня эт коробит. Нет, не смертельно, конечно. А может даже и правильно - чтобы никто стоящий у Вас за спиной не смог эту ссыль запомнить.. но тем не менее
0
Заблокирован
28.09.2015, 11:42
Tester64, ссылки можно генерировать не случайные а последовательные. Возьмите алфавит из 36 (цифры и буквы) или 62 знаков (если различать малые и большие буквы).

Можно использовать сгенерированные MySQL последовательные уникальные числа и использовать их в качестве ссылок. Или делать из длинных цифровых короткие буквенно-цифровые ссылки.
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
28.09.2015, 11:44  [ТС]
Да, я ж и говорю: нужно отталкиваться от реально стоящей перед Вами задачи. Где-то такое решение вполне адекватно, а где-то - ну ни в какие ворота
0
Заблокирован
28.09.2015, 11:45
Laroux, мне все предельно понятно
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
28.09.2015, 11:46  [ТС]
Мне тоже.. Спасибо
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
28.09.2015, 11:54
Цитата Сообщение от Jodah Посмотреть сообщение
гугл "переадресация PHP" и через 3 минуты вы уже знаете решение
...как находясь ВНУТРИ страницы перекинутся на другую страницу. Это самый простой этап "переадресации"...

Но не как обратясь к несуществующей странице апача/нгинска в указанной папке (возможно тоже не существующей) перекинутся на ссылку с подмененным ключем. my.com/go/dFow49Fkd на my.com/go.php&id=dFow49Fkd
или с my.com/price/nout/asus/asus100 на my.com/price.php?group_id=nout/asus&id=2930293&color=black
...это ведь тоже "короткие ссылки"

Как я уже упоминал, по nginx я потратил (3-4 года назад больше) 4х часов на эксперименты. Стабильной работы не добился! А если добивался, то "плыли" другие ссылки... Может в апаче проще... Там хотя-бы не нужно ждать больше 30 секунд перезагрузки nginx. И в случае ошибки в общем файле настроек весь хостинг не падает... При том что примеров и инструкций было очень мало...

по апачу скорее помогут подобные конструкции http://www.shkodenko.kiev.ua/i... ent_id=226
нашел по "apache mod_rewrite переадресация"
...но как я и сказал, надо убить несколько часов на то чтобы разобраться...

Добавлено через 3 минуты
я говорил про подобные "короткие ссылки!
https://youtu.be/UlYisIOP3FQ
короче чем
https://www.youtube.com/watch?v=UlYisIOP3FQ
0
Заблокирован
28.09.2015, 12:14
Цитата Сообщение от Июнь Посмотреть сообщение
Tester64, начните с просмотра ссылок в этой теме. Может, дальше идти искать не придется
В nginx делается аналогично. В интернете даже онлайн-конвертеры для этого есть.

Еще один пример: http://site.ru/go/dFow49Fkd
(нет отдельного перенаправления в /go.php&id=dFow49Fkd - все перенаправляется в одну точку входа, о чем я вам уже писала, ну а если вы не в состоянии прочитать написанное, я тут ничем помочь не могу)
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
28.09.2015, 13:46
Laroux, решение нашли, всё ок? Или ещё нужна помощь? Не совсем понял из вашего сообщения.

Цитата Сообщение от Tester64 Посмотреть сообщение
Но не как обратясь к несуществующей странице апача/нгинска в указанной папке (возможно тоже не существующей) перекинутся на ссылку с подмененным ключем. my.com/go/dFow49Fkd на my.com/go.php&id=dFow49Fkd
или с my.com/price/nout/asus/asus100 на my.com/price.php?group_id=nout/asus&id=2930293&color=black
Обычно делают 1 точку входа.

С помощью файла htaccess все запросы к сайту перекидываются на index.php (нечто подобное описано в вашей ссылке). В файле index.php реализуем роутер, т.е. анализируем URL и, в зависимости от переданных в нём параметров, подключаем нужный php-файл, отвечающий за отображение, взаимодействие с БД и т.д.

В этом случае не нужно париться с настройками веб-сервера, всё делаем в PHP. Примерно так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Допустим, мы перешли на site.ru/s/059212', где s - указание на то, что ссылка является короткой, 059212 - некий номер, вместо которого можно подставить и буквы, и что угодно.
 
$url = explode('/' $_SERVER['REQUEST_URI']);
 
if($url[1] == 's') // Обработка коротких ссылок
{
    $result = mysql_query('SELECT `url` FROM `urls` WHERE `short_url` = "' . $url[2] . '"');
    
    if(mysql_num_rows($result))
    {
        $result = mysql_fetch_assoc($result);
        header('Location: ' . $result['url']);
        die();
    }
    else
    {
        header('Location: /'); // Короткая ссылка не найдена, редирект на главную
        die();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2015, 13:46

Как пользоваться API сервиса яндекса коротких ссылок?
Добрый! Пытаюсь подключить к сервису яндекса коротких ссылок. var XHR = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest...

Нужен web программист для реализация проекта сервиса грузоперевозок
Необходимо реализовать проект на подобие http://perevezi.ru/ или http://www.vezetvsem.info/ Желательно прикрепить скрипт работы...

Для SOA приложений: реализация сервиса, предоставляющего услуги клиентским приложениям
Подскажыте как подступится к этой фигне Для SOA приложений: реализация сервиса, предоставляющего услуги клиентским приложениям;...

Реализация вектора ссылок
Доброго времени суток, дорогие форумчане! Проблема в следующем: мне дано было задание сделать игру Го(кто не знает это что-то вроде...

Реализация программы с использованием ссылок и указателей
Добрые люди! Подскажите, есть ли тут использованные ссылки и указатели? Препод не принимает лабораторную работу, пока я не реализую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru