Страница приложения PHP / Разрешение конфликтов имени пользователя - PullRequest
1 голос
/ 05 декабря 2011

Я строю приложение PHP. Для моего приложения профили / страницы пользователя настраиваются и отображаются изначально, посетив domain.com/username или domain.com/accountnumber.

У меня такой вопрос: как вы это делаете, сохраняя при этом возможность создавать информативные страницы приложений с URL-адресом domain.com/pagename? Мой основной пример этого - vimeo, в котором есть vimeo.com/about, vimeo.com/developers и т. Д., И в то же время вы можете указать для своего имени пользователя vimeo.com/username. Меня беспокоит то, что я запусту свое приложение, и у меня не будет возможности создать ссылку, на которую я хочу, в будущем, потому что она берется как имя пользователя.

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

Ответы [ 4 ]

2 голосов
/ 05 декабря 2011

Есть несколько способов добиться того, что вы просите - прочитать о маршрутах и ​​маршрутизации, чтобы получить лучшее понимание.

Многие фреймворки предлагают способ достижения того, о чем вы просите - Zend Framework как единое целое.

Альтернативно, если вы создаете его с нуля, вы можете реализовать другую структуру, например

domain.com/u/joebloggs  
domain.com/user/joebloggs  
domain.com/a/123456  
domain.com/account/123456

. Это эффективно гарантирует, что на ваши URL-адреса не может повлиять кто-либо из пользователей.Вам нужно изучить Mod Rewrite , если вы используете создание собственных маршрутов.

0 голосов
/ 05 декабря 2011

Один из способов - использовать curl или аналогичный запросу domain.com/requestedname при регистрации, возвращая пользователю ошибку, если URL не возвращает 404. Что касается конфликтов future ,просто нет способа сделать это.Вы должны либо составить список в начале всех потенциальных зарезервированных слов в будущем и запретить эти имена пользователей (нецелесообразно), скрестить пальцы и надеяться, что конфликт не возникнет (также нецелесообразно), запросить изменение имени пользователя у пользователя при будущемвозникает конфликт (непрофессионально?) или используется другое пространство имен для имен пользователей и системных страниц.

0 голосов
/ 05 декабря 2011

Ответ таков: вы не разрабатываете свои URL так. Я знаю, что Vimeo делает это, но они, вероятно, столкнулись с этой головной болью.

Лучшее решение - это пространство имен ваших ресурсов. Посмотрите внимательно на URL-адреса stackoverflow для лучших примеров хорошего дизайна URL-адресов.

Если вы абсолютно застряли с этим дизайном URL, рассмотрите возможность организации ваших «токенов контента» (бит URL, который идентифицирует нужную вам вещь) в группы и присвоения им порядка приоритета. E.g.:

  1. если токен соответствует статической странице, показать статическую страницу
  2. иначе поиск и отображение страницы пользователя по имени учетной записи
  3. еще поиск и показ страницы пользователя по номеру счета

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

Если вы создадите новую статическую страницу позже и имя пользователя конфликтует, вы можете принудительно изменить его имя и отправить ему электронное письмо «Мне жаль». Надеемся, что это будет достаточно редкое явление, и вам не нужно решать его с помощью кода.

0 голосов
/ 05 декабря 2011

Уже доступно много платформ, предлагающих эту возможность, попробуйте Zend Framework .

Вам нужно прочитать о Маршрутах с ZF, чтобы реализовать то, что вам нужно.

...