PHP HTTP Auth funktioniert nicht bzw. nur halb

balufreak

Aktives Mitglied
Thread Starter
Dabei seit
12.10.2003
Beiträge
1.563
Reaktionspunkte
28
Hallo leute! Ich steh vor einem Problem.
Und zwar mach möchte ich für den Adminbereich einer Webseite eine HTTP Authentifizierung.
Diese habe ich jetzt mal so implementiert:

PHP:
session_start();

/* Includes */
require_once ('scripts/cfg.php');
set_include_path($cfg['SYS_include_path']);
require_once ('DB.php'); // Database
require_once ('Smarty.class.php'); // Template engine
require_once ('scripts/res/errorHandler.php');
require_once ('scripts/res/functions.php');
require_once ('HTML/QuickForm.php');
require_once ('Mail.php');
require_once ('Mail/mime.php');
require_once ('classes/smartyMail.class.php');
require_once ('classes/reference.class.php');
require_once ('classes/user.class.php');
/* User */
$usr = new user($cfg['DB_dsn']);

/* Authentication */
if (!$usr->authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
	header("WWW-Authenticate: Basic realm=\"Administration\"");
	header("HTTP/1.0 401 Unauthorized");
	echo "Authentication failed!\n";
	exit;
}
//die('Access Granted!');
/* Classes */
$smarty = new smartyMail();
$smarty->template_dir = './templates/default';
$smarty->compile_dir = './templates_c/';
$smarty->mailTemplate_dir = 'mail/';

/* Adding Mail Server informations */
$smarty->mailFactory = 'smtp';

/* Prepare mail Type */
$smarty->mailType = 'plain';

/* Handle requestes */
switch (addslashes($_GET['site'])) {
	case 'profile' :
		require_once ('admin/profile.php');
		break;
	case 'reference' :
		require_once ('admin/reference.php');
		break;
	default :
		header('Location: admin.php');
		break;
}

$smarty->display('admin/index.tpl');



Wenn die Methode $usr->authenticate() true zurück gibt, bekomme ich folgende Fehlermeldung:
Code:
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Worin liegt das Problem? Die Methode authenticate() sucht in einer Datenbanktabelle nach einem passenden Eintrag. Wenn dieser gefunden wurde, wird true zurückgegeben. Wenn nicht, wird false zurückgegeben.

Ich hoffe ihr könnt mir helfen.
Greets balu
 
Ok.. hab den Fehler gefunden. Es ist immer so. Kaum fragt man nach, findet man den Fehler selbst. *grml*.

Also der Fehler lag bei der header() Anweisung in der switch-schleife. Das mag er nicht.
 
Zurück
Oben Unten