【发布时间】:2016-11-21 06:01:22
【问题描述】:
我有基本的 PHP/MySQL 经验,上过入门课程。我的知识实际上仅限于以下 PHP 代码:
if(!($stmt = $mysqli->prepare...)
if(!($stmt->bind_param...)
if(!$stmt->execute...)
我目前正在尝试编写一个程序,允许用户输入新密码,并根据数据库中的现有密码检查密码。
这是我所拥有的:
<?php
foreach($Password){
$dupesql = "SELECT PasswordID Passwords WHERE (Password = '$Password')";
$duperaw = mysql_query($dupesql);
if(mysql_num_rows($duperaw){
echo nl2br("$Password has already been used \n");
}
else{
echo "Password added \n";
}
}
?>
我从这篇文章中得到了代码:Check for duplicates before inserting
我不确定代码本身是否有问题,或者我是否需要在我的 PHP 代码中添加任何其他内容才能使其正常工作,因为它目前正在产生“错误 500”。
【问题讨论】:
-
请使用
password_hash()存储密码,从您提供的代码来看,您将密码存储为明文,您永远不应该这样做。 -
你不会把 mysql_ 和 mysqli_ 混在一起吧?您要检查给出的 cmets/答案,还是我们应该站在这里直到您有一些活动? 500错误是服务器错误;检查您的日志。此处不接受发布和离开/离开答案。
-
还有你的
foreach($Password);真的没有多大作用。你有RTM吗? php.net/manual/en/control-structures.foreach.php我不接受。 -
感谢所有 cmets,我没有意识到我必须坐在网上立即回复 cmets。才2个小时,又回到我的帖子回复cmets。首先,这只是一个小原型,它只是一个更大项目的一部分,所以我不存储实际密码,明文应该可以工作。其次,我不确定 RTM 是什么意思,正如我之前解释的那样,我从另一个帖子接受的答案中复制了这段代码。看完下面的答案,我确实把所有的mysql命令都改成了mysqli命令。
-
为什么密码必须是唯一的?