我有一个while循环遍历从SQL查询返回的行。该行中特定列的值存储在一个数组中。然后迭代数组,并将每个元素与来自用户的输入进行比较。如果输入匹配一个数组元素,那么布尔变成true。我正在尝试这样做,以便用户可以输入密码以访问特定页面。但它不起作用。我已经打印了数组中的所有值以及输入,所以我知道那里没有问题。但由于某种原因,if语句并没有对它们进行比较。代码如下:为什么if语句在这个循环中不起作用? PHP
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为$ P){ 如果($ P == $密码){$ 匹配= TRUE;打破; } } –
不要忘记**不要**存储简单的密码,使用**哈希算法**! – HamZa
你有没有想过大小写敏感的问题? –