[Help] Обьеденить регистрацию на сайте и форуме

Статус
В этой теме нельзя размещать новые ответы.

Dark Angell

Читатель
Заблокирован
Регистрация
29 Фев 2008
Сообщения
1.035
Реакции
702
  • Автор темы
  • Заблокирован
  • #1
Собственно вопрос по теме:
есть сайт на движке дле и форум vB версии 3.8.3,нужно обьеденить регу сайт+форум,сразу говорю интеграции калиостро есть,но доп домен не хочу брать.В принципе нарыл в одном сайте такой код реги,авторизации и редактирования юзера через админку и сайт:
PHP:
			/**
			 * Build a strings of keys and values to use in SQL insert
			 *
			 * @return Array [0] => keys string, [1] => values string
			 * @param $data Array
			 */
			function build_insert_string( $data )
			{
				global $db;

				$keys = Array();
				$values = Array();

				foreach( $data as $key => $value )
				{
					$keys[] = $key;
					$values[] = '"' . $db->safesql( $value ) . '"';
				}

				$keys = implode( ',', $keys );
				$values = implode( ',', $values );

				return Array( $keys, $values );
			}

			$dle_name = $db->safesql( $member_id['name'] );
			$ipb_member = $db->super_query("SELECT id, name, mgroup,member_login_key FROM ibf_members WHERE name = '{$dle_name}'");

			if ( !$ipb_member['id'] )
			{
				// Member logged into DLE but not found in IPB
				// Lets create one !

				$email = $db->safesql($member_id['email']);
				$regpassword = $db->safesql($member_id['password']);
				$add_time = $db->safesql($member_id['reg_date']);
				$name = $db->safesql( $member_id['name'] );
				$_IP = $db->safesql($_SERVER['REMOTE_ADDR']);

				$salt = substr( str_shuffle( 'abcdefghijklmnopqrstuvwzyxABCDEFGHJIKLMNOPQRSTUXYZ1234567890!@#$%^&*()' ), 0, 5 ); // quick salt generator

				$converge = Array
				(
					'converge_email'     => $email,
					'converge_joined'    => $add_time,
					'converge_pass_hash' => md5( $salt . $regpassword ),
					'converge_pass_salt' => $salt
				);


				list( $keys, $values ) = build_insert_string( $converge );
				$db->query( "INSERT INTO ibf_members_converge({$keys}) VALUES({$values});" );

				$member_id = $db->insert_id();

				$login_key = md5( microtime() );

				$member = Array
				(
					 'id'					  => $member_id,
					 'name'                   => $name,
					 'members_l_username'	  => strtolower( $name ),
					 'members_created_remote' => 1,
					 'email'                  => $email,
					 'member_login_key'       => $login_key,
					 'member_login_key_expire' => time() + 3600 * 24 * 7 * 365,
					 'mgroup'                 => 3,
					 'posts'                  => 0,
					 'joined'                 => $add_time,
					 'ip_address'             => $_IP,
					 'view_sigs'              => 1,
					 'email_pm'               => 1,
					 'view_img'               => 1,
					 'view_avs'               => 1,
					 'restrict_post'          => 0,
					 'view_pop'               => 1,
					 'msg_total'              => 0,
					 'new_msg'                => 0,
					 'coppa_user'             => 0,
					 'language'               => 'ru',
					 'subs_pkg_chosen'        => 0,
					 'members_display_name'   => $name,
					 'members_l_display_name'  => strtolower( $name )
				);


				list( $keys, $values ) = build_insert_string( $member );
				$db->query( "INSERT INTO ibf_members({$keys}) VALUES({$values});" );

				$extra = Array
				(
					'id' => $member_id,
					'vdirs' => "in:Входящие|sent:Отправленные"
				);

				list( $keys, $values ) = build_insert_string( $extra );
				$db->query( "INSERT INTO ibf_member_extra({$keys}) VALUES({$values});" );

				// XBTT user
				$xbt_user = Array
				(
					'uid'		  => $member_id,
					'name'		  => $name,
					'email'		  => $email,
					'added'		  => $add_time,
					'peers_limit' => 1,
					'torrent_pass' => md5( microtime() . time() )
				);

				list( $keys, $values ) = build_insert_string( $xbt_user );
				$db->query( "INSERT INTO users({$keys}) VALUES({$values});" );

				// Newly created member
				$ipb_member = Array( 'id' => $member_id, 'name' => $name, 'mgroup' => 3, 'member_login_key' => $login_key );
			}

			// Login IPB member

			$ipb_member['id'] = (int) $ipb_member['id'];

			$db->query( "DELETE FROM ibf_sessions WHERE member_id = {$ipb_member['id']}" );
			$session_id  = md5( uniqid(microtime()) );

			$session = Array
			(
				'id'                 => $session_id,
				'member_name'        => $ipb_member['name'],
				'member_id'          => $ipb_member['id'],
				'member_group'       => $ipb_member['mgroup'],
				'login_type'         => 0,
				'running_time'       => time(),
				'ip_address'         => $_IP,
				'browser'            => $_SERVER['HTTP_USER_AGENT'],
				'location'           => 'idx,0,',
				'in_error'           => 0,
				'location_1_type'    => '',
				'location_1_id'      => 0,
				'location_2_type'    => '',
				'location_2_id'      => 0,
				'location_3_type'    => '',
				'location_3_id'      => 0,
		  	);

			list( $keys, $values ) = build_insert_string( $session );
			$db->query( "INSERT INTO ibf_sessions({$keys}) VALUES({$values});" );

			set_cookie( 'member_id', $ipb_member['id'], 365 );
            set_cookie( 'pass_hash', $ipb_member['member_login_key'], 365 );
			set_cookie( 'session_id', $session_id, 365 );
		}
который прописываеться в engine/modules/sitelogin.php это для входа и авторизации.
Код для регистрации engine/modules/register.php
PHP:
		/**
		 * Adding IPB member
		 */

			/**
			 * Build a strings of keys and values to use in SQL insert
			 *
			 * @return Array [0] => keys string, [1] => values string
			 * @param $data Array
			 */

			if ( !function_exists ( 'build_insert_string') )
			{
				function build_insert_string( $data )
				{
					global $db;

					$keys = Array();
					$values = Array();

					foreach( $data as $key => $value )
					{
						$keys[]  = $key;
						$values[] = '"' . $db->safesql( $value ) . '"';
					}

					$keys = implode( ',', $keys );
					$values = implode( ',', $values );

					return Array( $keys, $values );
				}
			}

			$salt = substr( str_shuffle( 'abcdefghijklmnopqrstuvwzyxABCDEFGHJIKLMNOPQRSTUXYZ1234567890!@#$%^&*()' ), 0, 5 ); // quick salt generator

			$converge = Array
			(
				'converge_email'     => $email,
				'converge_joined'    => $add_time,
				'converge_pass_hash' => md5( $salt . $regpassword ),
				'converge_pass_salt' => $salt
			);


			list( $keys, $values ) = build_insert_string( $converge );
			$db->query( "INSERT INTO ibf_members_converge({$keys}) VALUES({$values});" );

			$member_id = $db->insert_id();

			$login_key = md5( microtime() );

			$member = Array
			(
				 'id'					  => $member_id,
				 'name'                   => $name,
				 'members_l_username'	  => strtolower( $name ),
				 'members_created_remote' => 1,
				 'email'                  => $email,
				 'member_login_key'       => $login_key,
				 'member_login_key_expire' => time() + 3600 * 24 * 7 * 365,
				 'mgroup'                 => 3,
				 'posts'                  => 0,
				 'joined'                 => $add_time,
				 'ip_address'             => $_IP,
				 'view_sigs'              => 1,
				 'email_pm'               => 1,
				 'view_img'               => 1,
				 'view_avs'               => 1,
				 'restrict_post'          => 0,
				 'view_pop'               => 1,
				 'msg_total'              => 0,
				 'new_msg'                => 0,
				 'coppa_user'             => 0,
				 'language'               => 'ru',
				 'subs_pkg_chosen'        => 0,
				 'members_display_name'   => $name,
				 'members_l_display_name'  => strtolower( $name )
			);


			list( $keys, $values ) = build_insert_string( $member );
			$db->query( "INSERT INTO ibf_members({$keys}) VALUES({$values});" );

			$extra = Array
			(
				'id' => $member_id,
				'vdirs' => "in:Входящие|sent:Отправленные"
			);

			list( $keys, $values ) = build_insert_string( $extra );
			$db->query( "INSERT INTO ibf_member_extra({$keys}) VALUES({$values});" );


			// XBTT user (auto created)
			$xbt_user = Array
			(
				'uid'		  => $member_id,
				'name'		  => $name,
				'email'		  => $email,
				'added'		  => $add_time,
				'peers_limit' => 1,
				'torrent_pass' => md5( microtime() . time() )
			);

			list( $keys, $values ) = build_insert_string( $xbt_user );
			$db->query( "INSERT INTO users({$keys}) VALUES({$values});" );


			/**
			 * Create IPB session
			 */
			$session_id  = md5( uniqid(microtime()) );

			$session = Array
			(
				'id'                 => $session_id,
				'member_name'        => $name,
				'member_id'          => $member_id,
				'member_group'       => 3,
				'login_type'         => 0,
				'running_time'       => time(),
				'ip_address'         => $_IP,
				'browser'            => $_SERVER['HTTP_USER_AGENT'],
				'location'           => 'idx,0,',
				'in_error'           => 0,
				'location_1_type'    => '',
				'location_1_id'      => 0,
				'location_2_type'    => '',
				'location_2_id'      => 0,
				'location_3_type'    => '',
				'location_3_id'      => 0,
		  	);

			list( $keys, $values ) = build_insert_string( $session );
			$db->query( "INSERT INTO ibf_sessions({$keys}) VALUES({$values});" );

			set_cookie ( 'member_id', $member_id, 365 );
            set_cookie ( 'pass_hash', $login_key, 365 );
			set_cookie ( 'session_id', $session_id, 365 );

		}

	}

}
Код для редактирования юзера в админ панели сайта engine/inc/editusers.php:
PHP:
		/**
		 * Adding IPB member
		 */

			/**
			 * Build a strings of keys and values to use in SQL insert
			 *
			 * @return Array [0] => keys string, [1] => values string
			 * @param $data Array
			 */

			if ( !function_exists ( 'build_insert_string') )
			{
				function build_insert_string( $data )
				{
					global $db;

					$keys = Array();
					$values = Array();

					foreach( $data as $key => $value )
					{
						$keys[]  = $key;
						$values[] = '"' . $db->safesql( $value ) . '"';
					}

					$keys = implode( ',', $keys );
					$values = implode( ',', $values );

					return Array( $keys, $values );
				}
			}

			$salt = substr( str_shuffle( 'abcdefghijklmnopqrstuvwzyxABCDEFGHJIKLMNOPQRSTUXYZ1234567890!@#$%^&*()' ), 0, 5 ); // quick salt generator

			$converge = Array
			(
				'converge_email'     => $email,
				'converge_joined'    => $add_time,
				'converge_pass_hash' => md5( $salt . $regpassword ),
				'converge_pass_salt' => $salt
			);


			list( $keys, $values ) = build_insert_string( $converge );
			$db->query( "INSERT INTO ibf_members_converge({$keys}) VALUES({$values});" );

			$member_id = $db->insert_id();

			$login_key = md5( microtime() );

			$member = Array
			(
				 'id'					  => $member_id,
				 'name'                   => $name,
				 'members_l_username'	  => strtolower( $name ),
				 'members_created_remote' => 1,
				 'email'                  => $email,
				 'member_login_key'       => $login_key,
				 'member_login_key_expire' => time() + 3600 * 24 * 7 * 365,
				 'mgroup'                 => 3,
				 'posts'                  => 0,
				 'joined'                 => $add_time,
				 'ip_address'             => $_IP,
				 'view_sigs'              => 1,
				 'email_pm'               => 1,
				 'view_img'               => 1,
				 'view_avs'               => 1,
				 'restrict_post'          => 0,
				 'view_pop'               => 1,
				 'msg_total'              => 0,
				 'new_msg'                => 0,
				 'coppa_user'             => 0,
				 'language'               => 'ru',
				 'subs_pkg_chosen'        => 0,
				 'members_display_name'   => $name,
				 'members_l_display_name'  => strtolower( $name )
			);


			list( $keys, $values ) = build_insert_string( $member );
			$db->query( "INSERT INTO ibf_members({$keys}) VALUES({$values});" );

			$extra = Array
			(
				'id' => $member_id,
				'vdirs' => "in:Входящие|sent:Отправленные"
			);

			list( $keys, $values ) = build_insert_string( $extra );
			$db->query( "INSERT INTO ibf_member_extra({$keys}) VALUES({$values});" );


			// XBTT user (auto created)
			$xbt_user = Array
			(
				'uid'		  => $member_id,
				'name'		  => $name,
				'email'		  => $email,
				'added'		  => $add_time,
				'peers_limit' => 1,
				'torrent_pass' => md5( microtime() . time() )
			);

			list( $keys, $values ) = build_insert_string( $xbt_user );
			$db->query( "INSERT INTO users({$keys}) VALUES({$values});" );


			/**
			 * Create IPB session
			 */
			$session_id  = md5( uniqid(microtime()) );

			$session = Array
			(
				'id'                 => $session_id,
				'member_name'        => $name,
				'member_id'          => $member_id,
				'member_group'       => 3,
				'login_type'         => 0,
				'running_time'       => time(),
				'ip_address'         => $_IP,
				'browser'            => $_SERVER['HTTP_USER_AGENT'],
				'location'           => 'idx,0,',
				'in_error'           => 0,
				'location_1_type'    => '',
				'location_1_id'      => 0,
				'location_2_type'    => '',
				'location_2_id'      => 0,
				'location_3_type'    => '',
				'location_3_id'      => 0,
		  	);

			list( $keys, $values ) = build_insert_string( $session );
			$db->query( "INSERT INTO ibf_sessions({$keys}) VALUES({$values});" );

			set_cookie ( 'member_id', $member_id, 365 );
            set_cookie ( 'pass_hash', $login_key, 365 );
			set_cookie ( 'session_id', $session_id, 365 );
собственно как надо поправить переменные из этих трёх кусков чтобы авторизация+рега+редактирование пахало при условии что будет всё идти через сайт и работало без косяков,так как на форуме рега будет ссылаться на сайт и через него всё будет производиться ;).
ЗЫ.С php только начал дружить :ah:
 
а нафига через форму, сразу инсерт запрос в базу на добавление и не нужно этого лишнего кода
 
  • Автор темы
  • Заблокирован
  • #3
z3rg яж говорю с пыхом ток начал дружить,и то нет времени осваивать,друг запряг портал подымать,ща вкалываю шо ппц,поэтому и спрашиваю как и что,или облегчить код связующей реги
 
в дле ->engene -> modules-> register.php
там ищи строчку
PHP:
$db->query("INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('$name', '$regpassword', '$email', '$add_time', '$add_time', '".$config['reg_group']."', '', '', '', '', '".$_IP."')");
если база форума и дле в 1
добавь такойже запрос рядом только посмотри соответствия ячеек в vb, если необходимо поменяй местами

тоесть так, смотри дальше сам я немного начал до 6 ячейки
PHP:
$db->query("INSERT INTO vb_users (usergroupid, username, password, passworddate, email, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('".$config['reg_group']."', '$name', '$regpassword', '$add_time', '$email', '', '', '', '', '', '".$_IP."')");
 
  • Автор темы
  • Заблокирован
  • #5
тако впорос ещё,решил добавить пару строк в регистрацию по поводу общих ПС и ЛС,взял код из старой интеграции калиостро,собственно интересует
задействует двиг её или нет?
 
Если автор не против, задам тоже вопрос, касаемо этой темы.

Есть ли в свободном доступе полная интеграция ДЛЕ с Булкой? DLE + vBulletin v1.5
Т.е. не просто общая БД юзеров, но и:
-На сайт можно повесить ссылку "Обсудить на форуме" при переходе по которой автоматически создается(если нету) тема на форуме.
-Возле ссылки можно выводить количство постов обсуждения
?
 
  • Автор темы
  • Заблокирован
  • #7
Если автор не против, задам тоже вопрос, касаемо этой темы.
Есть ли в свободном доступе полная интеграция ДЛЕ с Булкой? DLE + vBulletin v1.5
Т.е. не просто общая БД юзеров, но и:
-На сайт можно повесить ссылку "Обсудить на форуме" при переходе по которой автоматически создается(если нету) тема на форуме.
-Возле ссылки можно выводить количство постов обсуждения
?
нет и не будет ;)
 

Почему так уверенно "и не будет"? О_о

Неужели это на столько востребованная вещь, что ни один программер без денег никогда не сделает и не выложит подобное?

ЗЫ: На Джумле полно бесплатных вещей, а на ДЛЕ...эх. Хотя ДЛЕ лучше джумлы в других планах...
 
  • Автор темы
  • Заблокирован
  • #9
Почему так уверенно "и не будет"? О_о
Неужели это на столько востребованная вещь, что ни один программер без денег никогда не сделает и не выложит подобное?
ЗЫ: На Джумле полно бесплатных вещей, а на ДЛЕ...эх. Хотя ДЛЕ лучше джумлы в других планах...
есть бесплатный аналог от финалсофта,интеграцию калиостро невозможно декодить по одной простой причине,деобфуксация после дезенда почти непреодалима ;)
 
есть бесплатный аналог от финалсофта
Это не аналог. Это просто интеграция юзеров на ДЛЕ и на Булке. И все.
Хотя да, буду ее юзать, автороу спасибо, что сделал бесплатно. Хотя бы так...

Но мне больше нужна другая интеграция, как уже говорил выше, да и в своем теме...

,интеграцию калиостро невозможно декодить по одной простой причине,деобфуксация после дезенда почти непреодалима ;)
Честно, плохо ориентруюсь в этих терминах, но после того, как погуглил возник вопрос - разве код у Калиостро на столько сложен?

Я нашел взломанную его интеграцию ДЛЕ с ИПБ, то вроде бы ничего сложного в коде) там заменить, там добавить - стандартная вещь. Что там декодить то? Это же не сложная программа. Просто достать нужно и все.
(кстате, что интересно, цена интеграции ДЛЕ с другими, не Вбулетенскими форумами, значительно дешевле и уже более реальней...( )

В общем ясно, что не достану бесплатно. Значит обойдусь без этого. Или есть пару знакомых программеров, они связывали Булку со своим самописным движком. Поспрашиваю как сделали и сам попробую интегрировать по тому же принципу) Вряд ли получится, не программер, но попробую)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху