2015-04-02 113 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");} 

删除此行比当错误的用户名和密码进入然后将其保存在数据库中。

相关问题