HTTP-Authentifizierung = Frage?

Funjoy

Erfahrenes Mitglied
Hallo,

Ich habe mal eine Frage zu der HTTP-Authentifizierung.

Ich habe mir auf php.net alles durch gelesen und dabei sind mir einige Fragen aufgekommen.

1. Wie kann ich die username und passwörter via db verwalten bzw. auslesen lassen so das die HTTP-Authentifizierung bescheit weiß?

2. Kann man die Benutzerdaten auch via Formular am header für die HTTP-Authentifizierung senden? wenn ja wie?

Das war es erstmal :-(

Danke im vorraus!

MfG Funjoy
 
Ich hatte mir das so gedacht!

Ich habe eine webseite und über ein Login formular kann man sich via HTTP-Authentifizierung auf meiner seite Anmelden. Wenn jedoch ein anderer Besucher eine Passwortgeschützte Seite betreten will kommt der htaccess Dialog um ihn aufzufordern PW etc. einzugeben.

Quasi ein Login mit PHP ich weiß das es via Session geht doch ich habe kein Plan wie ich einen Session ID klau vorbeugen kann habe mir zwar viel durchgelesen aber das bringt mir nix. Lass ich die IP der Session ID vergleichen gibs Problemme mit User die über Proxy ins Internet gehen oder AOL User mit deren rotierenden IPs, lass ich es via User Agent checken gibs auch ein Problem da Prozentual mehr User den IE verwenden und mehr lösungen fallen mir nicht ein :-(


MfG Funjoy
 
Funjoy hat gesagt.:
Hallo,

1. Wie kann ich die username und passwörter via db verwalten bzw. auslesen lassen so das die HTTP-Authentifizierung bescheit weiß?

2. Kann man die Benutzerdaten auch via Formular am header für die HTTP-Authentifizierung senden? wenn ja wie?

MfG Funjoy

1. Das Funktioniert wie bei einen normalen Login. Bloß hast du hier die PHP Variablen:
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']

2. Mhm ich weiß jetzt nicht genau wie du es meinst man, könnte den Namen und PW über die Url übergeben.

PHP:
<?php
 header("Location: http://name:pw@www.test.de");
 ?>

Aber dies hat nur einen Sinn bei Autologins, ansonsten gibt es keine Möglichkeit ausser dem erscheinenden Login. (was ja auch der Sinn der Sache ist)
 
Zuletzt bearbeitet:
Hallo,

Ich habe da doch noch eine Frage: Kann man die Authentifizierung für $_SERVER['PHP_AUTH_USER'] auch für einen ganzen Ordner vornhemen via PHP oder primär mit der Header()-Funktion? Weil wenn ich den Wert für $_SERVER['PHP_AUTH_USER'] in meiner login.php-Datei setze, dann ist $_SERVER['PHP_AUTH_USER'] nur für die Datei login.php authentifiziert. Also mein Login-Script werde ich mal offen darlegen, vieleicht weiß ja dann einer Bescheid.

Login Formular (HTML):
HTML:
<form action="login.php?pfad=anmelden{$session}" method="post" name="login">
<fieldset>
 <legend>Login</legend>
 &raquo;&nbsp;Benutzername<br />
 &nbsp;&nbsp;&nbsp;<input type="text" class="forms" name="benutzername" size="15">
 <br />
 &raquo;&nbsp;Passwort
 <br />
 &nbsp;&nbsp;&nbsp;<input type="password" class="forms" name="passwort" size="15">
 <br />
 &nbsp;&nbsp;<input type="checkbox" name="cookie"> <small style="font-size:8px;cursor:help;" title="Für diese Funktion müssen Coockies akzeptiert werden!">Automatisch Anmelden</small>
 <br />
 <br />
 <div align="right"><input type="submit" class="forms" value="Login"></div>
<br />
 &raquo;&nbsp;<a href="login.php?target=forget{$session}">Passwort vergessen?</a>
 <br />
 &raquo;&nbsp;<a href="login.php?pfad=registrieren{$session}">Regestrieren</a>
</fieldset>
</form>

PHP Datei login.php:
PHP:
<?php  
...
			if(isset($db_benutzerdaten->userid)) {
				//> Wenn Überprüfen erfolgreich war User in die Useronline liste aufnehmen.
				$db->sql_normal_query("INSERT INTO ".$mysql['prefix']."loginsession 
											(benutzerid,online_seit,zuletzt_aktiv)
									   VALUES
									   		('".$db_benutzerdaten->userid."',NOW(),NOW())");
					
				//> Gast Authorisieren.						
				$_SERVER['PHP_AUTH_USER'] = $db_benutzerdaten->userid;
				$_SESSION['login'] = TRUE;
				$db->free_result();
				
				//> User Weiterleiten
				header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/nachricht.php?item=1".$session);
				die();
			} else {
				//> User Weiterleiten
				header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/nachricht.php?item=2".$session);
				die();
			}																	
		} else {
			//> Ohne Cookie (Autologin)
			$db_benutzerdaten = $db->sql_object_excute("SELECT 
															userid,mitgliederid,username,passwort,email,aktiviert,rechte 
														FROM 
															".$mysql['prefix']."user 
														WHERE 
															username='".strtolower($_POST['benutzername'])."' 
														AND 
															passwort='".md5($_POST['passwort'])."'
														AND
															aktiviert='1'");
			
			if(isset($db_benutzerdaten->userid)) {
				//> Wenn Überprüfen erfolgreich war User in die Useronline liste aufnehmen.
				$db->sql_normal_query("INSERT INTO ".$mysql['prefix']."loginsession 
											(benutzerid,online_seit,zuletzt_aktiv)
									   VALUES
									   		('".$db_benutzerdaten->userid."',NOW(),NOW())");
					
				//> Gast Authorisieren!						
				$_SERVER['PHP_AUTH_USER'] = $db_benutzerdaten->userid;
				$_SESSION['login'] = TRUE;
				$db->free_result();
				
				//> User Weiterleiten
				header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/nachricht.php?item=1".$session);
				die();
			} else {
				//> User Weiterleiten
				header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/nachricht.php?item=2".$session);
				die();
			}
		}
	}
...
?>

Meine Frage ist also: Wie kann ich die Variable $_SERVER['PHP_AUTH_USER'] für ein ganzen Ordner authentifizieren?

MfG Funjoy
 
Nein du verstehst mich falsch

Ich will ja via Html Formular die Login Daten quasi über die funktion header() am Client Senden doch mach ich das nur so das ich die Variable mit einen wert setze also so: $_SERVER['PHP_AUTH_USER'] = "Funjoy"; dann wird nur für die Datei wo dieser wert gesetzt wurde Authentifiziert. Aber ich will halt das er anstatt die Datei den ganzen Ordner Authentifiziert.

MfG Funjoy
 
Und du hörst nicht zu da musst du eine .htaccess Datei nutzen. Programme wie Confixx machen dies genauso. Und dein Html Forumlar ist absolut sinnlos und wiederspricht total den Zweck dieser Authentifizierungsmethode. Du kannst per PHP die Datei entsprechend bearbeiten mit du sie zur Authentifizierung nutzen kannst, aber das mit deinen Formular wird so nicht funktionieren weil du dich so nicht im Verzeichnis anmelden können willst.
Google 5min zum Thema und du bist wesentlich schlauer.

Edit: Ich hoffe du weist das man die Server Variablen nicht bearbeiten kann.
 
Zuletzt bearbeitet:
Zurück