2

コードのこの部分を含むこのloginform.phpがあります(これは、ログインフォームを使用してindex.phpから呼び出されました):

include("config.php");
if(isset($_POST['submit']))
{
    $username = $_POST['username'];
    $password = $_POST['password'];

    if($username == "" || $password == "")
    {
        echo "Either username or password field is empty.";
        echo "<br/>";
        echo "<a href='index.php'>Go back</a>";
    }
    else
    {
        $result = mysql_query("select * from users where user_username='$username' and user_password='$password'",$conn)
        or die("Could not execute the select query.");

        $row = mysql_fetch_assoc($result);

        if(is_array($row) && !empty($row))
        {
            $validuser = $row['username'];
            $_SESSION['valid'] = $validuser;
        }
        else
        {
            echo "Username and password do not match.";
            echo "<br/>";
            echo "<a href='index.php'>Go back</a>";
        }

        if(isset($_SESSION['valid']))
        {
            header("Location:index.php?");
        }
    }
}

しかし、その後、ログインフォームなしでindex.phpを再度表示する必要がありました

index.php には、ログイン成功後にユーザーを表示するための次のコードがありました。

    <?php
if(isset($_SESSION['valid']))
{   
    include("config.php");
    $result = mysql_query("select * from users",$conn);
    echo "Welcome ".$_SESSION['valid']. "! <a href='logout.php'>Logout</a><br/>";
}
else
{
    require('./loginform.php');
}
?>

このコードでは、ログインフォームは表示されませんが、代わりに何も表示されません。ログインしたユーザーが表示されるはずです。何を見逃したのかわかりません。PHP初心者です。助けてください。申し訳ありませんが、すべてのファイルでセッション開始があると仮定してください。

4

1 に答える 1

1

session_start()セッション変数の存在を確認する前に追加する必要があります。

<?php
session_start();
if(isset($_SESSION['valid']))
....

session_start()セッションを作成するか、現在のセッションを再開します。

于 2013-10-20T11:37:48.200 に答える