- Баллы
- 61
Нет, все та же "members_pass_salt".
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
/**
* Encrypt a plaintext password
*
* @param string $password Password to encrypt
* @return string Encrypted password
* @todo [Future] When we increase minimum PHP version, adjust blowfish to $2y$
*/
public function encryptedPassword( $password )
{
/* New password style introduced in IPS4 using Blowfish */
if ( mb_strlen( $this->members_pass_salt ) === 22 )
{
return crypt( $password, '$2a$13$' . $this->members_pass_salt );
}
/* Old encryption style using md5 */
else
{
return md5( md5( $this->members_pass_salt ) . md5( \IPS\Request::legacyEscape( $password ) ) );
}
}
Перепишу щас скрипт.Там сейчас вообще другая структура, и данного файла нет.
Не слишком силен в php, но думаю эта часть отвечает за хэширование.
PHP:/** * Encrypt a plaintext password * * @param string $password Password to encrypt * @return string Encrypted password * @todo [Future] When we increase minimum PHP version, adjust blowfish to $2y$ */ public function encryptedPassword( $password ) { /* New password style introduced in IPS4 using Blowfish */ if ( mb_strlen( $this->members_pass_salt ) === 22 ) { return crypt( $password, '$2a$13$' . $this->members_pass_salt ); } /* Old encryption style using md5 */ else { return md5( md5( $this->members_pass_salt ) . md5( \IPS\Request::legacyEscape( $password ) ) ); } }
А где у тебя лежит sql_utils и этот файл с хэшированием?Ошибка при парсинге ответа... Файлы пусты.
Пробуй./public_html/auth(fmx)/sql_utils.php
/public_html/system/member/member.php
Вывел хеширование в скрипт, попробуй еще.Ошибка при парсинге ответа... Файлы пусты.
Sql_utils.phpWebMCR: куда этот код??
Я уже разобрался , но спасибо!Sql_utils.php
напиши в лс мне нужна помощьА где у тебя лежит sql_utils и этот файл с хэшированием?
Ну так сам напиши, коль тебе нужна. Я откуда то знаю, что тебе надо?напиши в лс мне нужна помощь
<?php
include_once('settings.php');
define('USER_EXISTS' , 0);
define('USER_NOT_EXISTS', 1);
define('SQL_ERROR' , 2);
function IsPlayerInBase($db_handle, $login, $password) {
global $players_table_name;
$sth = $db_handle->prepare("SELECT `password` FROM `{$players_table_name}` WHERE `username`=:login");
if ($sth->execute(array('username' => $login))) {
$gethash=$sth->fetch(PDO::FETCH_ASSOC);
$hash = $gethash['password'];
$exp = preg_split('/\\$/', $hash);
$salt = $exp[2];
$rpass = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
} else {
return USER_NOT_EXISTS;
}
$user = array(
'username' => $login,
'password' => $rpass
);
$sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `username`=:login AND BINARY `password`=:password");
if ($sql->execute($user)) {
if ($sql->fetchColumn()) {
return USER_EXISTS;
} else {
return USER_NOT_EXISTS;
}
} else {
return SQL_ERROR;
}
}
?>
Потому что не надо было ничего трогать)День добрый!, можете помочь с запросом для Authme?
Лаунчер выдает ошибку "error at SQL query"
В коде подправил "login" на 'username' - лаунчер начал писать "User not found"
PHP:<?php include_once('settings.php'); define('USER_EXISTS' , 0); define('USER_NOT_EXISTS', 1); define('SQL_ERROR' , 2); function IsPlayerInBase($db_handle, $login, $password) { global $players_table_name; $sth = $db_handle->prepare("SELECT `password` FROM `{$players_table_name}` WHERE `username`=:login"); if ($sth->execute(array('username' => $login))) { $gethash=$sth->fetch(PDO::FETCH_ASSOC); $hash = $gethash['password']; $exp = preg_split('/\\$/', $hash); $salt = $exp[2]; $rpass = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt); } else { return USER_NOT_EXISTS; } $user = array( 'username' => $login, 'password' => $rpass ); $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `username`=:login AND BINARY `password`=:password"); if ($sql->execute($user)) { if ($sql->fetchColumn()) { return USER_EXISTS; } else { return USER_NOT_EXISTS; } } else { return SQL_ERROR; } } ?>
Колонки в таблице: id - username - password - ip - lastlogin
<?php
include_once('settings.php');
define('USER_EXISTS' , 0);
define('USER_NOT_EXISTS', 1);
define('SQL_ERROR' , 2);
function IsPlayerInBase($db_handle, $login, $password) {
global $players_table_name;
$sth = $db_handle->prepare("SELECT `password` FROM `{$players_table_name}` WHERE `username`=:login");
if ($sth->execute(array('login' => $login))) {
$gethash=$sth->fetch(PDO::FETCH_ASSOC);
$hash = $gethash['password'];
$exp = preg_split('/\\$/', $hash);
$salt = $exp[2];
$rpass = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
} else {
return USER_NOT_EXISTS;
}
$user = array(
'login' => $login,
'password' => $rpass
);
$sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `username`=:login AND BINARY `password`=:password");
if ($sql->execute($user)) {
if ($sql->fetchColumn()) {
return USER_EXISTS;
} else {
return USER_NOT_EXISTS;
}
} else {
return SQL_ERROR;
}
}
?>
Потому что не надо было ничего трогать)
А по сути, я забыл кое-что заменить.
Вот рабочий пример:
PHP:<?php include_once('settings.php'); define('USER_EXISTS' , 0); define('USER_NOT_EXISTS', 1); define('SQL_ERROR' , 2); function IsPlayerInBase($db_handle, $login, $password) { global $players_table_name; $sth = $db_handle->prepare("SELECT `password` FROM `{$players_table_name}` WHERE `username`=:login"); if ($sth->execute(array('login' => $login))) { $gethash=$sth->fetch(PDO::FETCH_ASSOC); $hash = $gethash['password']; $exp = preg_split('/\\$/', $hash); $salt = $exp[2]; $rpass = '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt); } else { return USER_NOT_EXISTS; } $user = array( 'login' => $login, 'password' => $rpass ); $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `username`=:login AND BINARY `password`=:password"); if ($sql->execute($user)) { if ($sql->fetchColumn()) { return USER_EXISTS; } else { return USER_NOT_EXISTS; } } else { return SQL_ERROR; } } ?>