Общие принципы авторизации SMF

Автор pervak, 29 ноября 2007, 02:08:48

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

pervak

Тема интеграции система авторизации в разные CMS очень часто обсуждается, но нормальный, ответ нашел только здесь http://www.slaed.net/forum/index.php?showtopic=6836&st=20&p=67292&#entry67292 (за что отдельное спасибо автору!).

Итак, структура таблицы smf_members такая:
ID_MEMBER- внутренний idiник юзера
memberName - логин
dateRegistered - дата в таймстемпе (команда PHP time())
realName - развернутое человекопонятное имя
passwd - пароль. генерируется как sha1(strtolower($user_name) . $user_password)
emailAddress - адрес e-mail юзера
passwordSalt - добавка к паролю

Итого, для добавления нового юзера пригодятся такие строчки

$passwordSalt = substr(md5(rand()), 0, 4);
$user_regdate = time();
$user_info = $this->assoc("SELECT * FROM ".$prefix." WHERE id='$user_id'");
$user_name = htmlspecialchars(substr($user_info[login], 0, 25));
$password=sha1(strtolower($user_name) . $user_password);

// Запрос в базу
INSERT INTO ".$db_prefix."members (ID_MEMBER, memberName, dateRegistered, realName, passwd, emailAddress, ID_POST_GROUP, passwordSalt) VALUES ('$row[user_id]', '$user_name', '$user_regdate', '$user_name', '$passwd', '$row[user_email]', '4', '$passwordSalt')


Для авторизации пользователя в форум (например, когда он заходит под паролем для закрытых страниц сайта, обслуживаемых вашей CMS) используется куки. В куке содержится сериализированный массив с данными пользователя. Имя куки прописывается в настройках форума (файл Settings.php)

Итак, для авторизации я использую такую конструкцию

$forum_user=$this->assoc("SELECT ID_MEMBER, memberName, passwd, passwordSalt FROM childsep_forum.smf_members WHERE ID_MEMBER='".$user[id]."'");
if ($forum_user){
// залогинивание
$forum_user_id=$forum_user[ID_MEMBER];
$forum_username=$forum_user[memberName];
$passwd=$forum_user[passwd];
$passwordSalt=$forum_user[passwordSalt];
$user_cookie_t="SMFCookie735";
define('SMF', true);
include_once("forum/Settings.php");
require_once("forum/Sources/Subs-Auth.php");
require_once("forum/Sources/Load.php");

setLoginCookie(60 * $user_cookie_t+24000, $forum_user_id, sha1($passwd . $passwordSalt));
}


Еще раз спасибо за путь Патриоту, который сделал интеграцию в Slaed.

Inter

ЦитироватьpasswordSalt - добавка к паролю

$passwordSalt = substr(md5(rand()), 0, 4);

Получается всегда разное зачение этого параметра и оно всегда меняется в базе при входе на форум?

Спасибо за статью))
I'm the law and you can't beat the law

|censored| 'em and their law

Crack down at sundown

HongKilDong

Поделитесь файлом  smf_integration.zip который был выложен по вышеуказанной ссылке кто успел скачать.

Кстати ссылка изменилась - http://www.slaed.us/index.php?showtopic=6836&st=20&p=67292&#entry67292

AndreyB

Здравствуйте!
Пишу прогу.Необходимо реализовать одну функцию по регистрации пользователя.
Делаю инсерт см в базе есть запись.
Но не могу залогинится
В чем тут может дело?

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

AndreyB

Не получилось залогиниться.
Не пришло письмо активации акаунта.

Как активировать акаунт?
Подскажите плз

AndreyB

Запускал скрипт взял тут http://www.simplemachines.ru/index.php?topic=15085.0
Поьзователи добавились , но активации нет
Проблема схожа как и у меня

Mavn

1. Прочтите правила форума.
2. если у вас проблема с вышеуказанным скриптом то и вопросы там задавайте
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.