【问题标题】:session data, display profile URLs in CodeIgniter (w/Tank Auth)会话数据,在 CodeIgniter 中显示配置文件 URL(w/Tank Auth)
【发布时间】:2012-01-08 03:02:46
【问题描述】:

我正在使用 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 - 如何将用户数据传递给视图。我已经设置了一个函数来检索用户数据(见下文)并希望将其传递给我的个人资料视图——我认为用户数据(在代码中)将代表自定义会话数据,其中将包括用户的 id和用户名,我需要其中一个作为 URL。

3 - 网址 我希望网址看起来像这样:http://example.com/users/3394http://example.com/users/fooy_foo。我知道我需要对 CI 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);
    }
}

【问题讨论】:

    标签: php mysql codeigniter tankauth


    【解决方案1】:

    我猜 Runar 已经为你回答了 #2 和 #3。 对于 #1,打开 application/libraries/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】:
    1. 我不熟悉 Tank Auth,但我建议您查看 official page 的 Tank Auth。也许你会从阅读图书馆得到更好的理解。 Here's 介绍如何使用 CodeIgniter 设置 Tank Auth 的教程。

    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 中的工作方式。你可以阅读更多关于它的信息here

    【讨论】:

    • 感谢您的回复。我检查了 Tank Auth 文档,但找不到有关添加自定义会话数据的信息。但是你能给我举个#3的例子吗?如何包含 $uid 参数来获取 URL?
    • 顺便说一句。我找到了一个关于如何使用 codeigniter 设置 tank auth 的教程。它已有一年的历史,但可能对您的目的有用。 expertnotfound.wordpress.com/2011/01/20/setting-up-tank-auth-2
    • 谢谢,我已经设置了 Tank Auth 并开始工作。我查看了代码,找不到会话数据中包含哪些变量。这就是为什么我问了问题的第一部分。
    • 在我发布问题之前它已经在工作了。我试图找出如何呈现数据。我选择了您对问题 #2 和 #3 的回答。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2011-11-06
    • 1970-01-01
    • 2011-12-19
    相关资源
    最近更新 更多