【发布时间】:2017-01-14 08:06:41
【问题描述】:
我在 PHP 中创建了一个登录页面,用户在其中输入他们的详细信息,然后将它们发布到另一个 PHP 文件,然后检查用户输入的用户名并查看它是否在 MySQL 帐户表中注册,如果是,则检查密码,如果匹配,我希望它打开个人资料页面,如果不是,我希望它返回登录页面。如何让 PHP 代码加载到要在屏幕上显示的新 html/php 文件中。到目前为止,这是我的 PHP 代码:
<html>
<?php
include_once "mysql_connect.php";
$usersName = $_POST['usersname'];
$passWord = $_POST['passsword'];
$result = mysql_query("SELECT * FROM allaccounts");
$num_rows = mysql_num_rows($result);
$username = "";
$password = "";
for ($i = 1; $i <= $num_rows; $i++) {
$currentname = mysql_query("SELECT * FROM allaccounts WHERE id=$i");
while ($row = mysql_fetch_array($currentname)) {
$username = $row[0];
$password = $row[1];
}
if (($username === $usersName) && ($password === $passWord)) {
echo "We got you";
break;
} else {
echo "nothing";
}
}
?>
</html>
【问题讨论】:
-
重定向到登录页面或个人资料页面:stackoverflow.com/questions/7467330/…
-
为什么要在每个 DB 行上运行查询,然后在 PHP 中比较匹配?
$result = mysql_query("SELECT password FROM allaccounts where username = ?");你应该更新你的驱动程序,这样你也可以使用参数化查询;并且密码应该是散列的。 -
顺便说一句,编写的代码存在两个严重问题。首先是 mysql_* 函数在 PHP 5 中被弃用并在 PHP 7 中被删除;强烈建议您使用 PDO (quick tutorial)。其次,您似乎正在将数据库中的密码与输入密码进行比较。看起来您将密码以明文形式存储在密码中,这绝对是一种糟糕的安全做法。而是使用password_hash 函数及其相关方法。