1

ユーザー名とパスワードを取る Web サイトがあります。正しく入力すると、ユーザー名セッション変数が作成されます。ただし、別のページに移動して、変数が設定されているかどうかを確認すると、false になります。

変数を設定するコードは次のとおりです。

$username = $_POST["ユーザー名"]; $password = $_POST["パスワード"];

if ($username == "right username" || $password == "rigthpassword"){

    session_start();

    $_SESSION["username"] = "aadsj2als378909382lkklja";
    $_SESSION["password"] = "ajklsd89798798jlk09779023";

}

次に、ユーザーがログインしているかどうかを確認するphpスクリプトがあります。ユーザーがログインしている場合は、あるページに移動し、そうでない場合は別のページに移動します。ただし、ユーザーがログインしていなくても、ユーザーがログインしている場合に移動する必要があるページに移動します。

<?php session_start();

    if(!isset($_SESSION["username"])){

        header('Location:http://website.com/page1.php');

    } else {

        header('Location:http://website.com/page2.php');

    }

?>

したがって、ログインした後、このスクリプトを実行するリンクをクリックします。ページ 2 に移動する代わりに、ページ 1 に移動します。これはすべきではありません。

何か案は?

4

2 に答える 2

0

さて、これは少し明白かもしれませんが、これで...

if ($username == "right username" || $password == "rigthpassword"){

    session_start();

    $_SESSION["username"] = "aadsj2als378909382lkklja";
    $_SESSION["password"] = "ajklsd89798798jlk09779023";

}

これらの値をどのように取得していますか? post メソッドを使用していると仮定します。つまり、それはより本質的なものであるべきです...

    if ($_POST['username'] == "right username" || $_POST['password'] == "rigthpassword"){
session_start();

        $_SESSION["username"] = "aadsj2als378909382lkklja";
        $_SESSION["password"] = "ajklsd89798798jlk09779023";
    }

私の推測では、変数を不適切に送信しているに違いありません。ログインフォームのコードを投稿できますか?

login.html

<form method="POST" action="http://mysite.com/login.php">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit">
</form>

login.php

<?php
session_start();
if ($_POST['username'] == "password" && $_POST['password'] == "password") {
$_SESSION['username'] == "aadsj2als378909382lkklja";
$_SESSION['password'] == "ajklsd89798798jlk09779023";
}
?>

otherpage.php

<?php
session_start();
if (!isset($_SESSION['username'])){
header("location: http://website.com/page1.php");
} else {
header("location: http://website.com/page1.php");
}
?>
于 2012-04-18T05:03:03.793 に答える
0
  1. session_start(); 関数はページの先頭を使用します (php one tage の後に改行はありません)

2 if ($username == "rightusername" && $password == "rightpassword"){

$_SESSION["username"] = "aadsj2als378909382lkklja";
$_SESSION["password"] = "ajklsd89798798jlk09779023";

}

このようにコードを変更し、$username,$password の内容をテストします。

于 2012-04-18T04:12:59.277 に答える