[PHP] Mitgliederbereich, mehrere Accounts ohne MySQL

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Tikky, 8. Mai 2008 .

Schlagworte:
  1. 8. Mai 2008
    Mitgliederbereich, mehrere Accounts ohne MySQL

    Hallo, ich habe einen Loginbereich auf einer Homepage gemacht, bei dem ich mich sehr strikt an folgendes Tutorial gehalten habe: PHP: Sessionbasiertes Loginsystem

    Es funktioniert auch alles (mit Apache Server +PHP Modul, Login mit dem einen Account)

    Nun steht dort bei der Erläuterung zur login.php:

    Hier sind sowohl Benutzername als auch Passwort im Quelltext fest einprogrammiert – denkbar wäre aber zum Beispiel auch die Abfrage von Benutzerdaten aus einer Datenbank oder einer Textdatei, so dass mehrere Benutzernamen eingerichtet werden können

    Da ich absoluter php-noob bin, und erst recht sehr schlecht in Datenbanken, würde ich gerne wissen, wie das mit der Textdatei, dessen Formatierung und der Einbindung in den Code auszusehen hat.

    Würde mich sehr freuen, wenn mir da jemand helfen kann.


    Es wäre auch schön, wenn man bei unterschiedlichen Logins auf unterschiedliche Seiten gelangt. Könnte man dies auch in der entsprechenden Textdatei verknüpfen (Also Accountname mit der Seite, auf die man kommen soll)?

    Ich wäre für jede Hilfe sehr, sehr dankbar.

    Gruß
    Tikky
     
  2. 8. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    Datenbanken sind so eine Sache... Ist vieleicht nicht grade leicht zu lernen aber auf jedenfall die bessere Methode...

    Aber ich (versuche) dir auch zu erklären wie es mit einer Textdatei geht....

    Die Formatierung einfach folgendermaßen (benutzer.txt) (Kein Leerzeichen zwischen dem ":" und Passwort, das musste ich wegen dem doofen Smilie machen)
    BENUTZERNAME: PASSWORT:SEITE

    PHP:
    <? php
    $user 
    file ( 'benutzer.txt' );

    foreach(
    $user  as  $benutzer )
    {
       list(
    $benutzer $passwort $seite ) =  explode ( ":" $benutzer );
       echo 
    $benutzer . " hat das Passwort " . $passwort . " und wird nach dem Login auf Seite " . $seite . " weitergeleitet.<br />\n" ;
    }
    ?>
    Die Variablennamen kann man noch etwas sinniger wählen.. aber das wars im grunde genommen....
     
  3. 8. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    mysql datenbanken sind einfach zu handhaben die installation auch wenn du ein tutorial hast. Ist imho mindestens genauso einfach wie ne datei zu benutzen guck dir einfach an wie du in php mysql commands sendest und die wichtigsten SQL befehle. Gibt tausende von tuts.

    mfg tobZel
     
  4. 8. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL



    danke dir schon mal für die antwort, schreib ich deinen code dann in die login.php? und was lass ich dann auf der login.php weg? und funktioniert die datei dann mit den anderen (index.php, auth.php, logout.php - siehe selfhtml tutorial, link im ersten Posting)?


    bewertung ist raus, auch an tobzel, werde mir da auch nochmal tutorials anggucken, aber dann müsste ich mir wohl auch php mal genauer anschauen, da fehlt aber leider die zeit =(

    danke für jede weitere hilfe

    mfg
     
  5. 8. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    Schau dir doch mal das Tutorial von php-quake.net an, es ist sehr ausführlich beschrieben und wie ich finde sehr verständlich. Mein Wissen, was ich so über PHP/MySQL habe, habe ich mir auch mit den Tutorials von php-quake.net angeeignet. Es ist zwar nicht Text-Dateien basierend aber MySQL ist an sich keine besonders schwere Sprache.
     
  6. 9. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL


    Ich habe keine Ahnung wo du den Code reinschreiben musst weil ich das Script ja nicht kenne....
     
  7. 9. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    ok ich liste mal alle dateien auf, die ich habe:

    login.php
    Code:
    <?php include('pass.php'); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
     <head>
     <title>Geschützter Bereich</title>
     </head>
     <body>
     <form action="login.php" method="post">
     Username: <input type="text" name="username" /><br />
     Passwort: <input type="password" name="passwort" /><br />
     <input type="submit" value="Anmelden" />
     </form>
     </body>
    </html>
    

    logout.php
    Code:
    <?php
     session_start();
     session_destroy();
    
     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);
    
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
    ?>
    


    auth.php
    Code:
    <?php
     session_start();
    
     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);
    
     if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
     exit;
     }
    ?>
    

    pass.php
    Code:
    <?php
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     session_start();
    
     $username = $_POST['username'];
     $passwort = $_POST['passwort'];
    
     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);
    
     // Benutzername und Passwort werden überprüft
     if ($username == 'nutzer' && $passwort == 'passwort') {
     $_SESSION['angemeldet'] = true;
    
    
     // Weiterleitung zur geschützten Startseite
     if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
     if (php_sapi_name() == 'cgi') {
     header('Status: 303 See Other');
     }
     else {
     header('HTTP/1.1 303 See Other');
     }
     }
    
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
     exit;
     }
     }
    ?>
    

    Außerdem eine benutzer.txt in der Form, wie Coksnuss vorgeschlagen hat
    Code:
    nutzer1:passwort1:seite1.php
    nutzer2:passwort2:seite2.php
    nutzer3:passwort3:seite3.php
    

    Wie kann ich nun coksnuss' Script
    Code:
    <?php
    $user = file('benutzer.txt');
    
    foreach($user as $benutzer)
    {
     list($benutzer, $passwort, $seite) = explode(":", $benutzer);
     echo $benutzer." hat das Passwort ".$passwort." und wird nach dem Login auf Seite ".$seite." weitergeleitet.<br />\n";
    }
    ?> 
    
    so einbauen, dass alles miteinander funktioniert?

    Würde mich über Hilfe sehr freuen, und gerne mit einem Wunschupload sofern vorhanden revangieren. Danke!

    Gruß
    Tikky
     
  8. 9. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    So hier bitteschön....
    Die Programmierung des Scripts ist nicht grade professionell will ich dazu sagen^^ [Weder meins, noch das vorhandene]

    pass.php

    Suchen:
    PHP:
    // Benutzername und Passwort werden überprüft
          
    if ( $username  ==  'nutzer'  &&  $passwort  ==  'passwort' ) {
           
    $_SESSION [ 'angemeldet' ] =  true ;
    Ersetzen mit:
    PHP:

          
    $allusers  file ( 'benutzer.txt' );
          
          foreach(
    $allusers  as  $txtuser )
          {
            list(
    $txtusername $txtuserpassword $txtuserlink ) =  explode ( ":" $txtuser );
            
            if(
    $username  ==  $txtusername  &&  $passwort  ==  $txtuserpassword )
            {
              
    $_SESSION [ 'angemeldet' ] =  true ;
              
    // Keine Ahnung ob du direkt weiterleiten willst...
              // falls ja einfach den Kommentar entfernen und den code weiter unten im Script loeschen
              // header("Location: ".$txtuserlink);
              
    break;
            }
          }
    Ich habe das script nicht getestet...
     
  9. 9. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    Ich danke Euch allen, cih ahbs jetzt anders hingekriegt, undd zwar in dem ich in die pass.php die selbe Funktion nochmal reingeschrieben hab, mit anderem account und anderer Seite.

    Jetzt aber noch was anderes:

    Wenn ich mich eingeloggt habe, und wieder auf den Mitgliederbereich gehe, möchte er das pw wieder haben, obwohl cih mich nciht ausgeloggt habe.

    wie kann ich in der Datei pass.php eine entsprechende Abfrage machen, ob der Nutzer sich schon angemeldet hat und wenn ja, entsprechend weiterleiten automatisch?

    Meine neue pass.php:
    Code:
    <!--1. User-->
    
    <?php
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     session_start();
    
     $username = $_POST['username'];
     $passwort = $_POST['passwort'];
    
     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);
    
     // Benutzername und Passwort werden überprüft
     if ($username == 'nutzer1' && $passwort == 'passwort1')
     {
     $_SESSION['angemeldet'] = true;
    
    
     // Weiterleitung zur geschützten Startseite
     if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
     if (php_sapi_name() == 'cgi') {
     header('Status: 303 See Other');
     }
     else {
     header('HTTP/1.1 303 See Other');
     }
     }
    
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/clients.php');
     exit;
     }
     }
    ?>
    
    <!--2. User-->
    
    <?php
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     session_start();
    
     $username = $_POST['username'];
     $passwort = $_POST['passwort'];
    
     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);
    
     // Benutzername und Passwort werden überprüft
     if ($username == 'nutzer2' && $passwort == 'passwort2')
     {
     $_SESSION['angemeldet'] = true;
    
    
     // Weiterleitung zur geschützten Startseite
     if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
     if (php_sapi_name() == 'cgi') {
     header('Status: 303 See Other');
     }
     else {
     header('HTTP/1.1 303 See Other');
     }
     }
    
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/clients2.php');
     exit;
     }
     }
    ?>
    

    Kann mir jemand die entsprechende Abfrage reinschreiben, und den neuen Code posten? wäre super dankbar.

    Gruß
    Tikky
     
  10. 9. Mai 2008
    AW: Mitgliederbereich, mehrere Accounts ohne MySQL

    Ach du liebe Zeit... mal abgesehen davon dass das eine GANZ schlechte Methode ist den ganzen code 2x zu haben:

    $_SESSION['angemeldet'] = true; <-- Die Variable setzt du doch wenn du dich anmeldest... Einfach überprüfen ob sie gesetzt ist
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.