2016-04-13 2 views
0

Я использую этот код для входа в систему пользователя, и я хочу обновить значение в столбце loggedin до да в базе данных mysql. Я попытался обновить его перед отправкой заголовка, но он не обновляется. Где я должен поместить код для обновления столбца?столбец обновления в базе данных mysql, когда пользователь регистрируется в

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; im, используя это, но он не будет обновлять –

ответ

1

Вы не обновляя правильный userid. Вы обновляя userid = 1 вместо идентификатора, принадлежащего пользователя, вошедшего в ней должно быть:.

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

это не будет обновлено .. –

+0

У вас есть ошибка? Что означает 'echo mysqli_error ($ con);' show? – Barmar

+0

его работа..i не изменила идентификатор пользователя id в коде ... спасибо .. –

0

Вы должны изменить это:

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

Для этого:

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

Пожалуйста, не используйте функцию md5() хэширования паролей, это не безопасно использовать эти функции вместо этого:
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

все еще не обновляется ... –

Смежные вопросы