0

member.phpページのセッション出力に関するphpの問題「暗黙のユーザー名」はlogin.phpで機能しましたが、member.phpには表示されません

<html>

<form action="login.php" method="POST">
    Username: <input type="text" name="username"><p>
    Password: <input type="password" name="password">
              <input type="submit" name="submit" value="Login">
</form>

<a href='register'.php>Register Now</a>

</html

上記のコードは index.html ファイルでした

<?php

session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if ($username&&$password)
    {

        $connect = mysql_connect("127.0.0.1","root","") or die ("Could not connect `to     database");
        mysql_selectdb("login") or die ("could not find database");
        $query = mysql_query("select * FROM users WHERE username='$username'");
        $numrows = mysql_num_rows($query);
        if($numrows !=0)
    {
    while ($row = mysql_fetch_assoc($query))
    {
        $dbusername = $row['username'];
        $dbpassword = $row['password'];

    }
    if ($username==$dbusername&&$password==$dbpassword)
    {
    echo $_Session['username']="$dbusername  ";
    echo ",  Login successful. <a href='member.php'>Click here to enter the Members area  

</a>";




    }
    else
        echo "Incorrect password";
    }
    else
        die ("That username does not exists");
    }
    else
        die ("Please enter a username and password");

?>  

上記のコードは login.php で、ログイン ページに「ユーザー名」のログイン成功が表示され、ここをクリックしてメンバー エリアに移動するためのリンクが表示されます。

<?php

session_start();

if ($_SESSION['username'] = '$dbusername')
    {
  echo "Welcome, ".$_SESSION['username']."<br><<a href='logout.php'>Click here</a> to logout!<br>Click<a href='changepassword.php'> here</a> to change your password!";
    }
else
     die("You must be logged in to see this page");

上記はmember.phpページのコードです

表示出力は次のとおりです。

ようこそ、$dusername

ここをクリックしてログアウトしてください。ここをクリックしてパスワードを変更してください!

私の問題は、次のように読む必要があることです。

ようこそ、ジョニー ここをクリックしてログアウトしてください! ここをクリックしてパスワードを変更してください!

解決策は素晴らしいでしょう!

4

1 に答える 1

0

どこから始めれば?さて、これは安全なログインスクリプトとしては機能しません。まず、暗号化せずに、パスワードを生の形式でデータベースに保存します。次に、セッション変数が存在するかどうかを確認することは、ユーザーがログインしているかどうかを確認する正しい方法ではありません。ページを変更するたびにユーザーの資格情報を確認する必要があり、できればセッションIDを再生成する必要があります。

$dbusername2ページ目には値がありません。=記号を使用すると、にリセット$_SESSION['username']されます。$dbusername

すべき:

if ($_SESSION['username']) 

また

if (isset($_SESSION['username']))

ここから、パスワードのハッシュを開始するのに適した場所です。

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、公式に非推奨になっています。赤いボックスがか?代わりにプリペアドステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事はどちらを決定するのに役立ちます。PDOを選択した場合は、ここに優れたチュートリアルがあります。

于 2013-01-14T22:29:43.753 に答える