Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 23-12-2004, 21:04
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Benutzerverwaltung auf Dateibasis

Hi,

also ich habe hier mal den Teil der Benutzverwaltung geschrieben, wo man sich einloggen kann. Die Datei, in der die ganzen Usernames und Passwords gespeichert werden, sieht wie folgt aus:

Zitat:
user1%%pw1
user2%%pw2
etc.
So, nun habe ich halt mal versucht, ein Script zu coden, welches auch auf Funktionen basiert, damit es nicht so viel Quelltext wird. Ich hoffe, jemand kann mir helfen:

PHP-Code:
<?php
session_save_path
("./sessionsave/");
session_start();

// Variables:
$pwfile="user_pw.txt";

// automatischen Admin anlegen:
if(!file_exists($pwfile)) {
    
$fp=fopen($pwfile"a+");
    
fputs($fp"user%%pw");
    
fclose($fp);
}    

function 
logged() {
    if(!
$_SESSION['user'] OR !$_SESSION['pw']) {
        return 
false;
    }
    else {    
        if(
pruef($_SESSION['pw'], $_SESSION['user'])) {
            return 
true;
        }
        else { 
            return 
false;
        }
    }    
}
function 
showform() {
    echo 
"<form action='admin.php?action=pruef' action='post'>";
    echo 
"<br><br>USER: <input type='text' name='user'><br><br>";
    echo 
"PW: <input type='text' name='pw'><br><br>";
    echo 
"<input type='submit' value='Log-In'></form>";
}

function 
pruef($postpw$postuser) {
    
$p_pw strtolower(trim($postpw));
    
$p_user=strtolower(trim($postuser));
    
    if(!
$p_pw)   { $f "<br>Kein Passwort angegeben<br>"; }
    if(!
$p_user) { $f.= "<br>Keinen Username angegeben<br>"; }
    
    if(
$f) { echo "<center><br>".$f."</center>"; }
    else {
        
$data=file($pwfile);
        foreach (
$data as $temp) {
            
$e=explode("%%"$temp);
            if (
$p_pw==$e[1] AND $p_user=$e[0]) {
                    
$_SESSION['user']=$e[0];
                    
$_SESSION['pw']=$e[1];
                    return 
true;                    
            }    
        }
    }
    if(!
$_SESSION['user'] OR !$_SESSION['pw']) {
        return 
false;
    }    
}

function 
logout() {
    foreach(
$_SESSION as $temp) {
        unset(
$temp);
        
$temp=array();
    }
    
session_destroy();
}

// AUSGABE:
if($_GET["action"]=="pruef") {
    
pruef($_POST['user'], $_POST['user']);
    echo 
"<meta HTTP-EQUIV=Refresh content='0, URL=".$PHP_SELF."'>";
}
else {
    if (
logged()) {
        echo 
"Eingeloggt";
    }
    else {
        
showform();
    }
}
Vielen Dank im Vorraus !!

Edit: Achso, vllt sollte ich noch mein Problem posten ?? Also:

Ich möchte ja, dass man sich einloggen kann. wenn ich nun auf submit drücke. Eigentlich müsste dann action=pruef ausgeführt werden, wie auch im Form Tag geschrieben, wird es aber nicht. In der URL steht dann:

admin.php?user=user&pw=pw

aber es soll doch admin?action=pruef ausgeführt werden, sodass man danach eingeloggt ist, sofern man richtige Login daten eingegeben hat. Seht Ihr da irgendwo einen Fehler im Code ??
Mit Zitat antworten