Homepage selbermachen 7.851 Themen, 35.616 Beiträge

Authentifizierung trotz übergeordnetem htacces

Heinz_Malcher / 12 Antworten / Flachansicht Nickles

Hallo,
derzeit ist ein Verzeichnis mit htaccess geschützt, mit einem bestimmten Passwort zugänglich.

Eine bestimmte Datei soll nun mit diesem script hier gesichert werden:

if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == "$yyyy") && ( $PHP_AUTH_PW == "$xxxx" )) ) {
Header("WWW-Authenticate: Basic realm=\\"My Realm\\"");
Header("HTTP/1.0 401 Unauthorized");
error("Unauthorized access...");
}

Das Problem: Das übergeordnete Htaccess nimmt immer wieder die PHP_AUTH_USER und PHP_AUT_PW logischerweise in Gebrauch und belegt die Variablen, sprich das Einloggen des 2. (diesen hier geposteten) Scripts geht nicht, weil automatisch das eingegebene PW und User logischerweise nochmal im htacces Durchgang abgefragt werden und dort nicht stimmen. Wie kann ich dennoch die Variablen unsetten oder wie auch immer auf diese Weise einen 2. Login bzw. PW-Abfrage erzwingen

bei Antwort benachrichtigen
Beispiel Heinz_Malcher
xafford T E S T E R „Beispiel - korrektur die zweite“
Optionen

eine klasse mußt du vor der nutzung instanzieren, also ein objekt diesen typs erzeugen (eine instanz der klasse). das geschieht folgendermaßen:
$MyClass=new ClassName;
jetzt hast du über die instanz mit dem namen $MyClass zugriff auf die eigenschaften und methoden der klasse.
eine eigenschaft einer klasse sind einfach gesagt ihre internen variablen (sehr vereinfacht bei php), ihre methoden sind die funktionen innerhalb der klasse. der zugriff erfolgt, anders als z.b. bei C++ mittels $Instanname->Eigenschaft/Methode. hat z.b. eine funktion innerhalb der klasse den selben namen, wie die klasse selbst, so ist es der konstruktor der klasse und wird automatisch bei der instanzierung aufgerufen. ich nehme mal das beispiel der klasse checked_user:


class checked_user
{
var $user; //Einzige Eigenschaft der Klasse
function checked_user() // Methode und Konstruktor der Klasse, wird auf jeden Fall bei der Instanzierung ausgeführt
{
global $PHP_AUTH_USER,$PHP_AUTH_PW;
$auth_users=array('user1'=>'passwort1','user2'=>'passwort2','userN'=>'passwortN'); // Array aus den zugelassenen Usern und ihrer passworte
if(empty($PHP_AUTH_USER)||empty($this->auth_users["$PHP_AUTH_USER"])||$this->auth_users["$PHP_AUTH_USER"]==$PHP_AUTH_PW)
{
$this->generate_auth(); // Konstruktor ruft die methode generate_auth() der eigenen Klasse auf
}
else
{
$this->user=$PHP_AUTH_USER; // Die Eigenschaft $user wird auf den Rückgabewert der Authentifizierung gesetzt
}
}
function generate_auth() // weitere Methode der Klasse
{
header("WWW-Authenticate: Basic realm=\"Gesicherter Bereich\"");
header("HTTP/1.0 401 Unauthorized");
echo "Kein Zutritt ohne Authentifizierung!";
exit;
}
}

$user ist eine (die einzige) eigenschaft der klasse, die funktion checked_user() ihr konstruktor und generate_auth() eine methode der klasse. will ich jetzt die klasse nutzen, so mach ich da so:
$user=new checked_user;
$user ist jetzt ein objekt und eine instanz der klasse.
der konstruktor erledigt in diesem fall den rest.
über $user->user hat man infolgedessen zugriff auf den gesetzten usernamen im weiteren verlauf des scriptes.
Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen