Перейти к публикации
  • 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

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

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


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

×