phoboz
Goto Top

Php-Login Skript mit mySQL-Datenbank. Fehlermeldungen

Hallo,

habe ein loginskript und ein loginformular erstellt, bekomme allerdings ein Fehler den ich mit meinem wissen nicht lösen kann.

Hier das Formular:

### login-formular.html

<form method="POST" action="login.php">  
Ihr Username: <input name="username"><br>  
Ihr Passwort: <input name="passwort" type=password><br>  
<input type=submit name=submit value="Einloggen">  
</form>

Hier das Login-Skript:

###  login.php:

<?php
 $_db_host = "localhost";             
    $_db_datenbank = "datenbankname";  
    $_db_username = "mysql-username";  
    $_db_passwort = "mysql-passwort";  

    SESSION_START();

    # Datenbankverbindung herstellen
    $link = mysql_connect($_db_host, $_db_username, $_db_passwort);

    # Hat die Verbindung geklappt ?
    if (!$link)
        {
        die("Keine Datenbankverbindung möglich: " . mysql_error());  
        }

    # Verbindung zur richtigen Datenbank herstellen
    $datenbank = mysql_select_db($_db_datenbank, $link);

    if (!$datenbank)
        {
        echo "Kann die Datenbank nicht benutzen: " . mysql_error();  
        mysql_close($link);        # Datenbank schliessen
        exit;                    # Programm beenden !
        }


    # Ist die $_POST Variable submit nicht leer ???
    # dann wurden Logindaten eingegeben!
    if (!empty($_POST["submit"]))  
        {
                $_username = mysql_real_escape_string($_POST["username"]);  
        $_passwort = mysql_real_escape_string($_POST["passwort"]);  

        # Befehl für die MySQL Datenbank
        $_sql = "SELECT * FROM login_usernamen WHERE  
                    username='$_username' AND  
                    passwort='$_passwort' AND  
                    user_geloescht=0
                LIMIT 1";  

        # Prüfen, ob der User in der Datenbank existiert !
        $_res = mysql_query($_sql, $link);
        $_anzahl = @mysql_num_rows($_res);

        # Die Anzahl der gefundenen Einträge überprüfen. Maximal
        # wird 1 Eintrag rausgefiltert (LIMIT 1). Wenn 0 Einträge
        # gefunden wurden, dann gibt es keinen Usereintrag, der
        # gültig ist. Keinen wo der Username und das Passwort stimmt
        # und user_geloescht auch gleich 0 ist !
        if ($_anzahl > 0)
            {
            echo "Der Login war erfolgreich.<br>";  

            # In der Session merken, dass der User eingeloggt ist !
            $_SESSION["login"] = 1;  

            # Den Eintrag vom User in der Session speichern !
            $_SESSION["user"] = mysql_fetch_array($_res, MYSQL_ASSOC);  

            # Das Einlogdatum in der Tabelle setzen !
            $_sql = "UPDATE login_usernamen SET letzter_login=NOW()  
                     WHERE id=".$_SESSION["user"]["id"];  
            mysql_query($_sql);
            }
        else
            {
            echo "Die Logindaten sind nicht korrekt.<br>";  
            }
        }

    # Ist der User eingeloggt ???
    if ($_SESSION["login"] == 0)  
        {
        
        # schliessen und das Programm beenden
        include("login-formular.html");  
        mysql_close($link);
        exit;
        }

    echo "Hallo, Sie sind erfolgreich eingeloggt !<br>";  

    # Datenbank wieder schliessen
    mysql_close($link);
?>


Folgenden Fehler erhalte ich nach dem ich im Formular die Anmeldedaten eingeben habe:

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead

Der Login war allerdings erfolgreich! Wenn ich nun das mysql_connect() in mysqli_connect() umbenne erhalte ich folgende Fehlermeldungen:

Warning: mysql_select_db() expects parameter 2 to be resource, object given
Warning: mysql_close() expects parameter 1 to be resource, object given

Bitte um Hilfe

Grüße

Phoboz

Content-Key: 221164

Url: https://administrator.de/contentid/221164

Printed on: April 20, 2024 at 04:04 o'clock

Member: bytecounter
bytecounter Nov 05, 2013 at 06:52:36 (UTC)
Goto Top
Hallo,

das steht doch da:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead on line 10

Die Funktion ist überholt und wird in einer der nächsten Versionen aus PHP entfernt. Stattdessen soll man mysqli oder PDO nutzen. Mit Google wärst Du auch auf folgende Seite gestoßen:
http://us1.php.net/manual/en/function.mysql-connect.php

Im Gesamten hoffe ich doch, dass es sich hier um ein Lern- und nicht im ein Script handelt, welches in Produktivumgebungen zum Einsatz kommt...

vg
Bytecounter
Member: Phoboz
Phoboz Nov 05, 2013 at 07:09:15 (UTC)
Goto Top
Hi,

bitte weiterlesen, wenn ich das änder kommen zwei andere Fehlermeldungen.

oder meinst du ich soll überall wo mysql steht mysqli einsetzen?
Member: SlainteMhath
SlainteMhath Nov 05, 2013 at 07:22:00 (UTC)
Goto Top
Moin,

vielleicht solltest du einen Blick in die PHP Doku werfen, dann würdest du sehen das die mysqli_ Funktionen anders funktionieren als die alten mylsql_
$link = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link));  

//consultation:
$query = "SELECT name FROM mytable" or die("Error in the consult.." . mysqli_error($link));  

//execute the query.
$result = $link->query($query);

//display information:
while($row = mysqli_fecth_array($result)) {
....

lg,
Slainte
Member: nxclass
nxclass Nov 05, 2013 at 10:53:50 (UTC)
Goto Top
... oder schau dir lieber gleich PDO an. http://php.net/manual/en/book.pdo.php