Php Codeigniter:使用户从数据库中获取的详细信息可由任何控制器或方法中的方法访问的最简单方法
我已经问过这个问题了,但以一种让人困惑的方式 因此,我想要实现的是: 我有一个方法get_user_by_email(),用于从注销用户的数据库表中获取行Php Codeigniter:使用户从数据库中获取的详细信息可由任何控制器或方法中的方法访问的最简单方法,php,mysql,codeigniter,Php,Mysql,Codeigniter,我已经问过这个问题了,但以一种让人困惑的方式 因此,我想要实现的是: 我有一个方法get_user_by_email(),用于从注销用户的数据库表中获取行 public function get_user_by_email($email_post = '') //post email grabbed from reset password controller { if (empty($email_post)) { return FALSE; } $query = $this->d
public function get_user_by_email($email_post = '') //post email grabbed from reset password controller
{
if (empty($email_post))
{
return FALSE;
}
$query = $this->db->query("SELECT * FROM users WHERE email = '$email_post'");
$query->row();
$row = $query->row();
$user_id = $row->{'id'};
$email = $row->{'email'};
$first_name = $row->{'first_name'};
$last_name = $row->{'last_name'};
//e.g. example below is just an example and obviously wouldn't work but the variables are what I use in my mysql querys ...eg. WHERE email = $email etc
return $email;
return $first_name;
return $last_name;
return $user_id;
}
上面的代码不起作用,我知道这一点,但我给出了一个示例,说明我如何处理从行中获得的数据
我只是想了解一下如何通过out、确认、重置密码控制器以及创建新密码控制器来实现这一点
我该怎么做
新车型
class Get_user_by_email extends CI_Model {
public function __construct() {
parent::Ci_Model();
}
public function process($email_post = '') //post email grabbed from reset password controller
{
if (empty($email_post))
{
return FALSE;
}
return $this->db->query("SELECT * FROM users WHERE email = '$email_post'");
}
}
新控制器
<?php
class Account extends FH_Controller {
public function __construct() {
parent::__construct();
$this->load->model('get_user_by_email');
}
public function reset_password()
{
$this->load->view('reset_password');
if ($this->get_user_by_email->process($this->input->post('e-mail')))
{
$query = $this->get_user_by_email->process();
print_r($query);
}
}
public function confirm_reset_code()
{
$this->load->view('confirm_reset_code');
}
public function create_new_password()
{
$this->load->view('create_new_password');
}
}
将函数添加到中,然后您可以在需要时将模型加载到不同的控制器中。请阅读文档
范例
class User_model extends Model {
function User_model()
{
parent::Model();
}
function get_user_by_email($email)
{
.....
}
}
将其保存到application/models/user_model.php,然后在任何控制器中调用:
$this->load->model('user_model');
$user_data = $this->user_model->get_user_by_email('me@example.com');
然后按您喜欢的方式播放用户数据您不能多次返回。只需创建一个数组,然后返回该数组
而不是$row=$query->row()代码>,使用$row=$query->row_数组()代码>,然后返回该数组
此函数应位于模型文件中,该文件可从任何控制器加载
编辑:新代码的一些更改:
parent::Ci_Model()代码>应该是父项::u construct()代码>(不要混合使用php5和php5构造函数)
您需要在$query
上调用行()
或行数组()
,以获得结果。我建议您不要返回$query
$this->get_user_by_email->process()
应该是$this->Get_user_by_email->process()代码>(型号以大写字母开头)
我刚刚就这个主题做了一个简单的介绍,介绍了如何构造“受保护”控制器,同时定义一个全局$the_user
变量,该变量在所有受保护控制器和视图中都可用
我将尝试为这个答案编写一个摘要,但在此之前,请签出。简单地说,最简单的方法是将该信息存储在cookie/会话中。通常我会存储用户的电子邮件、姓名和用户id。当然,我也会加密存储在cookie/会话中的信息:)例如,在链接中找到的,单击“模型”或此处$this->user\u model->get\u user\u by\u email
应该是$this->user\u model->get\u user\u by\u email
(模型以大写字母开头)我建议在尝试使用CodeIgniter之前先阅读CodeIgniter用户指南()。这是一个模型文件。它实际上仍然有点混乱,您能详细说明您正试图实现的目标吗?你的标题似乎与你在问题正文中提出的不同。我总是打开手册,但有时在其他地方寻求帮助是很好的。我把两者结合起来……我明白。我只是说你想做的是定义一个模型文件。我很感激你的回答。我想从所有对这篇文章的回复来看,我可能有足够的时间来处理和做我需要做的事情。只是我没想到在编写了完整的用户注册、激活和从头开始登录的代码后,我会被密码重置功能卡住。包括自动登录。我决定不使用预先制作的系统,因为我还在学习,并且从我犯的错误中学到了很多。但有时这确实让我很恼火,我在过去的两天里一直在尝试重新设置密码,我差点就要结束了。现在我要试一试了。已经创建了模型,所以每当我需要这些变量时,我都会调用该模型方法。我知道return不能像我那样多次使用。我只是想给出一个如何使用这些变量的例子。行数组和行都可以工作,但我想做的是在model方法的末尾返回它。然后使用my中的数组中的数据controller@Psychonetics:好的。你还卡住了吗?恐怕是的。我已经创建了get_user_by_电子邮件模型。我已经在这篇文章中添加了这段代码。这真的是你要找的第二和第三部分。。。再说一次,如果我正确理解你的问题。