kostenloser Webspace werbefrei: lima-city


Datenbankauslese Problem bei PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    Hallo liebe lima-city user.

    Ich habe volgendes Vorhaben:
    Ich möchte das sich die Benutzer meiner Page einloggen können. Dazu habe ich eine Datenbank mit dem Namen Login angelegt. Eine Registrierungsformular aufgestellt, das auch funktioniert und die Daten Wunschgemäß in der Datenbank abspeichert.
    Nun habe ich eine Weiter Seite angelegt, in der der Login Statt finden soll. Dazu wird halt überprüft ob das im Formular eingegebene Passwort mit dem in der Datenbank übereinstimmt. hier mal mein Script.:
    ($_POST['spieler'] wird vorher in einem Formular eingegeben ist der Spieler)


    <?php

    @mysql_connect("mysql.lima-city.de", "yyyyyy", "xxxxxx") or die("Verbindung zu MySql
    gescheitert!");
    @mysql_select_db("db_143858_2") or die("Datenbankzugriff gescheitert!");

    $spnm = $_POST['spieler'];
    $sql = "SELECT passwort FROM Login WHERE login ='$spnm'";

    $result = mysql_query($sql);


    echo $result;
    if(mysql_query($sql))
    { echo "erfolgreich";
    }
    mysql_close();


    ?>

    Da ich ein ziemlicher newcommer bin und mir alles selber beibringe kann es gut sein das ich einen Denkfehler eingebaut habe oder umständlich Programmiert habe. Aber ich stelle mir jetzt vor, das der befehl
    $result = mysql_query($sql);
    mir nun das passwort ausgibt und diesen halt in der Variable speichert. wenn ich jetzt aber die variable ausgebe erscheint auf der Page :
    Resource id #3
    als Ausgabe ...
    aber eigentlich müsste doch das Passwort aus der Datenbank ausgegeben werden oder?


    danke schonmal vorweg.
    mfg.
    galaktia

    Beitrag zuletzt geändert: 12.6.2009 16:20:27 von galaktika
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mach einfach:

    $row = mysql_fetch_array($result);
    echo $row['passwort'];


    PS: Nimm dein MySQL-Passwort aus deinem Beitrag raus!
  4. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    Ah Perfekt danke und nochmal danke für den hinweis ;D

    Beitrag zuletzt geändert: 12.6.2009 16:27:49 von galaktika
  5. <?php
    @mysql_connect("mysql.lima-city.de", "yyyyyy", "xxxxxx") or die("Verbindung zu MySql
    gescheitert!");
    @mysql_select_db("db_143858_2") or die("Datenbankzugriff gescheitert!");
    $spnm = $_POST['spieler'];
    $sql = "SELECT passwort FROM Login WHERE login ='$spnm'";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    if($row['passwort'] == 'EINGEGEBENES_PASSWORT')
    {
    echo 'Erfolgreich!';
    };
    mysql_close();
    ?>


    Das müsste gehen!
  6. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    ja perfekt funktioniert ähm noch ne frage die nicht ganz zum Thema passt: wie mache ich es das sich nachdem klick auf login (wenn alle daten korrekt sind) ich auf eine andere Seite weitergeleitet werde ist das auch möglich?
  7. <?php
    @mysql_connect("mysql.lima-city.de", "yyyyyy", "xxxxxx") or die("Verbindung zu MySql
    gescheitert!");
    @mysql_select_db("db_143858_2") or die("Datenbankzugriff gescheitert!");
    $spnm = $_POST['spieler'];
    $sql = "SELECT passwort FROM Login WHERE login ='$spnm'";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    if($row['passwort'] == 'EINGEGEBENES_PASSWORT')
    {
    header("Location: URL_ZUR_NÄCHSTEN_SEITE");
    echo 'Erfolgreich!';
    };
    mysql_close();
    ?>
  8. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    Ehm es funktioniert doch nicht so ganz....
    so sieht meine programmierung aus

    if($_POST['sppw'] == $row['passwort'])
    {
    header("Location: index.php"); (Line87)

    echo "<h3>Login erfolgreich</h3>";

    }


    und dann erhalte ich diese Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/galaktika/html/Login.php:16) in /home/webpages/lima-city/galaktika/html/Login.php on line 87

    Beitrag zuletzt geändert: 12.6.2009 16:45:41 von galaktika
  9. Das heißt, dass du vorher schon etwas ausgegeben hast, was du in diesem Fall nicht darfst. Entferne einfach alle echo-, print-, oder ähnliche Funktionen, die etwas ausgeben.
  10. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    ne daran kanns irgendwie nicht liegen weil so sieht mein ganzer php teil aus und ich wüsste nicht wo ich davor noch was ausgebe:


    <?php

    if(!empty($_POST['spieler'])&&!empty($_POST['sppw']))
    {
    @mysql_connect("mysql.lima-city.de", "xxxxxx", "yyyyyy") or die("Verbindung zu MySql
    gescheitert!");
    @mysql_select_db("db_143858_2") or die("Datenbankzugriff gescheitert!");
    $spnm = $_POST['spieler'];
    $sql = "SELECT passwort FROM Login WHERE login ='$spnm'";

    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);





    if($_POST['sppw'] == $row['passwort'])
    {
    header("Location: index.php");

    }
    else
    {
    echo "Login fehlgeschlagen";
    }

    mysql_close();

    }
    else
    {
    echo "<h3>Bitte gebe deinen Login Namen und dein Passwort ein!</h3>";
    }
    ?>
  11. galaktika schrieb: ne daran kanns irgendwie nicht liegen weil so sieht mein ganzer php teil aus und ich wüsste nicht wo ich davor noch was ausgebe

    Steht vor dem <?php vielleicht noch etwas HTML ?
  12. Ich kannte auch mal eine Funktion, mit der man den Buffer aktivieren kann, ich komm aber nich auf den Namen und find sie auch nicht mehr.

    Weiß jemand anders vielleicht noch den Namen der Funktion?
  13. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    Ja klar da wird ja die ganze Zeite drauf aufgebaut: und das ist das formular halt was unmittelbar vor dem php teil steht

    <h2>Login></h2>

    <form action="Login.php" method="post">
    Login Name: <input type="text" name="spieler" />
    Passwort: <input type="password" name="sppw" />
    <input type="submit" value="Login" name="login" />
    </form>

    das ist jetzt das was sich auf die tabllen spalte aufgebaut habe....

    Kurze neben Frage ist das richtig das ich die Seite jedes mal komplett aufbaue(links mit sitebar und menü) und dann nur in der mitte den Inhalt ändere? oder gibts da ne besser lösung
  14. Ich würde dir folgendes empfehlen:

    Loginformular:

    ...
    <form action="phplogin.php" method="post">
    ...
    </form>
    ...

    phplogin.php:

    <?php
    @mysql_connect("mysql.lima-city.de", "xxxxxx", "yyyyyy") or header("Location: index.php?stat=nomysql");
    @mysql_select_db("db_143858_2") or header("Location: index.php?stat=nomysql");
    $spnm = $_POST['spieler'];
    $sql = "SELECT passwort FROM Login WHERE login ='$spnm'";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    if($_POST['sppw'] == $row['passwort'])
    {
    header("Location: index.php");
    }
    else
    {
    header("Location: index.php?stat=false");
    }
    mysql_close();
    }
    ?>


    Damit wird auf der Seite, die weiterleitet nichts angezeigt!

    Beitrag zuletzt geändert: 12.6.2009 17:41:54 von cookies
  15. Autor dieses Themas

    galaktika

    galaktika hat kostenlosen Webspace.

    Achso ja das wäre eine möglichkeit die probier ich mal eben aus
  16. c****s

    Der Nachteil und die Unsicherheit deiner Methode liegen darin, dass du die Passwörter offen übermittelst und offen speicherst. Das ist zum Einen eine Sicherheitslücke, zum anderen ist es unhöflich die Passwörter Dritter plain in einer DB zu speichern und zu lesen.

    Vielleicht wäre diese Herangehensweise besser:

    1. Mach dir zum Login kein <form>, sondern nur die beiden Eingabefelder (login und pw) und den Login-Button oder -Link.
    2. Weise dem onClick-Handler des Login-Buttons (oder -Links) eine Javaroutine zu.
    3. Diese liest den Inhalt der beiden Eingabefelder, hasht das PW (md5, crc32 oder was auch immer) und schickt einen XMLHttpRequest (AJAX) mit dem Login und dem Hash (als POST oder GET) an ein PHP-Script auf dem Server.
    4. Das Script überprüft, ob Login und Hash in der DB existieren und leitet entsprechend weiter.

    cu
    census
  17. census schrieb:
    Der Nachteil und die Unsicherheit deiner Methode liegen darin, dass du die Passwörter offen übermittelst und offen speicherst. Das ist zum Einen eine Sicherheitslücke, zum anderen ist es unhöflich die Passwörter Dritter plain in einer DB zu speichern und zu lesen.

    Vielleicht wäre diese Herangehensweise besser:

    1. Mach dir zum Login kein <form>, sondern nur die beiden Eingabefelder (login und pw) und den Login-Button oder -Link.
    2. Weise dem onClick-Handler des Login-Buttons (oder -Links) eine Javaroutine zu.
    3. Diese liest den Inhalt der beiden Eingabefelder, hasht das PW (md5, crc32 oder was auch immer) und schickt einen XMLHttpRequest (AJAX) mit dem Login und dem Hash (als POST oder GET) an ein PHP-Script auf dem Server.
    4. Das Script überprüft, ob Login und Hash in der DB existieren und leitet entsprechend weiter.

    cu
    census


    1. Nennt sich das Javascript
    und 2. Ist es sehr kompliziert, mit Javascript einen md5-Hash zu erzeugen!
  18. c****s

    1. Richtig. AJAX nutzt Javascript, daher das "J". Gut beobachtet.

    2. md5, crc32, sha-1 oder jedweder anderer Hashingalgorithmus ist in JavaScript genauso "kompliziert" wie in C, C++, Java, LUA, asm, PASCAL, you name it. Aber genauso wie für fast alle Sprachen, gibt es fertige, kostenlose Code-Snippets, die man runterladen kann und genau dieses tun. GIYF.

    cu
    census
  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!