PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Benutzerverwaltung auf Dateibasis (https://www.php-resource.de/forum/php-developer-forum/48512-benutzerverwaltung-auf-dateibasis.html)

firstlord18 23-12-2004 20:04

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 ??

Benny-one 23-12-2004 20:09

PHP-Code:

 pruef($_POST['user'], $_POST['user']);

// aendern in

 
pruef($_POST['pw'], $_POST['user']); 


firstlord18 23-12-2004 20:32

hm, ja danke, schonma en fehler. aber trotzdem geht es noch nicht !!!
er ruft immer noch die url mit get-anhängen auf

firstlord18 23-12-2004 20:35

so, 1 fehler hab eich noch gefunden:

<form .... method="post"> und nicht action="post", aber dadurch wurde das problem nicht behoben. die URL wird zwar nicht mehr mit angehängten Daten aufgerufen, aber das Formular wird immer angezeigt !!!

Payne_of_Death 24-12-2004 01:45

DEBUGGING :confused:

firstlord18 24-12-2004 10:10

@Payne_of_Death:

error_reporting(E_ALL); oder was meinst du. Wenn ich das an den Anfang schreibe:

Notice: Undefined index: action in C:\apachefriends\xampp\htdocs\Benutzsystem\admin.php on line 67

Notice: Undefined index: user in C:\apachefriends\xampp\htdocs\Benutzsystem\admin.php on line 18

Das wars, auch wenn ich etwas in das Formular eingebe und es abschicke ..

rootkilla 24-12-2004 10:43

PHP-Code:

    echo "<form [B]action='admin.php'[/B] 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' [B]name='pruef'[/B]></form>"

Ich hätte es so gemacht und auf $_POST['pruef'] geprüft.
//Wenig Erfahrung und nicht getestet
Ich meine irgendwo mal gelesen zu haben, dass es zu Problemen führen kann, wenn man in FORM Get-Variablen anhängt. Oder war das in header(Location)? Keinen Plan mehr. Aber versuchs mal so wie oben.

Gruß

Rootkilla

firstlord18 24-12-2004 13:59

daran lag das nicht. habe den fehler aber gefunden:

ich muss natürlich $pwfile in der Funktion pruef als Global definieren ^^


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:20 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG