Php 如何完成此登录脚本?
我几乎完成了我的登录脚本,但我不知道如何检查用户名和密码是否正确。 这是我的脚本文件Php 如何完成此登录脚本?,php,mysql,login,registration,Php,Mysql,Login,Registration,我几乎完成了我的登录脚本,但我不知道如何检查用户名和密码是否正确。 这是我的脚本文件 index.php: <html> <body> <form action="action1.php" method="post"> Username: <input type="text" name="uname"> Password: <input type="password" name="pword"> <input type="sub
<html>
<body>
<form action="action1.php" method="post">
Username: <input type="text" name="uname">
Password: <input type="password" name="pword">
<input type="submit">
</form>
</body>
</html>
用户名:
密码:
<?php
$con = mysql_connect("localhost", "root", "");
if (!$con)
{
die ('Could not connect: ' . mysql_error());
}
mysql_select_db("user1", $con);
$sql="INSERT INTO useri1 (uname, pword)
VALUES
('$_POST[uname]','$_POST[pword]')";
if (!mysql_query($sql, $con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
您可以按照以下方式运行查询:
$user_check_query = "SELECT * FROM useri1 WHERE uname=" . $_POST['uname'] . " AND pword=" . $_POST['pword'] .";";
如果查询返回一个值,则可以继续。如果查询未返回任何内容,则无法通过。至于逻辑,请查看您所创建的代码,并了解如何创建if
和else
语句来处理逻辑。您需要执行一个SELECT查询,这与
从useri1中选择STRCMP('{$\u POST['pword']}',pword),其中uname='{$\u POST['uname']}'
这将返回范围[-1,1]内的值-如果不是0,则密码错误。如果没有行,则用户不存在
您还需要考虑SQL注入,但这很可能是另一天的练习。首先,您希望使用mysql,而不是mysql,因为mysql已经过时,不再积极开发。其次,您希望开始转义数据库查询以停止sql注入。在下面的代码中,我使用了一个会话来跟踪用户。您可以了解有关会话的更多信息
好吧,至少有人能告诉我如何更正这个脚本&让它正常工作,而不是给我留下关于我还不懂的东西的评论。通过看到自己的错误得到纠正,我学得更好!如果可以使用准备好的语句,那么使用real\u escape\u string
有什么意义@PeterSzymkowski老实说,我只是一直使用real\u escape\u string
,我不确定性能或使用差异。@Graham:小心,这里那些对“正确的”MySQL连接实践有强迫症的人难以置信。基本上,他们只是巨魔。我认为你的例子展示了一种处理原始海报问题的好方法&展示了一种处理MySQL连接的新方法,他们可以从中学习。所以请投我一票@JakeGould他的例子很好,这就是为什么我对他的答案投了更高的票并删除了我的答案,但在我看来,使用预先准备好的语句比使用real\u escape\u stringWhoops更容易——现在已经修复了:)谢谢——我的PHP似乎有点生锈了。
$user_check_query = "SELECT * FROM useri1 WHERE uname=" . $_POST['uname'] . " AND pword=" . $_POST['pword'] .";";
<?php
session_start();
$mysqli = new mysqli('localhost', 'root', DB_PASSWORD, 'user1');
/* check connection */
if ($mysqli->connect_error)
die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
/* escape string from sql injection */
$userName = $mysqli->real_escape_string($_POST['uname1']);
/* query database */
$result = $mysqli->query("SELECT `pword` FROM `user1` WHERE `uname` = '".$userName."'");
if ($result->num_rows == 1) {
while ($col = $result->fetch_array(MYSQLI_ASSOC)) {
// This presumes you're storing your passwords in plain text.
// If you hashed your passwords or anything, you would have to do the same to $_POST['pword']
if ($_POST['pword'] == $col['pword']) {
// You could do anything here, but sessions are a way of keeping track of a user.
$_SESSION['userName'] = $_POST['uname1'];
$_SESSION['loggedIn'] = true;
}
}
}
$result->close();
/* don't forget to close the connection */
$mysqli->close();
?>