使用PHP检查用户登录表单
我对这种php语言有点陌生。我似乎在为用户检查数据库中的表时遇到问题。它总是成功的,即使它不是正确的密码。它只是转到“admin/index admin.php”。请帮帮我 我的代码:使用PHP检查用户登录表单,php,jquery,html,Php,Jquery,Html,我对这种php语言有点陌生。我似乎在为用户检查数据库中的表时遇到问题。它总是成功的,即使它不是正确的密码。它只是转到“admin/index admin.php”。请帮帮我 我的代码: <form action="" method="POST"> <table align="center"> <tr> <td align="center"><h2>Adm
<form action="" method="POST">
<table align="center">
<tr>
<td align="center"><h2>Administrator Login</h2></td>
</tr>
<tr>
<td align="left">Username : </td>
</tr>
<tr>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td align="left">Password : </td>
</tr>
<tr>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td align="center"><input type="submit" name="submit" value="Login" /></td>
</tr>
</table>
</form>
<?php
$user = $_REQUEST['username'];
$pass = $_REQUEST['password'];
$query = "SELECT * FROM users WHERE username=".$user." AND password=".$pass."";
$result = mysql_query($query);
if(count($result)>0)
{
header('Location: admin/index-admin.php');
echo "<script type='text/javascript'>";
echo "alert('You are logged In Successfully.')";
echo "</script>";
}
else
{
echo "Invalid Username or Password.";
}
?>
管理员登录
用户名:
密码:
在查询中,您需要将变量放在单引号内:(还需要使用mysqli\u real\u escape\u字符串来防止sql注入)
您需要从resultset获取行:
$result = mysqli_query($query);
$row = mysqli_fetch_array($result);
if (!empty($row)) {
..
}
首先,我建议您使用不同的密码存储方法。有些是在我的脚注中公布的
试试这个对我有用的mysqli.*
方法
<form action="" method="POST">
<table align="center">
<tr>
<td align="center"><h2>Login</h2></td>
</tr>
<tr>
<td align="left">Username: </td>
</tr>
<tr>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td align="left">Password: </td>
</tr>
<tr>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td align="center"><input type="submit" name="submit" value="Login" /></td>
</tr>
</table>
</form>
<?php
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_NAME', 'xxx');
$mysqli = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die("could not connect");
if(isset($_POST['submit'])){
$user = mysqli_real_escape_string($mysqli,$_REQUEST['username']);
$pass = mysqli_real_escape_string($mysqli,$_REQUEST['password']);
$query = "SELECT * FROM users WHERE username='$user' AND password='$pass'";
$result = mysqli_query($mysqli,$query);
$row = mysqli_fetch_array($result);
if($row["username"]==$user && $row["password"]==$pass){
echo "You are a validated user.";
// header('Location: admin/index-admin.php');
}
else{
die("Sorry Jack");
}
} // brace for if(isset($_POST['submit']))
?>
脚注:
密码
我注意到您正在以纯文本形式存储密码。不建议这样做
使用以下选项之一:
- PHP5.5的函数
其他链接:
mysql.*
函数弃用注意事项:
从PHP5.5.0开始,此扩展就不推荐使用,不建议用于编写新代码,因为它将在将来被删除。相反,应该使用或扩展名。在选择MySQL API时,请参阅以获取更多帮助
这些函数允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»
MySQL的文档可以在»上找到。您不应该使用MySQL函数,因为它们已被弃用,但请尝试一下,看看它是否有效:$result=MySQL\u query($query);如果($result){。即使查询失败,$result也会返回某些内容(可能是布尔值FALSE),因此计数将始终大于0“从username='''.$user.'和password='.$pass.'的用户中选择*。”;
缺少单引号;请立即尝试使用单引号。您的代码易受SQL注入攻击。请阅读有关PDO和web应用程序安全性的内容。注意:不建议以纯文本形式存储密码。此外,您可能希望使用if($\u POST['submit']){在您的php之前,它只检查您是否提交了表单。我尝试了正确的信息,结果是相同的页面,而不是在admin/index admin.php中。我尝试了错误的信息,结果是空白页面。您复制了我的确切代码吗?另外,请确保您有正确的列名称。我在提交之前测试了它。@LyndonBrozCañetonelete我使用的是mysqli\u*
而不是mysql\u*
,因此,如果您仍然使用旧的DB登录,请不要使用。只需使用您自己的凭据替换xxx
。这很有效。我倾向于认为问题出在您的admin/index admin.php
文件中,而不是我的代码中。我不知道您在那里有什么,因此您必须做出选择确保内容匹配。@LyndonBrozCañetetonelete我应该在approved中使用什么数据类型?我只使用了一个VARCHAR,不必太长;它将是文本类型(是或否),所以VARCHAR(5)< /代码>应该是好的。如果你也觉得我的答案已经解决了这个问题,考虑接受它,这样它就不会停留在未被回答的类别中。
$result = mysqli_query($query);
$row = mysqli_fetch_array($result);
if (!empty($row)) {
..
}
<form action="" method="POST">
<table align="center">
<tr>
<td align="center"><h2>Login</h2></td>
</tr>
<tr>
<td align="left">Username: </td>
</tr>
<tr>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td align="left">Password: </td>
</tr>
<tr>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td align="center"><input type="submit" name="submit" value="Login" /></td>
</tr>
</table>
</form>
<?php
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_NAME', 'xxx');
$mysqli = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die("could not connect");
if(isset($_POST['submit'])){
$user = mysqli_real_escape_string($mysqli,$_REQUEST['username']);
$pass = mysqli_real_escape_string($mysqli,$_REQUEST['password']);
$query = "SELECT * FROM users WHERE username='$user' AND password='$pass'";
$result = mysqli_query($mysqli,$query);
$row = mysqli_fetch_array($result);
if($row["username"]==$user && $row["password"]==$pass){
echo "You are a validated user.";
// header('Location: admin/index-admin.php');
}
else{
die("Sorry Jack");
}
} // brace for if(isset($_POST['submit']))
?>
$query = "SELECT * FROM users WHERE username='$user' AND password='$pass' AND approved='YES'";