2015-04-02 170 views
0

我遇到了一個問題,所以當用戶嘗試登錄並失敗(輸入錯誤的用戶名&密碼)數據需要保存在數據庫中,但它不會工作。 如果我把INSERT INTO插入if ($pw == $row['passwd']它會工作,但我想寫在其他例如像。失敗的登錄嘗試登錄到數據庫

<?php 
session_start(); 
require('connect.php'); 

$mail = $_POST['mail']; 
$pw = $_POST['password']; 

if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
    $lastip = $_SERVER['HTTP_CLIENT_IP']; 
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
    $lastip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} else { 
    $lastip = $_SERVER['REMOTE_ADDR']; 
} 

$time = date('Y-m-d H:i:s'); 

$query = "SELECT * FROM `users` WHERE `login_email`='$mail' AND `passwd`='$pw'"; 
$result = mysql_query($query); 
if(!$result){$_SESSION['error'] = 1;Header("Location: login.php");} 
while ($row = mysql_fetch_assoc($result)) { 
    if ($pw == $row['passwd']) 
    { 
    $_SESSION['logiran'] = 1; 
    $_SESSION['mail'] = $mail; 
    $_SESSION['error'] = 0; 
    $_SESSION['sucess'] = 1; 
    $_SESSION['msg'] = 0; 
    $_SESSION['subuser'] = 0; 
    $_SESSION['subcid'] = $row['id']; 
    $query = "UPDATE `users` SET `login` = '$time' WHERE `login_email`='$mail' AND `passwd`='$pw'"; 
    mysql_query($query); 
    $query = "UPDATE `users` SET `last_ip` = '$lastip' WHERE `login_email`='$mail' AND `passwd`='$pw'"; 
    mysql_query($query); 
    Header("Location: index.php"); 
    } 
    else 
    { 
    $query = "INSERT INTO `alerts`(`ipaddress`, `user`, `added`) VALUES ('$lastip', '$mail', '$time')"; 
    mysql_query($query); 
    $_SESSION['error'] = 1; 
    $_SESSION['logiran'] = 0; 
    $_SESSION['subcid'] = 0; 
    $_SESSION['subuser'] = 0; 
    Header("Location: login.php"); 
    } 
} 

?> 
+0

'if($ result){$ _ SESSION ['error'] = 1; Header(「Location:login.php」);}'我不認爲這有什麼意義 – 2015-04-02 09:24:02

回答

0

@sense是的,它錯了。它必須是

if(!$result){some code} 

但是,我們希望這樣的:

如果請求mysql_query INSERT INTO是否則它不工作

if ($pw == $row['passwd']){ some code } 
else { here } 

,但請求mysql_query INSERT INTO是 if ($pw == $row['passwd']){ here }那麼它的作品。

+0

請不要建議修改原來的問題,添加單詞「解決」的標題。尤其不要這樣做,當它不是你的問題。假設你的答案解決別人的問題是非常冒失的。如果發佈問題的用戶認爲解決問題的答案,他們將「接受」答案,並在該答案旁邊顯示一個綠色標記。 – 2015-04-02 10:17:08

+0

其我的問題,我的伴侶發佈了它,並且我們解決了它。 – Gogo 2015-04-02 10:26:09

+1

鑑於不同的用戶名,沒有人可能知道。無論如何,如果你的隊友同意你的答案可以解決問題,那麼他們可以通過點擊答案左側的勾號(當以「金槍魚」登錄時)來接受答案。這就是Stack Overflow標記問題的方式,而不是編輯問題標題。 – 2015-04-02 10:28:43

0
if(!$result){$_SESSION['error'] = 1;Header("Location: login.php");} 

刪除此行比當錯誤的用戶名和密碼進入然後將其保存在數據庫中。

相關問題