![]() |
Показаны 15 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VB интеграция (http://netadmin.ws/forum/forumdisplay.php?forumid=79)
-- vB3 + chat.php.spb.ru (http://netadmin.ws/forum/showthread.php?threadid=9358)
vB3 + chat.php.spb.ru
Народ, кто может подсказать что да как сделать для совмещения базы воблы и чата chat.php.spb.ru
на второй вобле, чат отлично брал данные из БД, а под тройкой возникает такая проблема.
Логинишься в чат (логин пароль верные) и выдает ошибку, что типа такой ник возможно не зарегистрирован или пароль к ниму не подходит, а если с такими же данными зайти на форум, то на форуме все отлично
__________________
Tu ne cede malis, sed contra audehtior
Не покоряйся беде, но смело иди навстречу.
нужно два раза использовать md5, в базе пароль храниться в следующем виде md5(md5('пароль')).
polo добавил 15-08-2004 в 12:54:48:
посмотри также страницу на форуме, где вводиться пароль, там используется js функция md5, те скрипту посылаеться уже md5 хэш пароля, а в скрипте еще раз используеться md5.
__________________
Всегда есть решение.
Не подскажете более подробно, как всё же можно решить данную проблему с чатом chat.php.spb.ru?
Спасибо.
Bratok
у тебя коммерческая версия чата?
__________________
Чему быть, того не миновать
Bratok
удалось решить проблему?
если удалось, помоги остальным 
__________________
Чему быть, того не миновать
quote:
Первоначальное сообщение от polo
нужно два раза использовать md5, в базе пароль храниться в следующем виде md5(md5('пароль')).
polo добавил 15-08-2004 в 12:54:48:
посмотри также страницу на форуме, где вводиться пароль, там используется js функция md5, те скрипту посылаеться уже md5 хэш пароля, а в скрипте еще раз используеться md5.
function check_extern_pass($chatpwd, $forumpwd)
{
if (sl(md5($chatpwd))==sl($forumpwd)) return 1;
return 0;
}
__________________
Чему быть, того не миновать
Что делает функция sl?
polo добавил 30-05-2005 в 08:24:05:
допустим есть у нас пароль: 123456, в базе форума он будет хранится как `14e1b600b1fd579f47433b88e8d85291`, сравниваем пароли:
md5(md5('123456')) == '14e1b600b1fd579f47433b88e8d85291' // даст true
Используйте отладочные функции типа echo если что-то не получается и на экране смотрите в чем дело.
__________________
Всегда есть решение.
polo
удалось выяснить, что функция sl в указанном участке кода (цитирую):
------------------------------------------------------------
Переводит стринговый аргумент в нижний регистр
------------------------------------------------------------
if md5(md5($chatpwd)))==$forumpwd return 1;
не работает 
вот, кстати, нашёл в сорцах чата функцию sl
function sl($str) {
if ($GLOBALS['locale'])
return strtolower(@strval($str));
else
return strtr($str,$GLOBALS['preg_rus2'].$GLOBALS['preg_eng2'],$GLOBALS['preg_rus1'].$GLOBALS['preg_eng1']);
}
__________________
Чему быть, того не миновать
echo $chatpwd;
echo $forumpwd;
Посмотри что выводит.
Oткуда берется $chatpwd - из базы или из формы?
__________________
Всегда есть решение.
polo
вобщем, сделал $echo обоих паролей, вот что обнаружил:
$forumpwd выводится точно такой же, какой лежит в базе (через phpMyAdmin проверил), а вот $chatpwd вылазит какой-то левый, я его 1 раз через md5 и 2 раза пробовал прогнать - он всё равно не совпадает с $forumpwd. а есть ли скрипт, который проводит обратное хэширование или Дехэш, т.е. из кучи символов после хэширования (е74а5ы74п4р5н7р и т.д.) в нормальный пасс?
__________________
Чему быть, того не миновать
quote:нету
Дехэш, т.е. из кучи символов после хэширования (е74а5ы74п4р5н7р и т.д.) в нормальный пасс?
__________________
Всегда есть решение.
polo
есть
psswordPro - http://www.insidepro.com
ты немного не прав. на самом деле форум хранит пароль так:
md5(md5($pass) . $salt); где salt - это поле в таблице ..._user, в нём 3 знака (к примеру, "A7."), это поле уникальное для каждого юзера. я проверял. выполнил хэширование как указано выше и мой созданный хэш совпал с хэшем, хранящимся в базе форуме (проверял через phpMyAdmin), но ... теперь новая проблема: =)
надо писать запрос к базе, чтобы была переменная, к примеру, $salt, которая будет для каждого юзера брать значение salt из базы и вставлять в md5(md5($pass) . $salt);
но я с mysql не дружу особо (как и с PHP =) так что не знаю ... буду пробовать, если можешь помочь, буду признателен 
__________________
Чему быть, того не миновать
Bratok, polo
всё. сделал.
выглядит это примерно так (заменить в файле src/export_universal.php:
mysql_connect('xxx', 'xxx', 'xxx');
mysql_select_db('xxx');
$sql = "SELECT salt FROM xxx_user WHERE username = '" . $mynick ."'";
$result = mysql_query($sql);
$row = mysql_fetch_object($result);
$salt = $row->salt;
function check_extern_pass($chatpwd, $forumpwd) {
global $salt;
if (md5(md5($chatpwd) . $salt) == $forumpwd) return 1;
return 0;
}
и ещё: нужно будет настроить некоторые поля (например, пол юзера) тоже вруную, но это уже техника. авторизация юзеров проходит (проверял). 
__________________
Чему быть, того не миновать
quote:эта прога не восстанавливает md5 хэш а прсто перебирает варианты. md5 хэш обратно перевести невозможно, для этого существуют другие алгоритмы типа crypt.
есть psswordPro - http://www.insidepro.com
__________________
Всегда есть решение.
polo
ну да, я это и имел ввиду
после её т.с. тестирования выяснилось следующее: пароль для одного md5 хэша (MySQL) она может подбирать несколько часов на довольно мощной машине, у меня даже терпения не хватило ждать
т.е. её эффективность проверить так и не удалось. вот.
__________________
Чему быть, того не миновать
| Формат времени GMT. Текущее время 06:41. | Показаны 15 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.