2017-07-25 38 views
0

我有一个登录脚本,我想将最后一次登录插入到成员表中,并在每次登录成员时更新它,但我遇到了一些问题。该lastlogin未被每次插入用户登录在这里是我的代码更新用户登录时间

if(isset($_POST['submit'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if($user->login($username,$password)){ 
     $_SESSION['username'] = $username; 

     try{ 
      $stmt = $db->prepare("UPDATE admin SET login_date = now() where adminID = $adminID "); 
      $stmt->execute(); 
      $stmt=null; 
      } 
     catch (PDOExeception $e){ 
       $error[] = $e->getMessage(); 
      } 
     header('Location: index.php'); 
     exit; 
    } 
    else {  
      $error[] = '<div class="alert alert-danger fade in text-center"> 
          <a href="#" class="close" data-dismiss="alert">&times;</a> 
          <strong>Error!</strong> 
          Wrong username or password or your account has not been activated. 
         </div>'; 
    } 
} 
+0

你不只是张贴这早些时候? https://stackoverflow.com/q/45305203/1415724并得到它的答案。 –

+0

不是真的,有查询的问题是我得到的答案,但现在我已经解决了问题,但仍记录未更新 –

+0

问题的不清楚,然后丢失代码 –

回答

-1

在您的SQL查询字符串,你不提供adminID变量,而不是你取谁的adminID等于字符串用户值“$ AdminID”,把变量在使用PDO一个SQL查询通过使用令牌参照变量,然后给每个令牌一个PHP变量关联数组,像这样准备的正确方法:

$stmt = $db->prepare("UPDATE admin SET login_date = now() where adminID = :adminID"); 
$stmt ->execute(array(':adminID' => $adminID)); 

用这种方法可以保护您的网站免受SQL注入。

+0

你能解释*答案和*如何解决问题?而不仅仅是丢弃代码。 –

+0

adminID不是占位符 –

+1

您所做的只是添加准备好的语句。我不认为这解决了OP的问题 – Akintunde007

0

检查你的错误阵列的逻辑,试图用(或类似):

if (isset($_POST['submit'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    if ($user->login($username,$password)) { 
     $_SESSION['username'] = $username; 
     try { 
      $stmt = $db->prepare("UPDATE admin SET login_date = now() where adminID = $adminID "); 
      $stmt->execute(); 
      $stmt=null; 
     } catch (PDOExeception $e){ 
      $error[] = $e->getMessage(); 
     } 
    } else { 
     $error[] = 'Wrong username or password ...'; 
    } 
} 
if (empty($error)) { 
    header('Location: index.php'); 
    exit; 
} 
// show errors 
foreach($error => $e) { 
    echo $e; 
}