php mbstring mcrypt mysql проблема со входом

Я чувствую, что схожу с ума. Надеюсь, кто-то может указать мне в правильном направлении.

Я создал систему входа в систему / регистрации после этого урока PHP ООП Вход / Регистрация системы

Все работало отлично до вчерашнего дня.
Мне пришлось пересобрать apache / php, чтобы установить расширение mbstring.

Я полный нуб, поэтому, пожалуйста, будьте терпеливы со мной.
Я смог отследить, что происходит.

Соль, которая хранится в MySQL, больше не работает для проверки пароля пользователя.

поле пароля в MySQL — varchar (64) с сопоставлением utf-8_general_ci

соляное поле — varchar (32) с сопоставлением utf-8_general_ci

Вот соответствующие функции, которые обрабатывают вход / регистрацию:

Hash.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

$user = new User();
$salt = Hash::salt(32);
try {
//SIGN UP USER
$user->create(array(
'email' => $remail,
'password' => Hash::make($pass, $salt),
'salt' => $salt,
'fname' => $fname,
'lname' => $lname,
'bname' => $bname,
'addr' => $addr,
'city' => $city,
'state' => $state,
'zip' => $zip,
'phone' => $bphone,
'djoined' => date('Y-m-d H:i:s')
));
} catch (Exception $e) {
$message = $e->getMessage();
returnErrorWithMessage($message);
}

User.php

public function create($fields = array()) {
if(!$this->_db->insert('users', $fields)) {
$input = $this->_db->errorz();

$output = implode(', ', array_map(
function ($v, $k) {
if(is_array($v)){
return $k.'[]='.implode('&'.$k.'[]=', $v);
}else{
return $k.'='.$v;
}
},
$input,
array_keys($input)
));

throw new Exception($output);
}
}

checklogin.php

public function login($email = null, $password = null, $remember = false) {

if(!$email && !$password && $this->exists()) {
Session::put($this->_sessionName, $this->data()->id);
} else {
$user = $this->find($email);

if($user) {
//This line fails >> if($this->data()->password === Hash::make($password, $this->data()->salt)) {

Session::put($this->_sessionName, $this->data()->id);

...
...
...

}
}
}
return false;
}

Я не изменил ничего, кроме установки расширения mbstring.
Почему пароли не совпадают ??? До вчерашнего дня все работало отлично.

Функция Hash одинакова для генерации и вставки в базу данных и для хеширования пароля пользователя на экране входа в систему для сравнения.

Любая помощь с благодарностью

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector