【问题标题】:How can I access data in my database? - CodeIgniter如何访问数据库中的数据? - 代码点火器
【发布时间】:2014-09-17 18:16:31
【问题描述】:

我正在使用 CodeIgniter 并且有一个登录系统。我对 php 还是很陌生,我想知道一旦用户登录,我如何访问他/她的数据以在整个站点中使用?现在我正试图让它说欢迎“用户名”,但我不知道变量来自哪里以及我应该如何使用它们。现在在我的 home_view.php 我有:

    <div class="main">
    <h2>Welcome <?php echo $username; ?>!</h2>
</div>

它抛出这个错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: username

Filename: views/home_view.php

Line Number: 22

谁能告诉我怎么做?

【问题讨论】:

  • 您阅读过用户指南吗?我强烈建议您阅读介绍教程。这将指导您了解从数据库中检索和设置数据以及在视图中显示数据的基础知识:ellislab.com/codeigniter/user-guide/tutorial/index.html
  • 你也可以考虑只使用 PHP 基础知识(没有框架),这样在你跳入像 CodeIgniter 这样的框架之前,你可以很好地理解 PHP 语法等。就您现在的问题而言,它太宽泛了,因为您基本上是在问如何使用 CodeIgniter。

标签: php database codeigniter views


【解决方案1】:

问题:您如何访问已登录用户的数据以在整个站点中使用?

登录用户的特定数据通常存储在会话中。对于 codeigniter,您可以使用 $this-&gt;session-&gt;userdata('item'); 或例如 $this-&gt;session-&gt;userdata('username'); 访问会话数据。

但是,如果您使用的是特定的登录系统这取决于您使用的登录系统


自定义登录系统

从登录表单接收登录信息后,使用以下方法将数据传递给会话:

$newdata = array(
                   'username'  => 'johndoe',
                   'email'     => 'johndoe@some-site.com',
                   'logged_in' => TRUE
               );

$this->session->set_userdata($newdata);

然后使用以下内容引用用户名:

$this->session->userdata('username');

请参阅 Codeigniter 文档中的 Adding Custom Session Data


登录系统示例

一个流行的 codeigntier 身份验证库是Tank-Auth

使用Tank-Auth时,用户登录后,可以调用$this-&gt;tank_auth-&gt;get_username()(调用$this-&gt;ci-&gt;session-&gt;userdata('username'),如上所述)。然后可以将其存储并传递给视图。

在 Tank-Auth 中,您将看到:

应用程序/控制器/welcome.php

$data['user_id']    = $this->tank_auth->get_user_id();
$data['username']   = $this->tank_auth->get_username();
$this->load->view('welcome', $data);

应用程序/views/welcome.php

Hi, <strong><?php echo $username; ?></strong>! You are logged in now.

【讨论】:

    【解决方案2】:

    好的,当用户登录时,您需要将他或她的数据存储到 session 。 当您验证用户获取他或她的数据并将其存储在会话中时。

    $data = array(
                       'username'  => 'johndoe',
                       'email'     => 'johndoe@some-site.com',
                       'logged_in' => TRUE
                   );
    
    $this->session->set_userdata('logged_info', $data );
    

    然后你可以在任何地方得到它

    $userdata = $this->session->userdata('logged_info');
    

    【讨论】:

    • 这个问题在几个小时前就已经回答过了,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2011-10-25
    • 2013-04-20
    • 2015-06-06
    相关资源
    最近更新 更多