Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用passwordHash和passwordSalt登录CodeIgniter_Php_Sql_Codeigniter_Login - Fatal编程技术网

Php 使用passwordHash和passwordSalt登录CodeIgniter

Php 使用passwordHash和passwordSalt登录CodeIgniter,php,sql,codeigniter,login,Php,Sql,Codeigniter,Login,我的问题..变量$salted返回一个随机UUID,然后md5就是它。但是,我需要的是让变量$salted从与t1.PrincipalID=t2.UUID相对应的auth表返回数据库中passwordSalt字段的值。如何给变量$salted这个值 基本上,我如何在没有用户输入的情况下从数据库中给变量赋值。谢谢 代码片段..我的代码的基本部分 我的看法 <?php echo validation_errors(); ?> <?php echo form_open('verify

我的问题..变量$salted返回一个随机UUID,然后md5就是它。但是,我需要的是让变量$salted从与
t1.PrincipalID=t2.UUID
相对应的auth表返回数据库中passwordSalt字段的值。如何给变量$salted这个值

基本上,我如何在没有用户输入的情况下从数据库中给变量赋值。谢谢

代码片段..我的代码的基本部分

我的看法

<?php echo validation_errors(); ?>
<?php echo form_open('verifylogin'); ?>
<form>
    <input type="text" name="FirstName" placeholder="firstName">
    <input type="password" name="passwordHash" placeholder="Password">


    <input type="submit" name="login" class="login login-submit" value="Login">
</form></div>
我的模特

function login($firstName,$password)
{




     $salted  = sprintf('%s', md5(_uuid()));
     $hash = md5(md5($password) . ":" . $salted);

    $this->db->select('PrincipalID, FirstName')
        ->from('useraccounts AS t1, auth AS t2')
        ->where('t1.PrincipalID = t2.UUID')
        ->where('t1.FirstName', $firstName)
          ->where('t2.passwordHash', $hash);

    $this -> db -> limit(1);

    $query = $this -> db -> get();

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

您可以使用tank_auth library,它已经准备好了一切:)第二件事是,您应该向给定密码添加salt(因为您需要从数据库检索用户salt),然后使用哈希函数对其进行加密,然后才尝试在数据库中与用户验证它,而不是创建您自己的salt并尝试md5您的密码,为什么不直接使用密码\u散列函数呢?如果您还没有使用新的
password\u hash()
函数运行PHP5.5,那么您应该使用类似的函数。不要尝试自己搞加密。我没有创建数据库的奢侈,所有这些功能都会很棒。我正在尝试为在线多人游戏创建一个用户控制系统,这就是他们存储密码的方式。一个包含PasswowRDHash和passwordSalt等字段的auth表和一个useraccounts表使用firstName、last name等。其中每个主键由一个相互对应的UUID标识。我无法更改数据库的原因是用户可以在游戏中注册,这就是它链接回数据库的方式。我认为游戏是在PHP.5.5之前创建的。感谢您的帮助。
function login($firstName,$password)
{




     $salted  = sprintf('%s', md5(_uuid()));
     $hash = md5(md5($password) . ":" . $salted);

    $this->db->select('PrincipalID, FirstName')
        ->from('useraccounts AS t1, auth AS t2')
        ->where('t1.PrincipalID = t2.UUID')
        ->where('t1.FirstName', $firstName)
          ->where('t2.passwordHash', $hash);

    $this -> db -> limit(1);

    $query = $this -> db -> get();

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