2016-04-13 11 views
0

私はこのコードを使用してログインしていますが、mysqlデータベースのカラムloggedinの値をyesに更新したいとします。ヘッダーを送信する前に更新しようとしましたが、更新されません。列を更新するコードはどこに置くべきですか?ユーザがログインするとmysqlデータベースの更新カラム

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

は、これらの機能を使用し、それは安全ではない、パスワードをハッシュmd5()機能を使用しないでください。これに

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

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

。それはすべて実行されなければならない。 – arkascha

+0

おそらく問題は、このコードのどこにでもUPDATE操作がないことです。 – David

+0

UPDATE 'user' SET' loggedin' = 'yes' WHERE 'user'.'id' = 1;これを使用していますが、更新はありません –

答えて

1

正しいuserid。あなたはログインしているユーザーに属するIDの代わりにuserid = 1を更新していることは次のようになります。あなたは、このようなコマンドを置く場所それは問題ではありません

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

更新されません.. –

+0

エラーが発生しますか? 'echo mysqli_error($ con);'は何を表示しますか? – Barmar

+0

その作業.. iはコード内のidにidを変更していません...ありがとうございました.. –

0

あなたはこれを変更する必要があります代わりに:
http://php.net/manual/en/function.password-hash.php
http://php.net/manual/en/function.password-verify.php

また、この使用:ユーザ名が存在するかどうかを確認するに

if (mysqli_num_rows($query) == 1) 

を、私はこれまで、それを変更するお勧め:

if (mysqli_num_rows($query)) 

それは同じことを行いますが、あなたがそれを行うには以下のコードを必要としています。それ以外

、また、それらを挿入する前に、あなたのクエリをprepareする方法を学習してください、あなたの現在のコードは、SQLインジェクションの脆弱性で、その詳細はここで見つけることができます:あなたが更新していない
How can I prevent SQL injection in PHP?

+0

まだ更新されていません... –

関連する問題