Предложение по улучшению HybridAuth

По разным причинам метод Hybrid_Auth::redirect может получить пустую строку в качестве первого параметра, что приводит к формированию HTTP Header «Location:», который приводит к бесконечному редиректу в Firefox. Предлагаю добавить несколько строк, решающие эту неприятную проблему:

/**
	* Utility function, redirect to a given URL with php header or using javascript location.href
	*/
	public static function redirect( $url, $mode = "PHP" )
	{
		Hybrid_Logger::info( "Enter Hybrid_Auth::redirect( $url, $mode )" );
		if ($url == '') {
			Hybrid_Logger::info( "Hybrid_Auth::redirect - $url is empty, replacing with default" );
			$url = '/';
		}

		if( $mode == "PHP" ){
			header( "Location: $url" ) ;
		}
		elseif( $mode == "JS" ){
			echo '<html>';
			echo '<head>';
			echo '<script type="text/javascript">';
			echo 'function redirect(){ window.top.location.href="' . $url . '"; }';
			echo '</script>';
			echo '</head>';
			echo '<body onload="redirect()">';
			echo 'Redirecting, please wait...';
			echo '</body>';
			echo '</html>'; 
		}

		die();
	}

	// --------------------------------------------------------------------
Alex Svetlitsky
25 сентября 2013, 16:51
modx.pro
775
0

Комментарии: 2

Василий Наумкин
25 сентября 2013, 21:45
0
Это не ко мне, это в репозиторий HybridAuth.
    Alex Svetlitsky
    04 октября 2013, 00:20
    0
    Ок!

    Также выяснилась проблема с входом через Facebook в случае, когда пользователь не залогинен в Facebook; эта проблема существует и на Hybridauth demo: oyanix.com/opensource/hybridauth/social_hub/login.php Предложу свое решение проблемы.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2