0

由于某些原因我无法登录,每次我打开测试文件密码存在时,我都会放置一个 echo-test 并标记它,但代码总是运行else而不是if

kernel-login-logout.php 是这样的:

<?php
$formusername = $_GET["username"];
$formpasswd = $_GET["passwd"];
$passwdget  = file_get_contents( "users/$formusername/passwd/thepasswd.txt" );
if ($formpasswd == $passwdget)
 {
  setcookie("libusername", $formusername,time() + (86400 * 7));
  setcookie("libpasswd", $formpasswd,time() + (86400 * 7));
 }
else
 {
  echo ("Password not found<br>");
 }
?>

<?php echo ($passwdget); ?><br>
<?php echo ($formpasswd); ?>

网址:

kernel-login-logout.php?username=userdokimi&passwd=testpasswd & login=Login

输出:

Password not found
testpasswd
testpasswd
4

3 回答 3

2

你有这样的代码:

if A
if B
else C

else适用于if B,而不是if A

我想你的意思是:

if A
elseif B
else C
于 2013-09-04T16:18:47.913 回答
1

尝试这个:

<?php echo "'$passwdget'",strlen($passwdget); ?><br>
<?php echo "'$formpasswd'",strlen($formpasswd); ?>

确认这些变量中的一个或两个没有粘贴一些不可见的字符,使它们相等。

你有一个以纯文本形式存储的密码(并且在查询字符串中可见)——这是非常不安全的,但我们暂时让它过去。

于 2013-09-04T17:20:34.377 回答
1

不要假设“logout”、“passwd”和“username”键总是被设置。你也错过了一个else那里。

if (isset($_GET['passwd']) && $_GET["passwd"] == $passwdget)
 {
  setcookie("libusername", $username,time() + (86400 * 7));
  setcookie("libpasswd", $passwd,time() + (86400 * 7));
 }
else if (isset($_GET['logout']) && $_GET["logout"] == "Logout")
 {
  setcookie("libusername", null,time() + (86400 * 7));
  setcookie("libpasswd", null,time() + (86400 * 7));
 }
else
 {
  echo ("<br>Password not found");
 }
于 2013-09-04T16:25:26.327 回答