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

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


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

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

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


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

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