Codeigniter: я хотел бы создать URL-адреса пользователей для своих пользователей, когда они создают имя пользователя - PullRequest
0 голосов
/ 08 января 2011

Я хотел бы создать такой URL для моих пользователей, когда они регистрируют имя пользователя mysite.com/username

Я ищу много постов на этом сайте, и я вижу людей, делающих это так: mysite.com/user/username

Я хотел бы избавиться от пользователя и просто перейти на mysite.com/username

.

Как лучше всего это сделать?

Ответы [ 3 ]

5 голосов
/ 08 января 2011

Вы можете посмотреть на маршруты:

http://codeigniter.com/user_guide/general/routing.html

Вы вводите маршруты в config / rout.php

Как пример:

$route['([a-zA-Z]+)'] = "main_controller/user_function/$1";

Но, как сказано выше @Nylon Smile, если вы попытаетесь использовать выход из системы, он попытается получить доступ к странице пользователя для выхода из системы.

2 голосов
/ 09 января 2011

Вы можете сделать это, добавив элемент в массив $ route в 'config / rout.php':

$route['([a-zA-Z0-9_-]+)'] = "user/index/$1";

Это сопоставляет example.com/whither с функцией 'index''user' controller.

Да, будут конфликты, если у вас есть контроллер 'logout' и пользователь с именем 'logout'.Вы можете решить эту проблему, добавив следующий элемент в массив $ route перед вышеупомянутым:

$route['logout'] = "logout";

и оставив черный список имен пользователей, в который входят ваши контроллеры.Это потребует некоторого обслуживания, поэтому вы, возможно, захотите использовать другие решения, перечисленные здесь, которые содержат префикс «user /» в URL перед своим именем пользователя и избегают всего этого.

2 голосов
/ 08 января 2011

Я не знаком с CodeIgniter, но вот общий ответ, почему люди не используют mysite.com/username:

mysite.com / user / username - хорошее решение, потому что обычно диспетчер URLпередает имя пользователя в функцию / модуль, который обрабатывает страницу пользователя.

mysite.com / username - плохое решение, потому что ваш диспетчер должен будет иметь жадное правило после всех ваших других правил, чтобы передать все, кроме этихпредыдущие правила для модуля / функции, которая обрабатывает страницу пользователя.

Теперь предположим, что вы хотите использовать mysite.com/username, и предположим, что у вас есть mysite.com/logout, который выводит пользователей на страницу выхода из системы.Пользователь приходит и регистрирует себя, используя «logout» в качестве своего имени пользователя.Тогда как вы собираетесь сказать, зайдя на mysite.com/logout? Мистер Выйти хочет выйти из системы или хочет увидеть свою страницу?

...