首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Joomla用户表中获取密码,并在代码点火器应用程序中使用它们

从Joomla用户表中获取密码,并在代码点火器应用程序中使用它们
EN

Stack Overflow用户
提问于 2014-08-28 13:29:17
回答 1查看 2.2K关注 0票数 1

在我的服务器上有一个运行Joomla的网站。在public_html中,我创建了一个新目录,在这个目录中,有我的Codeigniter应用程序。同样,我是Codeigniter和Joomla的新手,我正在尝试使用Codeigniter构建一个登录表单。我不想创建一个新的表来存储用户信息,因为我已经在Joomla中拥有了这样的信息。我想从名为#_users的Joomla表中检索用户信息(用户名和密码),但问题是在Joomla中以不同的方式存储密码。它使用md5和盐串。这是我在Codeigniter的模型:

代码语言:javascript
复制
<?php
Class User extends CI_Model{

function login($username, $password){
  $dbjoomla = $this->load->database('my_joomla_db');
  $dbjoomla-> select('id, username, password');
  $dbjoomla-> from('users');
  $dbjoomla-> where('username', $username);
  $dbjoomla-> where('password', md5($password));
  $dbjoomla-> limit(1);

  $query = $dbjoomla-> get();

    if($query -> num_rows() == 1){
     return $query->result();
    }
    else{
     return false;
    }
  }
 }

我能够连接到Joomla的user表(因为$dbjoomla不是空的,并且是设置的),但是由于存储在Joomla中的密码格式,代码还不能工作。我只能使用md5($password)检索它。如何获得Joomla密码并在我的Codeigniter应用程序上进行验证?这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-28 15:14:50

我不知道Joomla是如何加密他们的密码的,但是他们可能在数据库中有盐。

首先选择->where(‘用户名’,$username);

然后,由于您应该得到1行,所以您将使用->row()方法而不是->result()

代码语言:javascript
复制
$dbjoomla = $this->load->database('my_joomla_db');
$q = $dbjoomla
           ->select('id, username, password, salt')
           ->from('users')
           ->where('username', $username)
           ->get();
$row = $q->row();

现在您有了包含加密密码的行& salt,让我们确保用户输入的密码是正确的(您必须检查Joomla以确保如何加密密码-这只是一个例子)

代码语言:javascript
复制
$JoomlaEncryptedPassword = md5($PasswordGivenByUser.$row->salt);
if ( $JoomlaEncryptedPassword === $row->password ) {
   return $row;
}else{
   return FALSE;
}

如上面所示,我们正在复制Joomla所做的加密&将其与数据库中存储的密码进行比较,如果信息正常,则返回行,否则返回FALSE

现在这个概念已经很清楚了,您所要做的就是挖掘Joomla文件,看看它们是如何加密密码的,这样您就可以实现它了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25550014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档