данные сеанса, отображать URL профиля в CodeIgniter (с Tank Auth) - PullRequest
4 голосов
/ 08 января 2012

Я занимаюсь разработкой приложения на CodeIgniter и MySQL. Приложение включает в себя профили пользователей; Я использую Tank Auth для регистрации и аутентификации пользователей.

Я настроил пару пользователей и теперь хочу просмотреть профиль каждого пользователя. Мне нужно знать:

1 - Как добавить пользовательские данные сеанса в Tank Auth . У меня есть представление о том, как должен выглядеть код (http://codeigniter.com/user_guide/libraries/sessions.html),, но я не уверен, куда код должен идти в контроллере аутентификации, что довольно обширно - https://github.com/ilkon/Tank-Auth/blob/master/application/controllers/auth.php.

2 - Как передать пользовательские данные в представление . Я настроил функцию для извлечения пользовательских данных (см. Ниже) и хочу передать их в мой профиль - я думаю, что пользовательские данные (в коде) будут представлять пользовательские данные сеанса, которые будут включать идентификатор пользователя и имя пользователя, одно из которых мне понадобится для URL.

3 - URL-адреса Я хочу, чтобы URL-адреса выглядели следующим образом: http://example.com/users/3394 или http://example.com/users/fooy_foo. Я знаю, что нужно что-то сделать с маршрутизацией CRI URI, но я не уверен как связать это с результатами, полученными из запроса.

Вот код с контроллера пользователя {

function index()
    {    
    $id = $this->tank_auth->is_logged_in('id');

    $this->db->where('id', $id);
    $q = $this->db->get('user');
    $data['userdata']=$q;

    $this->load->view('user_view', $data);
    }
}

Ответы [ 2 ]

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

Я думаю, Рунар ответил за № 2 и № 3 за вас.Для # 1 откройте application / library / Tank_auth.php и имя функции login.Вы увидите следующие строки кода:

$this->ci->session->set_userdata(array(
                                       'user_id'       => $user->id,
                                       'username'      => $user->username,
                                       'status'        => ($user->activated == 1) ? STATUS_ACTIVATED : STATUS_NOT_ACTIVATED,
                                ));

set_userdata устанавливает сеанс.Вы можете добавить дополнительные переменные для установки здесь.

2 голосов
/ 08 января 2012
  1. Я не знаком с Tank Auth, но я бы посоветовал вам зайти на официальную страницу для Tank Auth.Может быть, вы получите лучшее понимание от чтения о библиотеке. Вот учебник, который показывает, как настроить Tank Auth с CodeIgniter.

  2. Глядя на ваш код, из пользовательского контроллера я вижу, что вы передаетеданные в правильном порядке.Вы передаете его в виде массива.На ваш взгляд, элемент массива будет доступен как переменная.Поэтому для использования данных в представлении вы просто используете переменную $userdata.Если вы хотите добавить больше данных для включения в представление, просто добавьте еще один элемент в массив $data!

  3. Если вы создадите контроллер с именем users, вы получитебыть в состоянии достигнуть этого в www.example.com/users.Затем вы можете отредактировать вашу index функцию, включив в нее параметр $uid, который сгенерирует ваш желаемый URL: www.example.com/users/3394.

Пример на # 3:

Допустим, вы создали контроллер users.Тогда это будет ваша функция index ():

function index($userid) {
  // You should probably have a model here that retrieves information
  // about the user based on the userid
  $data['user'] = $this->User_model->getUserInformation($userid);
  $this->load->view('users', $data);
}

Это один из способов, которым вы можете настроить свою функцию индекса.Переменная $userid определяется URL-адресом www.example.com/users/1234.Именно так работают URL в codeigniter.Подробнее об этом можно прочитать здесь .

...