tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
2136
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von EchseKiuta
    EchseKiuta EchseKiuta ist offline Mitglied Bronze
    Registriert seit
    Jul 2004
    Ort
    Hannover
    Beiträge
    39
    Hi,

    habe bei dem Tutorial [PHP/mySQL] Login-System mit Sessions bis jetzt alles verstanden! aber bei "2. Einfügen von Testbenutzern in die Datenbank" weiss ich nicht wo ich den tag einfügen soll bzw. wenn in eine php-datei wie ich sie benennen soll!
    Bei den andrere steht das immer drüber wie man die datei nennen soll!

    Hoffe das ihr mir helfen könnt! Vielleicht bin ich ja auch blind...

    Gruss EchseKiuta
    Geändert von EchseKiuta (01.08.04 um 19:46 Uhr)
     

  2. #2
    Avatar von EchseKiuta
    EchseKiuta EchseKiuta ist offline Mitglied Bronze
    Registriert seit
    Jul 2004
    Ort
    Hannover
    Beiträge
    39
    kann mir nicht bitte iner helfen.....ich checks einfach nicht was ich mit dem php befehl machen muss! in die datenbank einfügen? ein php-dokument draus machen? Wenn mit welchem namen?
     

  3. #3
    KristophS KristophS ist offline Mitglied Brilliant
    Registriert seit
    Apr 2004
    Ort
    Duisburg
    Beiträge
    778
    Soweit ich das bereurteilen kann ist der Name recht egal.
     

  4. #4
    Avatar von Karl Förster
    Karl Förster Karl Förster ist offline Mitglied Platin
    Registriert seit
    Feb 2001
    Ort
    München
    Beiträge
    646
    Diese Datei dient nur dazu ein paar Beispieldatensätze in der Datenbank anzulegen um das Script testen zu können. Ich habe bei dem Tutorial bewusst alle weiteren Sachen wie Registrierung und Verwaltung der Daten weggelassen, da das dann nur noch ganz normale Datenbankanwendungen sind und nicht wirklich etwas mit dem Login zu tun haben.
    Für dich ist es also egal wie du die Datei nennst ... du musst sie nur einmal auf deinem Webserver aufrufen und er trägt die Daten ein. Danach kannst du das Script testen und schauen ob es so funktioniert.
     
    MfG

    Karl Förster
    Entwicklung / Development
    Appia, Inc.


    appia.com

  5. #5
    K@TooN K@TooN ist offline Mitglied
    Registriert seit
    Oct 2003
    Ort
    Willich (NRW)
    Beiträge
    20
    Hi zusammen,

    mir gefällt das Session-Script.
    Aber ein Problem habe ich nun, eine bestehende Usertabelle in die Logintabelle zu übertragen.
    Der Code für das Anlegen von Benutzern wurde im TUT so beschrieben

    PHP-Code:
    <?php 
    // Definition der Benutzer 
    $benutzer[0]["Nickname"] ="admin"
    $benutzer[0]["Kennwort"] = "admin"
    $benutzer[0]["Nachname"] = "Mustermann"
    $benutzer[0]["Vorname"] = "Max"

    $benutzer[1]["Nickname"] = "test"
    $benutzer[1]["Kennwort"] = "abc"
    $benutzer[1]["Nachname"] = "Kunze"
    $benutzer[1]["Vorname"] = "Martin"

    // Sie können an dieser Stelle beliebig viele Benutzer anlegen. 
    // Achten Sie dabei nur auf die Fortführung der Nummer. 

    // Aufbau der Datenbankverbindung 
    $connectionid  mysql_connect ("localhost""root"""); 
    if (!
    mysql_select_db ("LoginSystem"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    // Zuerst alle Datensätze löschen um keine Dopplungen zu bekommen. 
    mysql_query ("DELETE FROM benutzerdaten"); 

    // Daten eintragen 
    while (list ($key$value) = each ($benutzer)) 

      
    // SQL-Anweisung erstellen 
      
    $sql "INSERT INTO "
        
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) "
      
    "VALUES ('".$value["Nickname"]."', '"
                           
    md5 ($value["Kennwort"])."', '"
                           
    $value["Nachname"]."', '"
                           
    $value["Vorname"]."')"
      
    mysql_query ($sql); 

      if (
    mysql_affected_rows ($connectionid) > 0
      { 
        echo 
    "Benutzer erfolgreich angelegt.<br>\n"
      } 
      else 
      { 
       echo 
    "Fehler beim Anlegen der Benutzer.<br>\n"
      } 

    ?>

    Aber anstatt jeden User manuell einzugeben möchte ich das vorher mit einer Abfrage machen.

    Hier mein nachweislich fehlerhafter Code
    PHP-Code:
    <?php 
    // Definition der Benutzer 
    include("config.inc.php");
    $db  mysql_connect ("$dbhost""$dbusername""$dbkennwort"); 
    $res mysql_db_query("usertabelle""select * from mitglieder");
    $username mysql_result($res0,"username");
    $kennwort mysql_result($res0,"kennwort");
    $nachnema mysql_result($res"nachname");
    $vorname mysql_result($res0"vorname");

    $benutzer[X]["Nickname"] ="$username"
    $benutzer[X]["Kennwort"] = "$kennwort"
    $benutzer[X]["Nachname"] = "$nachname"
    $benutzer[X]["Vorname"] = "$vorname"


    // Sie können an dieser Stelle beliebig viele Benutzer anlegen. 
    // Achten Sie dabei nur auf die Fortführung der Nummer. 

    // Aufbau der Datenbankverbindung 
    include("config.inc.php");
    $connectionid  mysql_connect ("$dbhost""$dbusername""$dbkennwort"); 
    if (!
    mysql_select_db ("LoginSystem"$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    // Zuerst alle Datensätze löschen um keine Dopplungen zu bekommen. 
    mysql_query ("DELETE FROM benutzerdaten"); 

    // Daten eintragen 
    while (list ($key$value) = each ($benutzer)) 

      
    // SQL-Anweisung erstellen 
      
    $sql "INSERT INTO "
        
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname) "
      
    "VALUES ('".$value["Nickname"]."', '"
                           
    md5 ($value["Kennwort"])."', '"
                           
    $value["Nachname"]."', '"
                           
    $value["Vorname"]."')"
      
    mysql_query ($sql); 

      if (
    mysql_affected_rows ($connectionid) > 0
      { 
        echo 
    "Benutzer erfolgreich angelegt.<br>\n"
      } 
      else 
      { 
       echo 
    "Fehler beim Anlegen der Benutzer.<br>\n"
      } 

    ?>
    Mit was muss ich denn das X bei $benutzer[X] ändern?
    Oder gibt es vielleicht auch einen einfacheren Weg?


    Mit freundlichen Grüßen

    [K@TooN

    EDIT: hat sich erledigt - siehe hier http://www.tutorials.de/forum/showth...m+mit+Sessions
    Geändert von K@TooN (15.08.04 um 14:01 Uhr)
     

  6. #6
    wasserdragoon wasserdragoon ist offline Grünschnabel
    Registriert seit
    Mar 2004
    Beiträge
    3
    ich gebe euch ein tip und sage euch dieses tutorial nicht zu verwenden, da dieses loginsystem nicht sicher ist.
    Die Parameter der sql-Abfrage werden nicht abgesichert.
    Damit ist das SKript anfällig für Angriffe, wie unter http://www.dclp-faq.de/q/q-sql-injection.html beschrieben.

    Ausserdem wird LIKE verwendet, aber das %-Zeichen wird nicht ausgefiltert. Damit kann ich nicht nur das Passwort eines Benutzers, sondern das aller gleichzeitig abtesten.
    user: % ; Passwort: abcde && irgendein Benutzer hat dieses saublöde Passwort -> erfolgreiche Anmeldung.
    Damit muss ich zwar immer noch eine brute-force-Attacke ausführen, aber mit reichlich viel größeren Chancen, da ich halt immer alle Benutzer gleichzeitig auf ein Passwort abteste.
    Hoffe, dass der Autor dieses Tutorials dies einsieht und es verbessert.
    MfG,
    WasserDragoon.
     

  7. #7
    Avatar von SonicBe@m
    SonicBe@m SonicBe@m ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Ort
    München
    Beiträge
    447
    n1 one
    aber dafür gibs sessions
    Geändert von SonicBe@m (30.08.04 um 10:58 Uhr)
     
    Moep :)

  8. #8
    Avatar von Mirko D
    Mirko D Mirko D ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    Wesseling / Köln
    Beiträge
    422
    Original geschrieben von SonicBe@m
    n1 one
    zum glück gibs auch leute die nicht an die gutmütigkeit der menschen denkt!
    ich arbeite zwar eh nur mit md5 sprich der user hätte garkeine möglichkeit sein pw selbst zu ändern
    aber gut ,D
    Wieso hätte der User denn nicht die Möglichkeit sein PW selbst zu ändern? Man kann das PW doch trotz MD5 ändern. Hmm peil ich net
     
    Der Sinn des Lebens liegt nicht darin über den Sinn des Lebens nachzudenken

    >>MG Forum

  9. #9
    Avatar von SonicBe@m
    SonicBe@m SonicBe@m ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Ort
    München
    Beiträge
    447
    Es gibt die methode dem user frei entscheiden zu lassen was für ein pw er will und es gibt die ein pw zu generieren
    diese version unterbindet diese art von angriffe da der user wenn er ein neues pw bekommt es generiert wird

    hier mal eins das auf ner ähnlichen basis aufbaut allerdings nicht die random pw version

    PHP-Code:
    /* inc.sql.php */
    <?
        session_start
    ();
        require(
    "inc.helper.php");
        
    // Mysql
        
    $db_host "localhost";
        
    $db_user "";
        
    $db_pass "";
        
    $db_database "";
        
    $conn mysql_connect($db_host,$db_user,$db_pass) or die("verbindung wurde nicht hergestellt<br>".mysql_error());
        
    mysql_select_db($db_database,$conn) or die("datenbank wurde nicht selektiert<br>".mysql_error());

        
    $user_table "`phpkit_user`";

        if(!
    function_exists("check_login")){
            function 
    check_login(){
                if(!
    $_SESSION['username']){
                    
                    
    header("Location:login.php");
                }
            }
        }

        if(!
    function_exists("auth_user")){
            function 
    auth_user($form_username,$form_pass){
                global 
    $user_table;

                
    $query "SELECT user_name,user_pw,user_status FROM $user_table WHERE `user_name`='$form_username'";
                
    $result mysql_query($query);
                
    $row mysql_fetch_assoc($result);
                if(
    count($row) < 1)
                    return 
    false;
            
                if(
    $row['user_pw'] != md5($form_pass))
                    return 
    false;
                return 
    $row['user_status'];
            }
        }
    ?>
    PHP-Code:
    /*login.php*/
    <?
    session_start
    ();
    include(
    "inc.sql.php");
    $expire 60*60*24*30// eine stunde

    if($_COOKIE['auth']){
        
    $value unserialize(stripslashes($_COOKIE['auth']));
        
    $_SESSION['username'] = $value[0];
        
    $_SESSION['userstatus'] = $value[1];
        
    header("Location: index.php");
    }
    if(
    $_SESSION['username']){
        
    header("Location: index.php");
    }

    if(
    $_REQUEST['submit'] && $_REQUEST['username'] != "" && $_REQUEST['password'] != ""){
        if(
    $_SESSION['userstatus'] = auth_user($_REQUEST['username'],$_REQUEST['password'])){
            
    $_SESSION['username'] = $_REQUEST['username'];
            
            if(
    $_REQUEST['autologin']){
                
    $value = array($_SESSION['username'],$_SESSION['userstatus'],date("d.m.y - H:i:s",time()));
                
    $value serialize($value);
                
    setcookie("auth",$value,time()+($expire));
                
    header("Location: index.php");
            }
        }
        
    header("Location: index.php");
    }
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>todolist</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="default.css" rel="stylesheet" type="text/css">
    </head>

    <body>
    <form method="post" name="userlogin">
    <table width="230" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
        <tr bgcolor="#DDDDDD">
            <td colspan="2" class="title">
                Userlogin
            </td>
        </tr>
        <tr bgcolor="#EEEEEE">
            <td width="80" bgcolor="#EEEEEE" class="label">
                Username
            </td>
            <td>
                <input type="text" name="username" class="field">
            </td>
        </tr>
        <tr bgcolor="#EEEEEE">
            <td class="label">
                Password
            </td>
            <td>
                <input type="password" name="password" class="field">
            </td>
        </tr>
        <tr bgcolor="#EEEEEE">
            <td class="label">
                Autologin
            </td>
            <td>
                <input type="checkbox" name="autologin" value="true">
            </td>
        </tr>
        <tr align="center" bgcolor="#DDDDDD">
            <td colspan="2">
                <input type="submit" name="submit" value=" login ">
            </td>
        </tr>
    </table>
    </form>
    </body>
    </html>
    und die index.php
    PHP-Code:
    /* index.php */
    <?
    require("inc.sql.php");
    check_login();

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>by SonicBe@m</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#000000">
        <tr>
            <td colspan="2" class="title">
                logged in as <?=$_SESSION['username']?>
            </td>
        </tr>
    </table>
    </body>
    </html>
    und zu letzt die logout page

    PHP-Code:
    /* logout.php */
    <?
    session_start
    ();
    session_destroy();
    setcookie("auth",$value,time());
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>todolist</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="default.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    <!--
    body {
        margin-left: 0px;
        margin-top: 0px;
        margin-right: 0px;
        margin-bottom: 0px;
    }
    -->
    </style></head>
    <body >
    <table width="100%" height="100" border="0" valign="center" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000" onClick="window.close();">
        <tr>
            <td class="title" align="center">
                Sie haben sich erfolgreich abgemeldet!
            </td>
        </tr>
    </table><br>
    <script type="text/javascript">
    window.opener.location.href='';
    window.focus();
    window.setTimeout("this.close()",2000);
    </script>
    </body>
    </html>
    wundert euch nicht
    ich leite hier von der phpkit_usertable ab
    da schon zuviele leute sich angemeldet hatten hab ich nun einfach diese table als usertable benutzt
    Geändert von SonicBe@m (30.08.04 um 11:15 Uhr)
     
    Moep :)

  10. #10
    K@TooN K@TooN ist offline Mitglied
    Registriert seit
    Oct 2003
    Ort
    Willich (NRW)
    Beiträge
    20
    und CS suckt anyway :-P
     

Ähnliche Themen

  1. Frage zu Login-System mit Sessions
    Von M-P im Forum PHP
    Antworten: 15
    Letzter Beitrag: 02.09.09, 01:42
  2. Antworten: 1
    Letzter Beitrag: 08.12.07, 19:27
  3. Frage zu Login-System mit Sessions Tut
    Von medico im Forum PHP
    Antworten: 3
    Letzter Beitrag: 22.10.04, 11:15
  4. Login-System mit Sessions Tut-Frage
    Von Hanns_L im Forum PHP
    Antworten: 8
    Letzter Beitrag: 18.10.04, 23:01
  5. frage zu sessions - login system
    Von DieterWeb im Forum PHP
    Antworten: 1
    Letzter Beitrag: 28.07.02, 19:45