PHP盐生成在DB中没有正确显示?

时间:2017-01-31 22:16:07

标签: php mysql database salt

我正在为我正在制作的网站整理一个用户注册/登录系统,而在本教程中我遵循的盐应该是32个字符长。 当我运行脚本并将盐作为测试回显到页面上时,这会起作用,但是当我删除echo命令时,代码要么用空白盐更新mySQL DB,要么最多只更新1-2个字符。

我是PHP的新手(以及一般的编码)所以我在这里缺乏知识意味着我可能遗漏了一些明显的东西。我一遍又一遍地按照教程,仍然产生相同的结果。

有谁知道为什么会这样?

以下是代码:

Hash.php

<?php
class Hash {
    public static function make($string, $salt) {
        return hash('sha256', $string . $salt);
    }

    public static function salt($length) {
        return mcrypt_create_iv($length);



    }

    public static function unique() {
        return self::make(uniqid());

    }
}

?>

register.php:

<?php 
require_once 'core/init.php';


if(Input::exists()) {
if(Token::check(Input::get('token'))) {
        $validate = new Validate();
        $validation = $validate->check($_POST, array(
                'username' => array(
                    'required' => true,
                    'min' => 2,
                    'max' => 20,
                    'unique' => 'users'
                ),
                'password' => array(
                        'required' => true,
                        'min' => 6

                    ),
                'password_again' => array(
                        'required' => true,
                        'matches' => 'password'

                    ),
                'name' => array(
                        'required' => true,
                        'min' => 2,
                        'max' => 50

                    )


            ));


            if($validation->passed()) {
                $user = new User();

                $salt = Hash::salt(32);

                try {
                    $user->create(array(
                        'username' => Input::get('username'),
                        'password' => Hash::make(Input::get('password'), $salt),
                        'salt' => $salt,
                        'name' => Input::get('name'),
                        'joined' => date('Y-m-d H:i:s'),
                        'group' => 1
                    )); 

                    Session::flash('home', 'You have been registered and can now log in.');
                    header('Location: index.php');

                } catch(Exception $e) {
                    die($e->getMessage());
                }

            } else {
                foreach($validation->errors() as $error) {
                    echo $error, '<br>';
                }
            }
}
}
?>

0 个答案:

没有答案