Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
vano007

Как использовать БД пользователей IPB для внешнего скрипта

Рекомендованные сообщения

Я не совсем правильно назвал темку, простите. Вопрос такой - есть скрипт личного кабинета, нужно чтобы в нем использовались логин и пароль из БД моего форума. Как это реализовать примерно?

Поделиться сообщением


Ссылка на сообщение
Вопрос такой - есть скрипт личного кабинета, нужно чтобы в нем использовались логин и пароль из БД моего форума. Как это реализовать примерно?

Можно запросом к базе данных.

Для 2.3 логин мы берем из таблицы ibf_members, поле name

А пароль проверяем в таблице ibf_members_converge поля converge_pass_hash и converge_pass_salt По алгоритму md5(md5($pass_salt).md5($pass_hash))

 

Как-то так ...

Поделиться сообщением


Ссылка на сообщение
Можно запросом к базе данных.

Для 2.3 логин мы берем из таблицы ibf_members, поле name

А пароль проверяем в таблице ibf_members_converge поля converge_pass_hash и converge_pass_salt По алгоритму md5(md5($pass_salt).md5($pass_hash))

 

Как-то так ...

А можешь пример кода авторизации привести?

Поделиться сообщением


Ссылка на сообщение
А можешь пример кода авторизации привести?

Легко. Для Битрикс.

 

<?
define("IPB_TABLE_PREFIX", "ibf_");
define("IPB_VERSION", "2");

AddEventHandler("main", "OnUserLoginExternal", Array("__IPBAuth", "OnUserLoginExternal"));
AddEventHandler("main", "OnExternalAuthList", Array("__IPBAuth", "OnExternalAuthList"));

class __IPBAuth
{
function OnUserLoginExternal(&$arArgs)
{
	extract($arArgs);

	////////// <settings> ////////////
	$table_user = IPB_TABLE_PREFIX."members";
	$table_converge = IPB_TABLE_PREFIX."members_converge";
	$groups_map = Array(
		/*'IPB Group ID' => 'Local Group ID',*/
		'4' => '1'
		);
	////////// </settings> ////////////

	global $DB, $USER, $APPLICATION;

	if(IPB_VERSION == '1')
	{
		$strSql = "SELECT * FROM ".$table_user." WHERE name='".$DB->ForSql($login)."' AND password='".md5($password)."'";
	}
	else
	{
		$strSql =
			"SELECT t1.* ".
			"FROM ".$table_user." t1, ".$table_converge." t2 ".
			"WHERE t1.name='".$DB->ForSql($login)."' ".
			"	AND t1.email = t2.converge_email ".
			"	AND t2.converge_pass_hash = MD5(CONCAT(MD5(t2.converge_pass_salt), '".md5($password)."'))";
	}

	$dbAuthRes = $DB->Query($strSql);
	if($arAuthRes = $dbAuthRes->Fetch())
	{
		$arFields = Array(
			"LOGIN" => $login,
			"NAME" => $arAuthRes['title'],
			"PASSWORD" => $password,
			"EMAIL" => $arAuthRes['email'],
			"ACTIVE" => "Y",
			"EXTERNAL_AUTH_ID"=>"IPB",
			"LID" => SITE_ID
			);

		$oUser = new CUser;
		$res = CUser::GetList($O, $B, Array("LOGIN_EQUAL_EXACT"=>$login, "EXTERNAL_AUTH_ID"=>"IPB"));
		if(!($ar_res = $res->Fetch()))
			$ID = $oUser->Add($arFields);
		else
		{
			$ID = $ar_res["ID"];
			$oUser->Update($ID, $arFields);
		}

		if($ID>0)
		{
			$USER->SetParam("IPB_USER_ID", $arAuthRes['id']);

			$user_group = $arAuthRes['mgroup'];
			$arUserGroups = CUser::GetUserGroup($ID);
			foreach($groups_map as $ext_group_id => $group_id)
			{
				if($ext_group_id==$user_group)
					$arUserGroups[] = $group_id;
				else
				{
					$arUserGroupsTmp = Array();
					foreach($arUserGroups as $grid)
						if($grid != $group_id)
							$arUserGroupsTmp[] = $grid;
					$arUserGroups = $arUserGroupsTmp;
				}
			}
			CUser::SetUserGroup($ID, $arUserGroups);
			$arArgs["store_password"] = "N";

			return $ID;
		}
	}
}

function OnExternalAuthList()
{
	return Array(
		Array("ID"=>"IPB", "NAME"=>"Invision Power Board")
		);
}
}
?>

Поделиться сообщением


Ссылка на сообщение

А зачем именно для битрикс? И как примерно форма должна выглядеть, вернее она должна ссылаться к этому файлу? Дико извиняюсь за нубские вопросы, в php новичок.

Поделиться сообщением


Ссылка на сообщение

Скрипт это учебный пример с сайта Битрикс. Он требует доработки для реального использования, но функцию проверки пароля и логина, выполняет корректно.

 

А зачем именно для битрикс?

Потому что я его знаю и работаю с ним. И проще найти авторизацию для него, чем для абстрактного кода.

 

И как примерно форма должна выглядеть, вернее она должна ссылаться к этому файлу?

Какая форма?

 

Дико извиняюсь за нубские вопросы, в php новичок.

Кто писал скрипт личного кабинета? Пусть допишет авторизацию из базы Битрикс.

Поделиться сообщением


Ссылка на сообщение

Блин мне самому нужно найти эту фигню, никто мне не помогает да и нет знакомых которые помогли бы в этом.

Можно запросом к базе данных.

Для 2.3 логин мы берем из таблицы ibf_members, поле name

А пароль проверяем в таблице ibf_members_converge поля converge_pass_hash и converge_pass_salt По алгоритму md5(md5($pass_salt).md5($pass_hash))

 

Как-то так ...

Мне нужен пример этого кода

Поделиться сообщением


Ссылка на сообщение
05/30/10 15:42 (изменено)
Мне нужен пример этого кода

Извиняюсь за глупый вопрос - что он вам даст? Нужно писать именно под ваш скрипт. Пример вам выше предоставили.

 

Если уж так нужно - пишите в личку - набросаю вам простенький пример с комментами.

Изменено пользователем L-7

Поделиться сообщением


Ссылка на сообщение
Извиняюсь за глупый вопрос - что он вам даст? Нужно писать именно под ваш скрипт. Пример вам выше предоставили.

 

Если уж так нужно - пишите в личку - набросаю вам простенький пример с комментами.

Отправил ЛС

Поделиться сообщением


Ссылка на сообщение
Извиняюсь за глупый вопрос - что он вам даст? Нужно писать именно под ваш скрипт.

Об этом я и говорил. :)

Не факт, что пароля и логина было достаточно.

И надо решать с помощью MySQL, а не через API

 

Если уж так нужно - пишите в личку - набросаю вам простенький пример с комментами.

ОК. Я тогда не буду заканчивать пример.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...