0

なんらかの理由でログインできません。テストファイルのパスワードが存在する状態で開くたびに、echo-test を入れてマークしますが、コードは常にifではなく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); ?>

URL:

kernel-login-logout.php?username=userdokimi&passwd= testpasswd &login=ログイン

出力:

Password not found
testpasswd
testpasswd
4

3 に答える 3

2

次のようなコードがあります。

if A
if B
else C

それはではelseなく に適用されます。if Bif 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 に答える