Перейти к публикации
  • Объявления

    • TheAndrey

      Правила раздела "Техподдержка"   17.03.2018

      Вы должны как можно подробне описась проблему. От этого зависит скорость нахождения решения проблемы. При необходимости прикрепляйте скриншоты. Укажите на какой CMS работает ваш сайт. При проблемах с Javascript рекомендуется указать данные из консоли Javascript, это ускорит решение проблемы.
  • 0
DelrayX

IP.Board (Интеграция DLE+IPB Rezer) Ошибка авторизации на форуме.

Вопрос

DelrayX

И так. Недавно поставил бесплатную интеграцию DLE+IPB от Rezer. Конечно я много начитался что она косяная. Но тем не менее она у меня работает но только с одной ошибкой. При авторизации на форуме возникает белая чистая страница по ссылке "/index.php?app=core&module=global&section=login&do=process". При это на сайте авторизация проходит, на форуме нет. Я начал копать и нашел файл из за которого у меня это происходит. Далее начал копать глубже и нашел код из за которого у меня отсутствует авторизация на форуме. 

 

public function onLogin( $member )
{
$this->DLE->Authorization( "dle", array(
"login"		=> $member['name'],
"passHash"	=> $member['members_pass_hash'],
) );	
}

Файл находится по адресу forum.****.net/admin/applications/forums/extension/memberSync.php. (Файл от интеграции)

Так же там находится стандартный файл от форума "memberSync.rename.php". В стандартном файле данная функции имеет такой код:

 

public function onLogin( $member )
{
}

Именно при таком коде авторизация на форуме начинает работать. Но при этом авторизация с форума на сайт пропадает. Если кто может помочь с кодом помогите=). И да не нужно писать что интеграция кривая я это и так знаю. Читайте тему!



Дополню пост!
 

//-------------------------------------------------------------======
	//	Общая авторизация
	//-------------------------------------------------------------======
	
	public function Authorization( $Type = "dle", $Info = array() ){
		global $is_logged, $member_id;
		
		if( $this->on !== true ) return "Mod is Off";
		if( $this->Config['on'] != "yes" ) return false;
		if( $this->Config['total_authorization'] != "yes" ) return false;
		
		switch( $Type ){
			
			// Авторизация на сайте (пользователь на форуме)
			case "dle":
				
				$login = $this->Config['login_name'] ? $_REQUEST[ $this->Config['login_name'] ] : $this->DBSafesql( $Info['login'] );
				$UserPass = ( $Info['password'] || !$_REQUEST[ $this->Config['login_pass'] ] ) ? $Info['password'] : $_REQUEST[ $this->Config['login_pass'] ];
				$UserPass = md5( $UserPass );
				$SqlPass = md5( $UserPass );
						
				$row = $this->DBSuperQuery( "SELECT `user_id`, `password` FROM ".$this->DleDBConfig['USERPREFIX']."_users WHERE name='{$login}'", "dle" );
				if( $row['user_id'] )
					{
						if( $row['password'] != md5( $UserPass ) )
							{
								if( $this->Config['total_passmaster'] == "yes" )
									{
										$passHash = $Info['passHash'];
										if( $passHash && $passHash == $row['password'] )
											{
												$this->DBQuery( "UPDATE ".$this->DleDBConfig['USERPREFIX']."_users SET `password`='{$SqlPass}' WHERE user_id='{$row['user_id']}'", "dle" );
											}
												else
											{
												return false;
											}
									}
										else
									{
										return false;
									}
							}
									
						$this->CoockieSet( "dle_user_id", $row['user_id'] );
						$this->CoockieSet( "dle_password", $UserPass );
								
						@session_register( "dle_user_id" );
						@session_register( "dle_password" );
								
						$_SESSION['dle_user_id'] = $row['user_id'];
						$_SESSION['dle_password'] = $UserPass;
								
						if( $this->DLEConfig['log_hash'] )
							{
								$hash = "";
								$salt = "abchefghjkmnpqrstuvwxyz0123456789";
								srand( ( double ) microtime() * 1000000 );
								for( $i = 0; $i < 9; $i++ ) $hash .= $salt{ rand( 0, 33 ) };
								$hash = md5( $hash );
										
								$_IP = $this->DBSafesql( $_SERVER['REMOTE_ADDR'] );
								$_TIME = ( time () + ( $this->DLEConfig['date_adjust'] * 60 ) );
								$this->DBQuery( "UPDATE ".$this->DleDBConfig['USERPREFIX']."_users SET hash='{$hash}', lastdate='{$_TIME}', logged_ip='{$_IP}' WHERE user_id='{$row['user_id']}'", "dle" );
								$this->CoockieSet( "dle_hash", $hash );
							}
					}
								
				
				break;
			
			// Авторизация на форуме (пользователь на сайте)
			case "ipb":
				
				if( $is_logged && !isset( $_COOKIE['member_id'] ) )
					{
						$login = $this->DBSafesql( $member_id['name'] );
						$Md5Pass = $_SESSION['dle_password'];
						
						$row = $this->DBSuperQuery( "SELECT member_id,member_login_key, members_pass_hash, members_pass_salt, member_group_id FROM ".$this->IPBDBConfig['sql_tbl_prefix']."members WHERE name='{$login}' LIMIT 1", "ipb" );
						
						$UserID = intval( $row['member_id'] );
						$Salt = $row['members_pass_salt'];
						$CoockiePass = $row['member_login_key'];
						$UserGroup = intval( $row['member_group_id'] );
						$IP = $this->DBSafesql( $_SERVER['REMOTE_ADDR'] );
						$Browser = $this->DBSafesql( $_SERVER['HTTP_USER_AGENT'] );
						$ThisTime = time();
						
						if( md5( md5( $Salt ).$Md5Pass ) != $row['members_pass_hash'] )
							{
								if( $this->Config['total_passmaster'] == "yes" )
									{
										if( $row['members_pass_hash'] == md5( $Md5Pass ) )
											{
												// Генерируем пароль и соль				
												$hash = $this->genIpbPass( $Md5Pass );
												$UserPassHash = $hash['UserPassHash'];
												$Salt = $this->DBSafesql( $hash['Salt'] );
												$this->DBQuery( "UPDATE ".$this->IPBDBConfig['sql_tbl_prefix']."members SET `members_pass_hash`='{$UserPassHash}', `members_pass_salt`='{$Salt}' WHERE name='{$login}'", "ipb" );
											}
												else
											{
												$this->CoockieSet( "member_id", $UserID );
												return false;
											}
									}
										else
									{
										$this->CoockieSet( "member_id", $UserID );
										return false;
									}
							}
							
						$SessionID = md5( time().microtime() );
						$this->DBQuery( "INSERT INTO ".$this->IPBDBConfig['sql_tbl_prefix']."sessions (id, member_name, member_id, ip_address, browser, running_time, login_type, member_group) VALUES ('{$SessionID}','{$UserName}','{$UserID}','{$IP}','{$Browser}','{$ThisTime}','0','{$UserGroup}')", "ipb" );
								
						$this->CoockieSet( "pass_hash", $CoockiePass );
						$this->CoockieSet( "session_id", $SessionID );
						$this->CoockieSet( "member_id", $UserID );
						
						return false;
					}
				
				break;
					
			default:
				return false;
				break;
		}
		
	}
	

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


Ссылка на сообщение
Поделиться на других сайтах

1 ответ на этот вопрос

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

  • 0
DelrayX

Уже не нужно. Проблема решена!

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


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×