php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.12.2004, 10:48  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard Benutzerverwanltung 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 
"

USER: <input type='text' name='user'>

"
;
    echo 
"PW: <input type='text' name='pw'>

"
;
    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 "
Kein Passwort angegeben
"
; }
    if(!
$p_user) { $f.= "
Keinen Username angegeben
"
; }
    
    if(
$f) { echo "<center>
"
.$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 !!

Achso, falls das hier nicht ins Fortgeschrittenen Forum gehört, bitte verschieben. Danke
nsane ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.12.2004, 10:51  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja .. wobei sollen wir dir denn helfen?
imported_Ben ist offline  
Alt 23.12.2004, 11:41  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard

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. Siehst Du da irgendwo einen Fehler im Code ??
nsane ist offline  
Alt 23.12.2004, 11:47  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja wird es doch auch .. aber du leitest ja direkt weiter .. warum du das mit einem refresh machst verstehe ich zwar nicht .. wozu gibt es header()?
imported_Ben ist offline  
Alt 23.12.2004, 13:33  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard

hm ja schon, aber den befehl Header() kann ich doch nur verwenden, wenn davor noch keine Ausgabe passiert ist oder >??
und in diesem Fall ist ja davor schon eine Ausgabe oder ??
nsane ist offline  
Alt 23.12.2004, 13:35  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nein. in deinem script ist keine ausgabe. nur ein echo .. aber das würde ja wegfallen, da der refresh nicht benötigt wird.
vergiss nicht die leerzeilen vor und nach <?php / ?> wegzumachen.

grüße ben.
imported_Ben ist offline  
Alt 23.12.2004, 15:43  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard

ok danke, das werde ich heute abend mal ausprobieren
nsane ist offline  
Alt 23.12.2004, 20:00  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard

so, hab jetzt mal die zeile
echo "<meta ......>" durch
HEADER("Location: admin.php");
ersetzt, leider geht das auch nicht. Ich verstehe nicht, warum dann die URL aussieht, wie schon oben gesagt. ich hänge die Daten doch garnicht an die URL an ??
weiß jemand rat ?
nsane ist offline  
Alt 23.12.2004, 20:05  
Gast
 
Beiträge: n/a
Standard

echo "<form action='admin.php?action=pruef' action='post'>";

das muss method post heißen nicht action...
 
Alt 23.12.2004, 20:34  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard

ja ok danke, aber wenn ich nun das script aufrufe, dann bekomme ich immer wieder das formular angezeigt !!!
nsane ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Blättern in Gästebuch auf Dateibasis nsane PHP Tipps 2005 8 22.01.2005 21:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.