Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Login erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Login erstellen

    hi leute ...

    habe meine homepage (wen ich den link mal zur problemlösung senden dar) CORA-PLANET.DE neu aufgesetzt und wollte mich jetzt dran machen einen login zu erstellen

    habe bereits in der datenbank (lokal allerdings) einen benutzernamen und passwort mit md5 verschlüsselung angelegt

    ich weiß allerdings jetzt nicht wie ich das mittels php überprüfen kann... habe ein script erstellt aber da werden mir die texte für eingeloggt und für nicht eingeloggt angezeigt ... ich vermute mal das was mit der abfrage nicht stimmt... aber was da komm ich jetzt leider nicht drauf ... könnt ihr mir helfen?? wäre nett danke schonmal im vorraus

    hier die einzelnen scripte

    index.php (wo der login ist)
    Code:
    <?php include('navi.php');?>
    <html>
     <head>
      <title>
       CORA-PLANET.DE
      </title>
      <link rel="stylesheet" type="text/css" href="cora-planet-template.css">
     </head>
    
     <body>
      <div class="header">
       <a href="http://www.cora-planet.de"><img src="images/logo.gif" height="43" border="0"></a>
      </div>
    
      <div class="menubox">
       <div class="head">
        <b>
         Men&uuml;
        </b>
       </div>
       <a href="index.php?index">Home</a><br>
       <a href="index.php?kalender">Kalender</a><br>
       <a href="index.php?bilder">Bilder</a><br>
       <a href="index.php?kontakt">Kontakt</a><br>
       <a href="index.php?chronik">Chronik</a><br>
       <a href="index.php?neues">Neues</a><br>
       <a href="index.php?impressum">Impressum</a><br>
    
    
      </div>
      <div class="loginbox">
       <div class="head">
        <b>
         Login
        </b>
       </div>
       <form action="login.php" method="POST">
        Username:<br>
        <input type="text" name="username" size="15"><br>
        Passwort:<br>
        <input type="password" name="passwort" size="15"><br><br>
        <input type="submit" value="Login" name="klick">
       </form>
       <a href="#">Registrieren</a><br>
       <a href="#">Passwort vergessen</a>
      </div>
      <div class="rechts1">
       1. rechter Block
      </div>
    
      <div class="footer">
       &copy; by KM April 2008
      </div>   
     </body>
    </html>
    login.php (auf die der login button verweist)
    Code:
    <?php  session_start();	?>
    
    <html>
     <head>
      <title>
       Eingeloggt
      </title>
     </head>
    
     <body>
    
     <?php
      if($_SERVER['REQUEST_METHOD'] == 'POST'){
    
        $server = "localhost";
        $nutzer = "root";
        $passwort = "";
        $dbname = "coraplanet";
        $verbindung = mysql_connect($server, $nutzer, $passwort) or die ("Keine Verbindung zum Server moeglich");
        mysql_select_db($dbname) or die ("Die Datenbank existiert nicht!");
    
        $hostname = $_SERVER['HTTP_HOST'];
        $path = dirname($_SERVER['PHP_SELF']);
        $username = mysql_query("SELECT name FROM user");
        $passwort = mysql_query("SELECT passwort From user");
        $usernameabfrage = $_POST["username"];
        $passwortabfrage = $_POST["username"];
        
        if($usernameabfrage == $username && $userpasswortabfrage == $passwort){
         header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/logged.php');
        }
        else
         echo "Sie haben falsche daten eingegeben";
        }
      ?>
      <h2>Herzlich Willkommen</h2>
     </body>
    </html>
    logged.php (auf die nach dem überprüfen weitergeleitet werden soll)
    Code:
    <?php include("auth.php");?>
    <html>
     <head>
      <title>
       Eingeloggt
      </title>
     </head>
    
     <body>
     <h1>Herzlich Willkommen<?php $_POST[
    auth.php (in der überprüft werden soll ob derjenige bereits angemeldet ist oder nicht)
    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;
          }
    ?>
    hoffe das genügt schon ... falls nicht bitte schreiben was noch fehlt und ich werde dies liefern


  • #2
    DU machst gleich mehrere Fehler. Zuerst solltest du dir mal angucken wie mysql_query() funktioniert, die liefert dir nämlich eine ressource, die du dann z.b. mit mysql_fetch_assoc() verarbeiten kannst. Außerdem solltest du auch die md5()-Funktion verwenden wenn dein Passwort in der Datenbank auch mit md5 verschlüsselt ist. Dann gehst du bei dir davon aus das nur ein User in der Tabelle steht, das kann ja nun auch nicht sinn der sache sein. Als Tipp: mysql_query() immer mit "or die(mysql_error())" benutzen um evtl. Fehler von der Datenbank auszugeben

    [edit]
    Da sind noch mehr Fehler, aber kümmere dich erstmal um die genannten

    Kommentar


    • #3
      Zitat von cycap Beitrag anzeigen
      DU machst gleich mehrere Fehler. Zuerst solltest du dir mal angucken wie mysql_query() funktioniert, die liefert dir nämlich eine ressource, die du dann z.b. mit mysql_fetch_assoc() verarbeiten kannst. Außerdem solltest du auch die md5()-Funktion verwenden wenn dein Passwort in der Datenbank auch mit md5 verschlüsselt ist. Dann gehst du bei dir davon aus das nur ein User in der Tabelle steht, das kann ja nun auch nicht sinn der sache sein. Als Tipp: mysql_query() immer mit "or die(mysql_error())" benutzen um evtl. Fehler von der Datenbank auszugeben

      [edit]
      Da sind noch mehr Fehler, aber kümmere dich erstmal um die genannten

      danke schonmal, werde mir das gleich mal anschauen

      Kommentar


      • #4
        Ich würde an deiner Stelle dein Script n bisschen anders aufbauen.
        1. Würde ich mal zusehen, dass ich im mysql_query ne WHERE Bedingung reinhaue. z.B.:
        Code:
        $abfrage = "SELECT `password` FROM `user` WHERE `username` = '".$_POST['username']."' ";
        d.H. Suche mir das Passwort raus, welches in der Tabelle user steht und suche dort, wo der username = dem eingegebenen Usernamen ist.

        2. in deiner 2ten Abfrage mach mal aus dem From ein FROM ^^

        das andere was mir so auf anhieb aufgefallen ist wurde schon gesagt.

        so far Greetz amigo

        Kommentar


        • #5
          Zitat von amigo Beitrag anzeigen
          Ich würde an deiner Stelle dein Script n bisschen anders aufbauen.
          1. Würde ich mal zusehen, dass ich im mysql_query ne WHERE Bedingung reinhaue. z.B.:
          Code:
          $abfrage = "SELECT `password` FROM `user` WHERE `username` = '".$_POST['username']."' ";
          d.H. Suche mir das Passwort raus, welches in der Tabelle user steht und suche dort, wo der username = dem eingegebenen Usernamen ist.

          2. in deiner 2ten Abfrage mach mal aus dem From ein FROM ^^

          das andere was mir so auf anhieb aufgefallen ist wurde schon gesagt.

          so far Greetz amigo
          Genau das meinte ich mit

          Dann gehst du bei dir davon aus das nur ein User in der Tabelle steht, das kann ja nun auch nicht sinn der sache sein


          Greetz
          Cy

          Kommentar


          • #6
            habe den code jetzt mal folgendermaßen geändert

            Code:
            <?php  session_start();	?>
            
            <html>
             <head>
              <title>
               Eingeloggt
              </title>
             </head>
            
             <body>
            
             <?php
              if($_SERVER['REQUEST_METHOD'] == 'POST'){
            
                $server = "localhost";
                $nutzer = "root";
                $passwort = "";
                $dbname = "coraplanet";
                $verbindung = mysql_connect($server, $nutzer, $passwort) or die ("Keine Verbindung zum Server moeglich");
                mysql_select_db($dbname) or die ("Die Datenbank existiert nicht!");
            
                $hostname = $_SERVER['HTTP_HOST'];
                $path = dirname($_SERVER['PHP_SELF']);
                $usernameabfrage = mysql_query("SELECT 'passwort' FROM 'user' WHERE 'username' = '".$_POST['username']."' ");
                $passwortabfrage = mysql_query("SELECT 'passwort' FROM 'user' WHERE 'passwort' = '".$_POST['passwort']."' ");
                $username = $_POST["username"];
                $passwort = $_POST["username"];
                
                if($usernameabfrage == $_POST['username'] && $passwortabfrage == $_POST['passwort']){
                 header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/logged.php');
                }
                else
                 echo "Sie haben falsche daten eingegeben";
                }
              ?>
             </body>
            </html>
            jedoch springt er immernoch in den else teil ... der fehler das er auch noch zusätzlich herzlich willkommen geschrieben hat hab ich nun auch behoben das war nach dem php code der <h2>Herzlich Willkommen</h2> tag gewesen den habe ich entfernt

            Kommentar


            • #7
              PHP-Code:
              $usernameabfrage mysql_query("SELECT passwort FROM user WHERE username = '".$_POST['username']."' "); 
              Damit schaffst du lediglich die Abfrage, aber noch keine Auswertung der zurückgelieferten Ressource... Damit du effektive Werte hast, benutze z.B:

              PHP-Code:
              $usernameabfrage mysql_query("SELECT passwort FROM user WHERE username = '".$_POST['username']."' ");

              // Username existiert nicht
              if (!mysql_num_rows($usernameabfrage)
              {
                echo 
              "Paah, gibt's ned";
              }

              // Username vorhanden
              {
                
              // WICHTIG: zurückgelieferte MySQL-Ressource auslesen!!
                
              $password_in_database mysql_result($usernameabfrage,0,'passwort');
                
                
              // Passwort entspricht Datenbank-Passwort
                
              if ($_POST['passwort'] == $password_in_database)
                {
                  echo 
              "Korrekt: Du darfst rein!";
                }
                else
                {
                  echo 
              "Zutritt verweigert";
                }

              Ich würde dir dringendst nahelegen, mehr über PHP+MySQL zu lesen... offenbar happerts noch bissl am Konzept "Datenübergabe von MySQL an PHP". MySQl liefert dir nach einem Query keine direkt auslesbaren Werte - vielmehr musst du sie mit Hilfe der MySQL-Funktionen in PHP zu Strings und/oder Arrays "umwandeln".

              Kommentar


              • #8
                $usernameabfrage = mysql_query("SELECT 'passwort' FROM 'user' WHERE 'username' = '".$_POST['username']."' ");
                Das ist anfällig für sql injections. Ausserdem müssen bei mysql backticks für Feldbezeichner benutzt werden, keine '

                PHP-Code:
                $query "SELECT
                 `passwort`
                FROM
                 `user`
                WHERE
                 `username`='"
                .mysql_real_escape($_POST['username'], $verbindung)."'
                "
                ;
                $usernameabfrage mysql_query($query$verbindung) or exit(mysql_error($verbindung)); 

                Kommentar


                • #9
                  David: zuviel des Guten. SQL-Injections und andre Sicherheitsrelevante Themen sollen ihn erst kümmern, wenner mal die Basics drin hat. Bevor er nich mal Daten aus ner DB auslesen kann, is alles andre eh Humbug

                  Kommentar


                  • #10
                    Leute ihr wiederholt größtenteils nur das was ich in meinem ersten Post schon gesagt habe und was immer noch nicht in die Tat umgesetzt wurde.

                    Ich bin, wie ReatKay, der Meinung das SQL-Injection zwar ein wichtiges Thema, aber an dieser Stelle wohl zu viel des guten ist.

                    Kommentar


                    • #11
                      Ist mir klar, Cycap... aber der TE scheint wohl deine Aussage bzgl. "Ressource" und "RessourcenID" von MySQL überlesen zu haben, deshalb wollte ich es ihm direkt anhand eines Beispiels zeigen

                      Kommentar


                      • #12
                        So hab mal den php Code bearbeitet und mit Kommentaren versehen. Getestet hab ich ihn nicht aber hoffe das stimmt alles so. Bin aer immernoch der Meinung das man das eleganter und sicherlich einfacher / sicherer lösen kann. Aber gut ums zu lernen warum nicht.

                        PHP-Code:
                        <?php  session_start();    ?>

                        <html>
                         <head>
                          <title>
                           Eingeloggt
                          </title>
                         </head>

                         <body>

                         <?php
                          
                        if($_SERVER['REQUEST_METHOD'] == 'POST'){

                            
                        $server "localhost";
                            
                        $nutzer "root";
                            
                        $passwort "";
                            
                        $dbname "coraplanet";
                            
                        $verbindung mysql_connect($server$nutzer$passwort) or die ("Keine Verbindung zum Server moeglich");
                            
                        mysql_select_db($dbname) or die ("Die Datenbank existiert nicht!");

                            
                        $hostname $_SERVER['HTTP_HOST'];
                            
                        $path dirname($_SERVER['PHP_SELF']);
                            
                        // Bis hierhin alles ok...
                            
                            
                            // ABFRAGE ÜBERSETZT: Suche mir das Passwort aus der Tabelle user an der Stelle wo der Username gleiche der Eingabe ist.
                            
                        $usernameabfrage mysql_query("SELECT `passwort` FROM `user` WHERE `username` = '".$_POST['username']."' ");
                            
                        // Passwortabfrage kannste dir erstmal sparen
                            
                            // EINGABEN DES USERS
                            
                        $username $_POST["username"];
                            
                        $passwort $_POST["passwort"];
                            
                            
                        // Die Werte die dir die Abfrage zurückliefert kannst du erstmal so nicht verwerten. Also musst du die ein wenig bearbeiten. Erklären wie das geht tu ich aber 
                            // jetzt nicht. Schau dazu auf tut.php-q.net
                            
                        $row mysql_fetch_assoc($usernameabfrage);
                            
                            
                        // in die Variable $row wurden jetzt quasi alle Inhalte, die dir deine Datenbankabfrage geliefert haben, reingeschrieben.
                            // um Nun z.B. das Passwort auszugeben, musst du die Variable $row nehmen und das anhängen ['passwort'].
                            // Syntax allgemein: $row['spaltennamen in der DB-Tabelle'];
                            
                            
                            // Daraus folgt dann hier:
                            
                        if($row['passwort'] == $_POST['passwort']){
                             
                        header('Location: http://'.$hostname.($path == '/' '' $path).'/logged.php');
                            }
                            else
                             echo 
                        "Sie haben falsche daten eingegeben";
                            }
                            
                        // Ich hab die Abfrage nach dem Usernamen weggelassen, weil du ja eh nur ein Ergebniss aus der Abfrage bekommst, wenn es den Usernamen in der DB gibt und er dir    // auch nur das Passwort des Users ausgibt.
                          
                        ?>
                         </body>
                        </html>

                        Kommentar


                        • #13
                          danke für eure hilfe das script funktioniert jetzt schonmal soweit ganz gut ...

                          habe mir auch schon einige lektüren druchgelesen wo solch ein login beschrieben wird...

                          aber ich kapier net ganz warum er immernoch den elsezweig nimmt obwohl ich die daten richtig eingegeben habe

                          Kommentar


                          • #14
                            Benuzt du vielleicht ne md5() verschlüsselung in deiner Datenbank?
                            Wenn ja dann musst du dein eingegebenes Passwort erstmal in md5 umscheiben um das vergleichen zu können.

                            Kommentar


                            • #15
                              Habs mal verschoben, ist ja nun wirklich ein Anfängerproblem

                              Kommentar

                              Lädt...
                              X