【发布时间】:2014-08-22 00:03:36
【问题描述】:
这是一个源代码的sn-p代码,我用来练习我的PHP技能。提交登录表单后,我尝试查看用户使用登录表单提交的用户名和密码是否与存储在数据库中的用户名和密码匹配。如果是,则“您的用户名和密码与我的匹配!” (显然这不会是最终的回声,只是看看它会带来两者的回声)。如果我提供正确的凭据(用户/通行证)或不正确的凭据,它会回显“您的用户名和密码与我所拥有的不匹配!”堵塞。我没有看到代码有任何问题,我的想法已经用完了。
config.php 中的部分代码(我已经包含在内)是数据库的设置,带有一个注册表和几个字段,其中用户名和密码字段确实存在因此名称。
user 是用户名的登录表单上的名称标签的值,pass 是密码的登录表单上的名称标签的值。
<?php
include("config.php");
if(isset($_POST['submit'])) {
$stmt = $db->prepare("SELECT * FROM registration WHERE username = :username AND password = :password");
$stmt->execute(array("username" => $_POST['user'], "password" => $_POST['pass']));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if(($_POST['user'] == $result['username']) && $_POST['pass'] == hash("sha256",$result['password'])) {
echo "Your username and password matches what I have! <html><br /></html>";
} else {
echo "Your username and password DOES NOT matches what I have! <html><br /> </html>";
}
}
?>
【问题讨论】:
-
您正在使用 POST 中的密码进行查询,然后根据结果中的密码哈希检查 POST 中的密码。不能两者兼有。
-
谢谢不要惊慌。我现在看到了。这只是在结果之前而不是之后做的问题。