php代码总是运行其他而不是如果

时间:2013-09-04 16:14:56

标签: php login

每次打开时,我都无法登录某些reazon 测试文件密码存在,我已经进行了回音测试并对其进行了标记,但代码总是运行 else 而不是如果

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); ?>

网址:

  

内核与登录用户名logout.php = userdokimi&安培; passwd的= testpasswd &安培;登录名=登录

输出:

Password not found
testpasswd
testpasswd

3 个答案:

答案 0 :(得分:2)

你有这样的代码:

if A
if B
else C

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

我认为你的意思是:

if A
elseif B
else C

答案 1 :(得分:1)

不要假设密钥“logout”,“passwd”和“username”将始终设置。 您还缺少其他

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");
 }

答案 2 :(得分:1)

试试这个:

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

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

您有一个以纯文本格式存储的密码(在查询字符串中可见) - 这是非常不安全的,但我们暂时会让它通过。