2016-04-13 6 views
0

Ich benutze diesen Code, um Benutzer anmelden und ich möchte den Wert in der Spalte angemeldet in Ja in Mysql-Datenbank zu aktualisieren. Ich habe versucht, es vor dem Senden der Kopfzeile zu aktualisieren, aber es wird nicht aktualisiert. Wo sollte ich den Code zum Aktualisieren der Spalte einfügen?Update-Spalte in Mysql-Datenbank, wenn Benutzer anmeldet

if (isset($_POST['login'])) 
    { 
    $username = trim(mysqli_real_escape_string($con, $_POST['username'])); 
    $password = trim(mysqli_real_escape_string($con, $_POST['password'])); 
    $md5password = md5($password); 

    // check user and password match to the database 

    $query = mysqli_query($con, "SELECT * FROM `user` WHERE username='$username' AND password='$md5password'"); 

    // check how much rows return 

    if (mysqli_num_rows($query) == 1) 
     { 

     // login the user 
     // get the id of the user 

     $fetch = mysqli_fetch_assoc($query); 

     // start the session and store user id in the session 

     session_start(); 
     $_SESSION['id'] = $fetch['id']; 
     $_SESSION['username'] = $fetch['username']; 
     $query = mysqli_query($con,"UPDATE user SET loggedin = 'yes' WHERE userid = 1;"); 
     header("Location: message.php"); 
     } 
     else 
     { 

     // show error message 

     echo "<div class='alert alert-danger'>Invalid username Or password.</div>"; 
     } 
    } 
+0

Es spielt keine Rolle, wo Sie einen solchen Befehl platzieren. Es muss ausgeführt werden, das ist alles. – arkascha

+0

Vielleicht ist das Problem, dass es keine 'UPDATE'-Operation irgendwo in diesem Code gibt ... – David

+0

UPDATE' user' SET 'logged' = 'yes' WHERE' user'.id' = 1; Ich benutze dies, aber es wird nicht aktualisiert –

Antwort

1

Sie die Aktualisierung nicht die Korrekt userid. Sie aktualisieren userid = 1 anstelle der ID zu dem Benutzer gehören, der angemeldet es sein sollte.

$query = mysqli_query($con,"UPDATE user SET loggedin = 'yes' WHERE id = {$_SESSION['id']};"); 
+0

wird nicht aktualisiert .. –

+0

Wird ein Fehler angezeigt? Was zeigt 'echo mysqli_error ($ con);' show? – Barmar

+0

seine Arbeit .. ich nicht geändert BenutzerID ID im Code ... danke .. –

0

Sie müssen dies ändern:

UPDATE user SET loggedin = 'yes' WHERE userid = 1; 

Um dies:

mysqli_query($con, 'UPDATE user SET loggedin = 'yes' WHERE userid = 1'); 

Bitte verwenden Sie nicht die md5() Funktion Hashing Passwörter, ist es nicht sicher ist, verwenden Sie diese Funktionen stattdessen:
http://php.net/manual/en/function.password-hash.php
http://php.net/manual/en/function.password-verify.php

Sie diese auch verwenden:

if (mysqli_num_rows($query) == 1) 

Um zu überprüfen, ob der Benutzername vorhanden ist, schlage ich vor, es zu diesem Wechsel:

if (mysqli_num_rows($query)) 

Es macht das gleiche, aber Sie brauchen weniger Code, es zu tun.

Other than that, bitte auch lernen, wie Sie Ihre Anfragen an prepare vor ihnen, ihren aktuellen Code ist anfällig für SQL-Injection, um mehr über das Einsetzen finden Sie hier:
How can I prevent SQL injection in PHP?

+0

wird immer noch nicht aktualisiert ... –

Verwandte Themen