Как работает имя пользователя Facebook? - PullRequest
0 голосов
/ 19 ноября 2011

Прежде всего, это не просто перенаправление. Я пытаюсь понять структуру имени пользователя Facebook полностью. Так что не говорите мне использовать htaccess, я это уже знаю.

facebook.com/profile.php?id = username
facebook.com/profile.php?id = id

facebook.com/username
facebook.com/id

Эти URL делают то же самое и перенаправляют вас на

facebook.com/username

Если пользователь пытается использовать идентификатор пользователя, он проверяет идентификатор пользователя из db, выбирает имя пользователя и перенаправляет пользователя на facebook.com/username.

.

Пока все хорошо.

Все пользовательские действия сохраняются в БД с идентификатором пользователя, но при печати данных ссылки превращаются в имена пользователей. Таким образом, они должны получать данные об имени пользователя при каждом запросе. И при обработке данных имена пользователей превращаются в идентификаторы пользователей. Наконец, если пользователь не установил имя пользователя, идентификатор пользователя все еще работает.

Это то, что я понимаю до сих пор. Вот мои вопросы.

  • Как хранить имена пользователей в БД?
  • Я думаю, что эта структура вызовет много проблем с производительностью для моих запросов. Будет ли это?
  • Это требует много изменений в работающей системе. Как вы думаете, есть ли простой способ сделать это? (Что-то вроде обнаружения и перенаправления идентификаторов на страницу php, которая превращает их в имя пользователя)
  • Обработка пользователей, у которых нет имен пользователей, кажется мне большой проблемой. Как это побороть? Обновление:
  • Как определить, что следующий URL содержит идентификатор пользователя или имя пользователя?

Спасибо!

1 Ответ

3 голосов
/ 19 ноября 2011
  1. Сохраните его как столбец, который можно обнулять в пользовательской таблице
  2. Это не должно быть. Вы захватываете только один дополнительный столбец, и если вы действительно обеспокоены, захватите его один раз, а затем сохраните его в переменной
  3. В хорошо спроектированной рабочей системе логика должна быть в классе «Пользователь», поэтому она не должна быть сложной. Если это требует много изменений, то ваш код должен быть реорганизован и очищен, чтобы иметь логику в одном месте
  4. Ну, с логикой все в пользовательском классе, у вас есть один метод, который возвращает отображаемое имя, и если у пользователя есть имя пользователя, вы возвращаете версию имени пользователя, в противном случае используйте версию id
...