【发布时间】:2015-04-21 12:22:28
【问题描述】:
我正在尝试使用 php 来验证我的 html 表单中的 file.txt 女巫我有一个登录名和密码。 我的 php 代码中的问题是,即使变量相等,当我比较它们时,我也会得到假。唯一的例外是当我比较第一次登录和密码时,两者都为真。
这是我的代码来澄清我的问题。 所以我的 html 表单调用了这个 php 页面代码。
<?php
echo " begin <br/>";
$name=$_GET['username'];
$password=$_GET['password'];
echo "$name <br/>";
echo "$password <br/>";
$f = fopen("file.txt", "r");
$res="0";
while(!feof($f))
{ echo "begin while <br/> ";
$p3=fgetc($f );
while($p3!="|" && !feof($f) )
{
$user1=$user1.$p3;
$p3=fgetc($f);
}
$p1=fgetc($f);
while($p1!="|" && !feof($f))
{ $pass=$pass.$p1;
$p1=fgetc($f);
}
$p2=fgetc($f);
while($p2!="|" && !feof($f))
{
$q=$q.$p2;
$p2=fgetc($f);
}
var_dump($user1 == $name);
var_dump($password == $pass);
echo "<br/> $user1 <br/>";
echo "$pass <br/>";
echo "compare <br/>";
echo "$name <br/>";
echo "$password <br/>";
if( $name == $user1 && $password == $pass )
{ echo "succeeded <br/>";
echo "droit: $q <br/>";
echo "$res <br/>";
$res="1";
echo "$res <br/>";
break 2;
}
unset($p3);
unset($p1);
unset($p2);
unset($user1);
unset($pass);
unset($q);
}
fclose($f);
if($res == "1")
{ echo "ok <br/>";}
else
{ echo " error <br/>";}
echo " fin <br/>"
?>
我的文件.txt
abc|abc|87|
aaa|ccc|45|
ghi|ghi|67
现在如果我输入登录 abc 密码 abc ,我会在我的页面中得到这个结果
begin
abc
abc
begin while
bool(true) bool(true)
abc
abc
compare
abc
abc
succeeded
droit: 87
0
1
现在如果我输入登录 aaa 和密码 ccc ,我会得到
begin
aaa
ccc
begin while
bool(false) bool(false)
abc
abc
compare
aaa
ccc
begin while
bool(false) bool(true)
aaa
ccc
compare
aaa
ccc
begin while
bool(false) bool(false)
ghi
ghi
compare
aaa
ccc
error
fin
即使对于第三个用户行,即使变量相等,我也会收到错误。
如果有人可以帮助我,我将不胜感激。并提前感谢
【问题讨论】:
-
说实话 - 你的代码很乱,很难理解发生了什么。如果您希望有人帮助您,至少要确保您的代码井井有条。