вобщем такая проблемма у меня сервер л2 и у него в базе все пароли лежат в хеше вирлпул база 64 а когда с сайта запрашиваю опредилённый аккаунт он нелогинется скарей всего иззи того что при логине пасс кодируется в другом хеше вот скрипт логина тут разработчик скрипта сказал с 87 по 91 строчки править нада, но сто тока не пробовал ниработает PHP: <?php session_start(); if (__FILE__==$_SERVER['SCRIPT_FILENAME']) { die ("You can't access this file directly..."); } class login { var $name = 'login'; var $version = '1.0 CL@$Rev: 1125 $'; var $module_type = 'client'; var $admin_side = false; function auth_check($login, $passwd) { global $db; $login = addslashes($login); $result = $db['prim']->query("SELECT ".AC_PASSWORD." AS password FROM ".TBL_ACCOUNTS." WHERE ".AC_LOGIN." = '".$login."'"); return ($account = $db['prim']->fetch_array($result)) && $account['password'] == $passwd; } function clear_login($txt) { global $CFG_CLIENT,$CFG; $expire_t = time() - 86400; setcookie("logged_usr", "", $expire_t); setcookie("login_usr", "", $expire_t); setcookie("pass_usr", "", $expire_t); setcookie("auth_usr_hash", "", $expire_t); setcookie("serv_id", "", 0, '/'); unset($_COOKIE['serv_id']); $text = ''; $CFG_CLIENT['skin'] = 'login'; $CFG_CLIENT['default_module'] = $this->name; $CFG = $CFG_CLIENT; unset($_POST); unset($_COOKIE); $content = array( 'text_err' => $txt, 'text' => $text, 'ses_name' => session_name(), 'ses_id' => session_id(), 'form_action' => '?module='.$this->name, '_template_' => 'LOGIN', ); return $content; } function _main() { global $request, $db, $CFG_CLIENT,$CFG; if(isset($_REQUEST['logout'])){ return $this->clear_login("{login_logout}"); } if (!isset($_POST['getin_usr'])) { //no form submitted if (!isset($_COOKIE['logged_usr'])) { //no cookie set yet //login $CFG_CLIENT['skin'] = 'login'; $CFG_CLIENT['default_module'] = $this->name; $CFG = $CFG_CLIENT; $content = array( 'text_err' => '', 'text' => $text, 'ses_name' => session_name(), 'ses_id' => session_id(), 'form_action' => '?module='.$this->name, '_template_' => 'LOGIN', ); return $content; } else { //else check cookie auth. if ($this->auth_check($_COOKIE['login_usr'], $_COOKIE['pass_usr'])) { if ($_COOKIE['auth_usr_hash']==md5($_COOKIE['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT'])) { setcookie("logged_usr", '1'); setcookie("login_usr", $_COOKIE['login_usr']); setcookie("pass_usr", $_COOKIE['pass_usr']); setcookie("auth_usr_hash", md5($_COOKIE['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT'])); } else { return $this->clear_login("{login_have}"); exit; } } else { return $this->clear_login("{login_have}"); exit; } } } else { //else check form, cookie auth. if ($this->auth_check($_POST['login_usr'], base64_encode(pack('H*', sha1(utf8_encode($_POST['pass_usr'])))) ) ) { if(isset($_SESSION['captcha_keystring']) && isset($_POST['keystring']) && ($_SESSION['captcha_keystring'] == $_POST['keystring'])) { setcookie("logged_usr", '1'); setcookie("login_usr", $_POST['login_usr']); setcookie("pass_usr", base64_encode(pack('H*', sha1(utf8_encode($_POST['pass_usr']))))); setcookie("auth_usr_hash", md5($_POST['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT']) ); $CFG_CLIENT['skin'] = "default"; $CFG_CLIENT['default_module'] = "info"; $CFG = $CFG_CLIENT; header("Location: ./"); } else { return $this->clear_login("{login_err_captcha}"); exit; } unset($_SESSION['captcha_keystring']); } else { return $this->clear_login("{login_have}"); exit; } } } } ?> помогите плиз
Whirlpool(Base64): это кодировка а вот пример пароля зашифрованного в даную кодировку 6qGPqcqjrta9V4TIv48FIDXgiDu9s/Cs5HCSDVQ67bYaAW4UItOdIFhK69rZfBY3VtGHGizHFUELI/icAcFO2Q== мне нада в этом скрипте эту кадировку поставить
if ($this->auth_check($_POST['login_usr'], base64_encode(pack('H*', sha1(utf8_encode($_POST['pass_usr'])))) ) ) { Эту строку раскуривай... И функция какая-то у тебя долбанная PHP: function auth_check($login, $passwd) { global $db; $login = addslashes($login); $result = $db['prim']->query("SELECT ".AC_PASSWORD." AS password FROM ".TBL_ACCOUNTS." WHERE ".AC_LOGIN." = '".$login."'"); return ($account = $db['prim']->fetch_array($result)) && $account['password'] == $passwd; } Делай select count(*) from tbl_name where login='lgn' and password='pass'
спс за ответ но чтото я некак не разкурю твоего совета)) как я понимаю мне в этой части кода нада заменить кодировки пароля и всё PHP: return $this->clear_login("{login_have}"); exit; } } } else { //else check form, cookie auth. if ($this->auth_check($_POST['login_usr'], base64_encode(pack('H*', sha1(utf8_encode($_POST['pass_usr'])))) ) ) { if(isset($_SESSION['captcha_keystring']) && isset($_POST['keystring']) && ($_SESSION['captcha_keystring'] == $_POST['keystring'])) { setcookie("logged_usr", '1'); setcookie("login_usr", $_POST['login_usr']); setcookie("pass_usr", base64_encode(pack('H*', sha1(utf8_encode($_POST['pass_usr']))))); setcookie("auth_usr_hash", md5($_POST['login_usr'].date("d-a").$_SERVER['HTTP_USER_AGENT']) ); $CFG_CLIENT['skin'] = "default";
тебе сказала что и на что заменить. а если не можешь сам вставить и ждешь готовый исправленный вариант значит бросай свой сервак л2 ибо какой же из тебя админ. по каждому вопросу тысячу раз будешь тут темы создавать
13 строка: function auth_check($login, $passwd) { замени на: function auth_check($login, $passwd) { $passwd = base64_encode(hash('whirlpool', $passwd)); Funk Администрируя сервер ла2 необязательно знать php, js, ajax, perl etc... а вот mysql нада знать.