Frage von ReallifeedG, 58

PHP Login, keine Fehlermeldung aber funktioniert trotzdem nicht!?

Ich habe ein Login programmiert.. Funktioniert aber nicht.. Kann mir jmd weiterhelfen?

Danke im Vorraus!

        require_once('zugang.php');
  
        $fehlermldg = "";
  
        //if (!isset($_SESSION['id'])) {
            if (isset($_POST['submit'])) {

    $msg = "";

    

        $mail = $_POST["mail"];

        $passwort = md5($_POST["passwort"]);

         if ($name == '' || $password == '') {

            $msg = "Du musst alle Felder ausfüllen";

        } else {

            $sql = "SELECT * FROM nutzer WHERE email = '$mail' AND passwort = '$passwort'";

            $query = mysql_query($sql);

     

            if ($query === false) {

                echo "Feler mit der Datenbank: " . mysql_error();

                exit;

            }

     

            if (mysql_num_rows($query) == 0) {

              $daten = mysqli_query($db, $sql);
                    $zeile = mysqli_fetch_array($daten);

                header('Location: /memberarea.php');
                // Login erfolgreich, also die Cookies setzen und den Benutzer zur Hauptseite umleiten
                        $_SESSION['id'] = $zeile['id'];
                        $_SESSION['nutzername'] = $zeile['nutzername'];
                        setcookie('id', $zeile['id'], time() + (60 * 60 * 24 * 30));   // Verfällt in 30 Tagen
                        setcookie('nutzername', $zeile['nutzername'], time() + (60 * 60 * 24 * 30));  // Verfällt in 30 Tagen
                exit;

            }

     

            $msg = "E-Mail oder Passwort falsch";

        }

    }
//}

    
                    
            
                    
    ?>
Antwort
von PeterKremsner, 28

Schalte bei PHP mal die Debugging Features ein:

error_reporting(E_ALL);
ini_set('display_errors', 1);

Am Anfang von deiner Datei einfügen, dann solltest du alle Fehlermeldungen von PHP sehen können.

Zudem solltest du genauer beschreiben was nicht funktioniert, wird nichts angezeigt, oder wird der Login nicht akzeptiert etc...

Btw md5 ist nicht sicher verwende am besten die Funktion http://php.net/manual/de/function.password-verify.php

Kommentar von ReallifeedG ,

Hat mir sehr geholfen, danke aber jetzt habe ich das Problem:

Warning: mysql_query(): Access denied for user 'ni665214_5'@'localhost'
(using password: NO) in /var/customers/webs/ni665214_5/login.php on line
31

Warning: mysql_query(): A link to the server could not be established in
/var/customers/webs/ni665214_5/login.php on line 31
Feler mit der Datenbank: Access denied for user 'ni665214_5'@'localhost'
(using password: NO)

Kommentar von PeterKremsner ,

So wie es aussieht hast du keinen Zugriff auf den Mysql Server.

Stimmt Nutzername und hast du wirklich kein Passwort bei deinem Mysql Zugang?

Außerdem zeig mal die Datei login.php

Antwort
von n0b0dyelse, 21

Du machst einmal

$query = mysql_query($sql);

dann verwendest du wieder mysqli, das könnte hier eine fehlerquelle sein.

Hinweis: Verwende für die Passwort verschlüsselung lieber sha256 oder sha512:

http://php.net/manual/en/function.hash.php

für md5 gibt es mittlerweile ziemlich vollständige Rainbow Tabellen

Kommentar von ReallifeedG ,

Nach dem ich mysqli gemacht habe meckert der trotzdem mit mir rum

Warning: mysqli_query() expects at least 2 parameters, 1 given in 
/var/customers/webs/ni665214_5/login.php on line 31

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null
given in /var/customers/webs/ni665214_5/login.php on line 45

Warning: Cannot modify header information - headers already sent by
(output started at /var/customers/webs/ni665214_5/header.php:159) in
/var/customers/webs/ni665214_5/login.php on line 50

Warning: Cannot modify header information - headers already sent by
(output started at /var/customers/webs/ni665214_5/header.php:159) in
/var/customers/webs/ni665214_5/login.php on line 54

Warning: Cannot modify header information - headers already sent by
(output started at /var/customers/webs/ni665214_5/header.php:159) in
/var/customers/webs/ni665214_5/login.php on line 55
Kommentar von n0b0dyelse ,

Seh dir einmal das Beispielskript im manual an, du musst entweder die Variable der Verbindung mit übergeben, oder wie im folgenden beispiel die funktion aus dem Objekt aufrufen:

http://php.net/manual/en/mysqli.query.php#example-1886

Kommentar von surbahar53 ,

Ganz einfach, $db == NULL !

Kommentar von ReallifeedG ,

Wie muss ich das denn jetzt machen? Ich habe PHP 5.3

Kommentar von surbahar53 ,

Für das Setzen des Links $db muss Du mysqli_connect() oder mysqli_init() aurfrufen.

Kommentar von ReallifeedG ,

connect habe ich auf der zugangs.php hat immer funktioniert...

Antwort
von Kiboman, 12

sieht ziemlich banane aus.

mein tipp, fange von vorne an ohne code zu kopieren, mache dir gedanken wie der Ablauf sein muss.

steige auf PDO um und verwende es richtig.

mir scheint es so als hast du da 3 verschiedene beispiele zusammen gewürfelt.

Antwort
von surbahar53, 30

$name wird auf einen leeren String geprüft, ist aber undefiniert.

Kommentar von ReallifeedG ,

Habe ich gemerkt... Danke

Antwort
von LeonardM, 25

Bei der if name ... prüfung die "

Kommentar von ReallifeedG ,

Verstehe nicht so ganz, was du meinst...  Bin neu in der PHP Spate

Kommentar von LeonardM ,

du prüfst ob der username den folgenden wert hat weil du ein " vergessen hast unf genauso beim passwort ein " in der selben zeile || $passwort == "

Kommentar von LeonardM ,

übrigens: verwende lieber pdo und fang nicht wenn du noch neu bist mit themen an die eine sehr hohe sicherheit und präzision erfordern. alles nur noch nicht das.. das wird 100% sonst schief gehen und evtl schwerwiegende folgen haben

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten