2015-06-15 29 views
0

我嘗試將登錄嘗試存儲在數據庫中,但它不起作用。 loginAttempt列未更新。另外,我想計算登錄嘗試次數並在3次嘗試後阻止用戶。更新:使用PHP將登錄嘗試存儲在數據庫中

如何解決這個問題?

這裏的腳本:

session_start(); 
$loginDate = date("Y-m-d H:i:s"); 
$Error =""; 
$successMessage =""; 
if (isset($_POST['submit'])){ 
if (!($_POST['cnumber'] == "" && $_POST['password'] == "")){ 
    $cnumber=$_POST['cnumber']; 
    $password= sha1($_POST['password']); 
    $cnumber = filter_var($cnumber, FILTER_SANITIZE_NUMBER_INT); 

if (filter_var($cnumber, FILTER_VALIDATE_INT)){ 
$con=mysqli_connect("localhost","test","password","login"); 

$result = mysqli_query($con, "SELECT * FROM Users WHERE contractNumber='$cnumber' AND password='$password'"); 
$data = mysqli_num_rows($result); 

if($data==1){ 
    $_SESSION['login_user']=$cnumber; 
    mysqli_query($con, "INSERT INTO `homecre1_testemailCheck`.`Logs`(`contractNumber`, `lastLogin`) VALUES ('$cnumber', '$loginDate')"); 
    header('Location: profile.php'); 
} else { 
    mysqli_query($con, "UPDATE Logs SET loginAttempt = loginAttempt+1 WHERE contractNumber = '$cnumber'"); 
} 
    mysqli_close($con); 
} else { 
    $Error ="Invalid Contract Number."; 
} 
} else { 
    $Error ="Contract Number or Password is Empty."; 
} 

這裏是我的數據庫結構:

Users - table 
id -PK 
contractNumber 
email 
password 

Logs - table 
userId 
contractNumber 
lastLogin 
loginAttempt 
+0

這是因爲你沒有插入'contarct_number'連同'login'.'Users' – Noman

+0

即使我插入合同編號仍然沒有保存 – User014019

+1

我注意到你有兩個contARct_number和contractNumber。實際的字段拼寫和大小寫是什麼? – kojow7

回答

2

您更新查詢缺少SET和列contarct_number可能是錯的:您的查詢應該是這樣的:

mysqli_query($con, "UPDATE Logs SET loginAttempt = loginAttempt+1 
WHERE contractNumber = '$cnumber'"); 
+0

如果多個用戶可以登錄,會發生什麼情況?如果他沒有保存最後登錄的用戶。 ? – Noman

+0

@Noman你在說什麼?我只是修復不正確的查詢語法 –

+0

仍然登錄嘗試不保存 – User014019

相關問題