tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
856
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Hey leute

    Ich hab einen Login-Bereich auf meiner Homepage. Es funktioniert mit den Dateinen login.php, auth.php, logout.php und index.php. So, um auf den index zu kommen muss man sich bei login anmelden. und in der datei login.php ist ein benutzer und ein Passwort eingebaut. Mein Problem ist dass es eben nur einen Benutzer hat. Ich bräuchte eben so gegen die 10 Benutzer.
    Es ist doch möglich eine .txt Datei einzubauen oder eine Datenbank zu erstellen, so wäre das Problem doch gelöst?!
    Aber ich hab keine Ahnung wie man so ne .txt Datei erstellt mit den verschiedenen Benutzern und Passwörtern. Geschweige den eine Datenbank.
    Ich fände es nicht schlecht wenn du Benutzer Ihren Namen, Wohnort und noch z. B. noch Hobby oder allgemein wenn sie noch was über sich schreiben können.

    Ich bitte um Rat.


    MfG
     

  2. #2
    Avatar von Frezl
    Frezl Frezl ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Beiträge
    473
    Hey czweifel!

    Eine txt-Datei wäre die schlechteste Lösung, da sie nicht verschlüsselt ist. Wenn also jemand den Link zu der Datei kennt, kann er sämtliche Benutzerdaten auslesen.

    Besser wäre also eine Datenbank. Da ist das gängigste System mySQL, was auch von den meisten Web-Hostern angeboten wird.

    Für den Anfang wird dir da vielleicht der Wikipedia-Eintrag zum Thema und die Weblinks dazu weiterhelfen: http://de.wikipedia.org/wiki/Mysql

    Außerdem ist Google dein Freund! Z.B. mit diesem Suchergebnis: http://www.webmasterpro.de/old/content/7358/

    Viel Spaß bei der Arbeit!
    Grüße,
    Frezl
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  3. #3
    DaveStan DaveStan ist offline Rookie
    Registriert seit
    Jun 2009
    Ort
    Schwäbisch Gmünd (BW)
    Beiträge
    7
    Hallo czweifel,

    da es sich offensichtlich um eine private Homepage handelt, wäre eine Datenbank mit allen Nutzern und weiteren Details das einfachste. Dann kannst du später auch noch welche hinzufügen, oder wenns nötig wird auch löschen.

    Die beste Möglichkeit, dies umzusetzen, bieten PHP und MySQL. Ich leg Anfängern gerne das PHP-Tutorial vom Quakenet ans Herz. Es ist recht einfach gehalten und du lernst die grundlegenden Techniken (Datenbankaufbau, Kommunikation mit der Datenbank), um das was du möchtes umsetzen zu können (der Punkt '40. Loginskript' dürfte wohl am interessantesten für dich sein).

    Dass das natürlich nichts ist, was man von heut' auf morgen lernen kann, düfte klar sein. Aber wir alle haben mal ganz klein angefangen...

    Gruß DaveStan

    P.S.: einen verheißungsvollen Nickname hast du da
     

  4. #4
    Avatar von multimolti
    multimolti multimolti ist offline Game Programmer
    Registriert seit
    Jan 2007
    Beiträge
    802
    Falls du dich doch für eine TXT-Datei anstatt einer (MySQL-)Datenbank entscheidest, kannst du die schon absichern, damit nicht jeder, der die URL zu der Datei kennt, alle Benutzer auslesen kann.
    Dazu musst du in dem Ordner, in dem die TXT-Datei drin liegt, eine andere Datei namens ".htaccess" erstellen (richtig, die hat keinen Dateinamen, sondern nur einen Punkt und die Endung). Einfach mit dem Notepad öffnen und "deny from all" reinkopieren, abspeicher und hochladen. Das bewirkt, dass Niemand aus dem Internet irgendwas in dem Verzeichnis lesen kann, daher sollten da keine anderen Dateien drin sein, auf die man evtl. zugreifen muss.
    Falls du nur die TXT-Datei und nciht das gesamte Verzeichnis sichern willst, google einfach mal nach "htaccess", da findest du genug...
     

  5. #5
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von multimolti Beitrag anzeigen
    Falls du dich doch für eine TXT-Datei anstatt einer (MySQL-)Datenbank entscheidest, kannst du die schon absichern, damit nicht jeder, der die URL zu der Datei kennt, alle Benutzer auslesen kann.
    Dazu musst du in dem Ordner, in dem die TXT-Datei drin liegt, eine andere Datei namens ".htaccess" erstellen (richtig, die hat keinen Dateinamen, sondern nur einen Punkt und die Endung). Einfach mit dem Notepad öffnen und "deny from all" reinkopieren, abspeicher und hochladen. Das bewirkt, dass Niemand aus dem Internet irgendwas in dem Verzeichnis lesen kann, daher sollten da keine anderen Dateien drin sein, auf die man evtl. zugreifen muss.
    Falls du nur die TXT-Datei und nciht das gesamte Verzeichnis sichern willst, google einfach mal nach "htaccess", da findest du genug...
    Also wenn ich die .htaccess hab, wasmuss ich dann genau in die .txt Datei reinschreiben? Ist es gut wenn ich die .txt einfach per include () in das PHP-File reinschreibe?!

    MfG
     

  6. #6
    Avatar von multimolti
    multimolti multimolti ist offline Game Programmer
    Registriert seit
    Jan 2007
    Beiträge
    802
    Zitat Zitat von czweifel Beitrag anzeigen
    Also wenn ich die .htaccess hab, wasmuss ich dann genau in die .txt Datei reinschreiben? Ist es gut wenn ich die .txt einfach per include () in das PHP-File reinschreibe?!

    MfG
    Mach das z.B. so:
    • login.txt-Datei in den Ordner "/logindata"
    • .htaccess-Datei in den Ordner "/logindata"
    • .htaccess-Datei öffnen und "deny from all" reinschreiben
    • in deinem Grundordner (also NICHT in "/logindata") die Datei "login.php" erstellen
    • "login.php" öffnen, da dann die "login.txt"-Datei includen und die Daten verarbeiten
    Wenn du jetzt genau wissen willst, wie du dir ein Login-System bauen kannst, schaust du besser in eins der 1000 Tutorials, die es hier im Internet gibt...
     

  7. #7
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von DaveStan Beitrag anzeigen
    Hallo czweifel,

    da es sich offensichtlich um eine private Homepage handelt, wäre eine Datenbank mit allen Nutzern und weiteren Details das einfachste. Dann kannst du später auch noch welche hinzufügen, oder wenns nötig wird auch löschen.

    Die beste Möglichkeit, dies umzusetzen, bieten PHP und MySQL. Ich leg Anfängern gerne das PHP-Tutorial vom Quakenet ans Herz. Es ist recht einfach gehalten und du lernst die grundlegenden Techniken (Datenbankaufbau, Kommunikation mit der Datenbank), um das was du möchtes umsetzen zu können (der Punkt '40. Loginskript' dürfte wohl am interessantesten für dich sein).

    Dass das natürlich nichts ist, was man von heut' auf morgen lernen kann, düfte klar sein. Aber wir alle haben mal ganz klein angefangen...

    Gruß DaveStan

    P.S.: einen verheißungsvollen Nickname hast du da

    Danke!

    Ich werde es vorübergehend mit der .txt Datei tun bis ich mit dem MySQL umgehen kann. Denn die Informationen die ich dort publiziere sind für einen Hacker total unwichtig. (denke ich mal)
    Das Tutorial ist wirklich gut, aber ein paar Sachen waren / sind für mich Wiederholungen darum hab ich ein Paar übersprungen.

    MfG

    P.S.: dein ist nicht viel weniger verheissungsvoll
     

  8. #8
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von multimolti Beitrag anzeigen
    Mach das z.B. so:
    • login.txt-Datei in den Ordner "/logindata"
    • .htaccess-Datei in den Ordner "/logindata"
    • .htaccess-Datei öffnen und "deny from all" reinschreiben
    • in deinem Grundordner (also NICHT in "/logindata") die Datei "login.php" erstellen
    • "login.php" öffnen, da dann die "login.txt"-Datei includen und die Daten verarbeiten
    Wenn du jetzt genau wissen willst, wie du dir ein Login-System bauen kannst, schaust du besser in eins der 1000 Tutorials, die es hier im Internet gibt...

    Ja Danke, aber ich meine im Moment ist der Benutzer so gemacht:
    PHP-Code:
          if ($username == 'Testuser' && $passwort == 'Testpasswort') { 
    schreibe ich das einfach so in die .txt Datei?


    MfG
     

  9. #9
    Avatar von multimolti
    multimolti multimolti ist offline Game Programmer
    Registriert seit
    Jan 2007
    Beiträge
    802
    Das hier könnte was für dich sein, habs mir aber nicht genauer angeschaut:
    http://www.webmaster-talk.com/php-fo...out-mysql.html

    Du kannst dir das Leben auch viel einfacher machen, und anstatt einer TXT-Datei eine PHP-Datei schreiben, in der nur die Daten für alle User drinstehen, dann brauchst du nicht mal die .htaccess-Datei.
    Die PHP-Datei sähe dann so aus:
    PHP-Code:
    <?php
    // ## DATEINAME: userdata.php
    $users = array();
    $users[] = array("name" => "benutzer1""pass" => "password1");
    $users[] = array("name" => "benutzer2""pass" => "password2");
    $users[] = array("name" => "benutzer3""pass" => "password3");
    ?>
    Diese Datei könntest du per "include(<Dateiname>);" laden, dein Haupt-Login-Script hat das Array $users dann gespeichert.
    Jetzt schaust du für jeden Benutzer, ob die eingegebenen Daten mit den Benutzerdaten übereinstimmen:
    PHP-Code:
    // ## DATEINAME: login.php
    // irgendwie Eingabedaten verarbeiten und in $username und $password speichern

    include("userdata.php");

    $loggedin false;
    foreach(
    $users as $user)
    {
        if(
    $user['name'] == $username && $user['pass'] == $password)
        {
             
    $loggedin true;
             break;
        }
    }
    if(
    $loggedin)
        echo 
    "Eingeloggt!";
    else
        echo 
    "Benutzername oder Passwort falsch!"
    Mir fallen jetzt noch 1000 Ideen ein, wie du das alternativ machen könntest, frag einfac, falls du es anders haben willst.
     

  10. #10
    DaveStan DaveStan ist offline Rookie
    Registriert seit
    Jun 2009
    Ort
    Schwäbisch Gmünd (BW)
    Beiträge
    7
    multimoltis Methode hat den Vorteil, dass kein Dritter die Logininformationen lesen kann. Wenn du's trotzdem mit ner Textdatei umsetzen möchtest, wär hier ne einfache Möglichkeit.

    Aubau der Textdatei:
    Code :
    1
    2
    
    username e8636ea013e682faf61f56ce1cb1ab5c
    test 098f6bcd4621d373cade4e832627b4f6
    Format: username Passwort-MD5-Hash
    Sind zwar nur Standard-MD5s, aber für den Zwecks tut's das auch.

    Auslesen der Benutzer und Passworthashes:
    PHP-Code:
    //Textdatei auslesen
    $handle = @fopen('text.txt'"r");
    if(
    $handle) {
        while(!
    feof($handle)) {
            
    //Einzelne Zeilen auslesen
            
    $lines[] = fgets($handle4096);
        }
        
    fclose($handle);
    }

    //Array, mit dem gearbeitet wird
    $benutzer = array();

    //Ausgelesene Zeilen zerlegen
    for($i=0$i<count($lines); $i++) {
        
    $temp explode(" ",$lines[$i]);
        
        
    array_push($benutzer$temp);

    Nach dem Auslesen sieht das Array dann so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Array (
        [0] => Array (
            [0] => username
            [1] => e8636ea013e682faf61f56ce1cb1ab5c
        )
        [1] => Array (
            [0] => test
            [1] => 098f6bcd4621d373cade4e832627b4f6
        )
    )
    Damit lässt sich dann schön arbeiten.
     

  11. #11
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von DaveStan Beitrag anzeigen
    multimoltis Methode hat den Vorteil, dass kein Dritter die Logininformationen lesen kann. Wenn du's trotzdem mit ner Textdatei umsetzen möchtest, wär hier ne einfache Möglichkeit.

    Aubau der Textdatei:
    Code :
    1
    2
    
    username e8636ea013e682faf61f56ce1cb1ab5c
    test 098f6bcd4621d373cade4e832627b4f6
    Format: username Passwort-MD5-Hash
    Sind zwar nur Standard-MD5s, aber für den Zwecks tut's das auch.

    Auslesen der Benutzer und Passworthashes:
    PHP-Code:
    //Textdatei auslesen
    $handle = @fopen('text.txt'"r");
    if(
    $handle) {
        while(!
    feof($handle)) {
            
    //Einzelne Zeilen auslesen
            
    $lines[] = fgets($handle4096);
        }
        
    fclose($handle);
    }

    //Array, mit dem gearbeitet wird
    $benutzer = array();

    //Ausgelesene Zeilen zerlegen
    for($i=0$i<count($lines); $i++) {
        
    $temp explode(" ",$lines[$i]);
        
        
    array_push($benutzer$temp);

    Nach dem Auslesen sieht das Array dann so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Array (
        [0] => Array (
            [0] => username
            [1] => e8636ea013e682faf61f56ce1cb1ab5c
        )
        [1] => Array (
            [0] => test
            [1] => 098f6bcd4621d373cade4e832627b4f6
        )
    )
    Damit lässt sich dann schön arbeiten.
    Mir scheint beides gleich schwer / leicht zu sein. Was ist sicherer?!
     

  12. #12
    Avatar von multimolti
    multimolti multimolti ist offline Game Programmer
    Registriert seit
    Jan 2007
    Beiträge
    802
    Die zweite Methode wollte ich dir eigentlich vorschlagen, dann ist mir das mit dem PHP-Array eingefallen...
    Wenn du bei meiner Methode auch anstatt Klartext-Passwörtern MD5-Hashes verwendest und bei DaveStans Methode die .htaccess einsetzt, ist beides gleichsicher. Falls dein Server kein htaccess unterstützen sollte, nimm meine Methode, denn bei der wird niemand jemals an die Daten innerhalb der PHP-Datei rankommen.

    Und schwer/kompliziert sind beide Methoden nicht, lies dir am besten mal ein Anfängertutorial für PHP durch, dann verstehst du das ganz schnell!
     

  13. #13
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von multimolti Beitrag anzeigen
    Das hier könnte was für dich sein, habs mir aber nicht genauer angeschaut:
    http://www.webmaster-talk.com/php-fo...out-mysql.html

    Du kannst dir das Leben auch viel einfacher machen, und anstatt einer TXT-Datei eine PHP-Datei schreiben, in der nur die Daten für alle User drinstehen, dann brauchst du nicht mal die .htaccess-Datei.
    Die PHP-Datei sähe dann so aus:
    PHP-Code:
    <?php
    // ## DATEINAME: userdata.php
    $users = array();
    $users[] = array("name" => "benutzer1""pass" => "password1");
    $users[] = array("name" => "benutzer2""pass" => "password2");
    $users[] = array("name" => "benutzer3""pass" => "password3");
    ?>
    Diese Datei könntest du per "include(<Dateiname>);" laden, dein Haupt-Login-Script hat das Array $users dann gespeichert.
    Jetzt schaust du für jeden Benutzer, ob die eingegebenen Daten mit den Benutzerdaten übereinstimmen:
    PHP-Code:
    // ## DATEINAME: login.php
    // irgendwie Eingabedaten verarbeiten und in $username und $password speichern

    include("userdata.php");

    $loggedin false;
    foreach(
    $users as $user)
    {
        if(
    $user['name'] == $username && $user['pass'] == $password)
        {
             
    $loggedin true;
             break;
        }
    }
    if(
    $loggedin)
        echo 
    "Eingeloggt!";
    else
        echo 
    "Benutzername oder Passwort falsch!"
    Mir fallen jetzt noch 1000 Ideen ein, wie du das alternativ machen könntest, frag einfac, falls du es anders haben willst.
    hab grad ein bischen Choas

    hab jetzt die datei included dein anderen Teil noch dazu getan, aber irgendwie hat es noch einen Fehler, weil noch ein Teil des alten Teil
    s drin ist schau doch kurz selbst:

    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
    include("userdata.php");

    $loggedin false;
    foreach(
    $users as $user)
    {
        if(
    $user['name'] == $username && $user['pass'] == $password)
        {
             
    $loggedin true;
             break;
        }
    }
    if(
    $loggedin)
        echo 
    "Eingeloggt!";
    else
        echo 
    "Benutzername oder Passwort falsch!";  
               
    // 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;
           }
       
    ?>
    Im html Teil ist noch das Eintrageformular:

    HTML-Code:
          <form action="login.php" method="post">
            <p>Username: </p>
            <p>
              <input name="username" type="text" value="" size="20px" />
            </p>
            <p>Passwort:</p>
       <p><input name="passwort" type="password" size="20px" />
                 <p><input type="submit" value="Anmelden" />
            </p>
        </form>
    ich denke dass stimmt schon. Aber du kannst mir bestimmt sagen.
     

  14. #14
    Avatar von multimolti
    multimolti multimolti ist offline Game Programmer
    Registriert seit
    Jan 2007
    Beiträge
    802
    Du musst das ein bisschen umändern:

    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 
    include("userdata.php"); 

    $loggedin false
    foreach(
    $users as $user

        if(
    $user['name'] == $username && $user['pass'] == $password
        { 
             
    $loggedin true
             break; 
        } 

    if(
    $loggedin
    {

               
    // 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; 
           } 
           else
           {
                   echo 
    "Eingeloggt, aber Server unterstützt kein HTTP/1.1!";
           }
    }
    else 
        echo 
    "Benutzername oder Passwort falsch!";   
        
    ?>
    Obwohl ich nicht verstehe, was der ganze Quatsch mit den Headern soll...
     

  15. #15
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von multimolti Beitrag anzeigen
    Du musst das ein bisschen umändern:

    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 
    include("userdata.php"); 

    $loggedin false
    foreach(
    $users as $user

        if(
    $user['name'] == $username && $user['pass'] == $password
        { 
             
    $loggedin true
             break; 
        } 

    if(
    $loggedin
    {

               
    // 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; 
           } 
           else
           {
                   echo 
    "Eingeloggt, aber Server unterstützt kein HTTP/1.1!";
           }
    }
    else 
        echo 
    "Benutzername oder Passwort falsch!";   
        
    ?>
    Obwohl ich nicht verstehe, was der ganze Quatsch mit den Headern soll...
    Jetzt funktioniert gar nichts mehr!
     

Ähnliche Themen

  1. Login und anschließende Daten für den Benutzer
    Von bonke-online im Forum ASP
    Antworten: 4
    Letzter Beitrag: 01.11.05, 20:07
  2. Benutzer/Login Frage/Denkanstoss
    Von morgenstern im Forum PHP
    Antworten: 9
    Letzter Beitrag: 07.07.04, 14:26
  3. MYSQL / PHP Login / Benutzer anlegen
    Von Shooter2k im Forum PHP
    Antworten: 3
    Letzter Beitrag: 24.03.03, 23:39
  4. Benutzer Login
    Von Freude im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.07.02, 11:59
  5. benutzer login
    Von wo0zy im Forum PHP
    Antworten: 4
    Letzter Beitrag: 07.09.01, 22:02

Stichworte