【发布时间】:2012-11-06 01:11:28
【问题描述】:
我有一个遍历从 SQL 查询返回的行的 while 循环。该行中特定列的值存储在数组中。然后遍历数组,并将每个元素与用户的输入进行比较。如果输入与数组元素匹配,则布尔值变为真。我正在尝试这样做,以便用户可以输入密码来访问特定页面。然而它只是行不通。我已经打印了数组中的所有值以及输入,所以我知道那里没有问题。但由于某种原因,if 语句不会比较它们。代码如下:
if (isset( $_POST['ok'])) {
$password = $_POST['pass'];
$matched = false;
$pw = array();
mysql_connect("localhost", "xxx", "xxx")or die("Error");
mysql_select_db("details")or die("Error");
$query="SELECT * FROM members";
$result=mysql_query($query);
while ($row = mysql_fetch_assoc($result) ){
$pw[] = $row["pass"];
}
foreach($pw as $p){
if(strcmp($p, $password) == 0){
$matched = true;
}
}
if ($matched==true) {
//Membership page
} else {
//Error message
}
} else {
....
【问题讨论】:
-
尝试将循环更改为 foreach($pw as $p){ if($p == $password){ $matched = true;break; } }
-
别忘了从不存储纯密码,对它们使用散列算法!
-
你有想过区分大小写的问题吗?
-
@ItayMoav 休息;没有区别
-
@HamZaDzCyberDeV - 这只是一个用于测试的基本版本,真正的会有一个哈希算法