我差不多完成了我的登录脚本,但我不知道如何检查用户名和&密码是正确的。 这是我的脚本文件。
的index.php:
<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>
index.php文件只是我用来收集用户注册信息的页面。
action1.php:
<?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);
?>
action1.php文件只是将用户注册到数据库的页面。
的login.php:
<html>
<body>
<form action="checklogin.php" method="post">
Username: <input type="text" name="uname1">
Password: <input type="password" name="pword1">
<input type="submit">
</form>
</body>
</html>
login.php文件就是我用来让用户输入登录信息的页面。
现在这是我的问题,我不知道如何检查用户登录信息,以便他们可以进入仅限会员区域。我是新手&amp;任何帮助是极大的赞赏。
谢谢,
- 德文
答案 0 :(得分:3)
首先,您希望使用mysqli而不是mysql,因为mysql已过时且不再积极开发。其次,您希望开始转义数据库查询以停止sql注入。在下面的代码中,我使用会话来跟踪用户。您可以详细了解会话here。
<?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();
?>
答案 1 :(得分:1)
您将按照以下方式运行查询:
$user_check_query = "SELECT * FROM useri1 WHERE uname=" . $_POST['uname'] . " AND pword=" . $_POST['pword'] .";";
如果查询返回值,则可以继续。如果查询什么都不返回,则无法通过。至于逻辑,请查看您创建的代码,并了解如何创建if
和else
语句来处理逻辑。
答案 2 :(得分:1)
你需要做一个SELECT查询 - 就像
那样 SELECT STRCMP('{$_POST['pword']}', pword) FROM useri1 WHERE uname = '{$_POST['uname']}'
这应该返回[-1,1]范围内的值 - 如果它不是0,则密码错误。如果没有行,则该用户不存在。
你也需要考虑SQL注入 - 但这很可能是另一天的练习。