【问题标题】:How to write this correctly with codeigniter?如何用 codeigniter 正确地写这个?
【发布时间】:2011-08-22 12:49:27
【问题描述】:

我正在尝试编写一个函数来使用 codeigniter 更新密码,这是代码

public function changepass(){
    $password = md5( $this->_clean($_POST['Password']) );
    $data = array(
       'Password' => $password
    );        
    $this->db->update('users', $data, array('UserName' => $_POST[UserName]));
} 

这会更新数据库,但仍会抛出消息

Severity: Notice
Message: Use of undefined constant UserName - assumed 'UserName'

在这种情况下如何防止该消息以及如何检查查询是否成功执行并回显消息“成功”?

【问题讨论】:

  • 我可能遗漏了一些东西,但是您是否验证 $_POST['U​​serName'] 是否是当前用户的用户名?如果没有,是什么阻止我发布您的用户名和我选择的密码,然后登录您的帐户?恕我直言,您根本不应该在这种情况下使用 $_GET/$_POST - 您应该从会话中获取要更新的用户。

标签: php codeigniter


【解决方案1】:

只要您在控制器中,就将 $_POST[UserName] 更改为 $this->input->post('UserName')。这在模型中不起作用。 CodeIgniter 也会破坏 $_POST 数组。

$this->db->affected_rows() 应该返回 1 表示成功。

【讨论】:

  • 感谢您的回答,我尝试了 $this->db->affected_rows(),如果用户键入与之前相同的 pass 返回 0。这意味着查询未执行?
  • 我猜它已执行但没有任何变化,意味着影响 0 行。我建议您也使用 id 而不是字符串来识别用户数据。
猜你喜欢
  • 1970-01-01
  • 2014-03-21
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多