Php 登录数据库失败
我遇到了一个问题,所以当用户尝试登录失败时,输入了错误的用户名和密码,数据需要保存在数据库中,但它就是不起作用。 若我将INSERT放入If$pw==$row['passwd'],它将工作,但我想在其他地方写它,如示例中所示Php 登录数据库失败,php,mysql,logging,Php,Mysql,Logging,我遇到了一个问题,所以当用户尝试登录失败时,输入了错误的用户名和密码,数据需要保存在数据库中,但它就是不起作用。 若我将INSERT放入If$pw==$row['passwd'],它将工作,但我想在其他地方写它,如示例中所示 <?php session_start(); require('connect.php'); $mail = $_POST['mail']; $pw = $_POST['password']; if (!empty($_SERVER['HTTP_CLIEN
<?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");
}
}
?>
@是的,这是错误的。一定是
if(!$result){some code}
但我们希望:
如果mysql\u query INSERT-INTO处于启用状态,则它将不起作用
if ($pw == $row['passwd']){ some code }
else { here }
,但mysql_查询插入处于启用状态
如果$pw==$row['passwd']{here},那么它就工作了
if(!$result){$_SESSION['error'] = 1;Header("Location: login.php");}
如果输入错误的用户名或密码,请删除此行,然后将其保存在数据库中。如果$result{$\u SESSION['error']=1;HeaderLocation:login.php;}我认为这没有任何意义请不要建议编辑原始问题,将已解决的单词添加到标题中。尤其是当这不是你的问题时,不要这样做。假设你的答案解决了其他人的问题是非常冒昧的。如果发布问题的用户认为答案可以解决问题,他们会接受答案,答案旁边会显示一个绿色的勾号。这是我的问题,我的同伴发布了它,我们解决了它。如果用户名不同,没有人可能知道这一点。无论如何,如果你的配偶同意你的答案解决了问题,那么他们可以在以金枪鱼身份登录时单击答案左侧的勾号来接受这个答案。这是如何在堆栈溢出时将问题标记为已解决,而不是通过编辑问题标题。