-5

私は PHP の学習者ですが、PHP セッションでいくつかの問題があります。

簡単なログイン テストを実行しようとしていますが、別のページに移動するとセッション変数が追従しないようです。2 つの重要なファイル:

ログインの確認:

 <html>
<head>
    <title>
        <?php
            session_start();
        ?>
    </title>
</head>
<body>
    <?php

        $connection = mysql_connect("localhost", "root", "root");
        if(!connection)
        {
            die("could not connect to the database");
        }
        mysql_selectdb("phplogin", $connection) or die ("MySQL error i valg af database: " .mysql_error());
        $query = "Select * from users where username='".$_POST['username']."' AND password = '".$_POST['userpass']."'";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        if($count==1){
            $_SESSION['loggedIn'] = "true";
            echo "The variable: ".$_SESSION['loggedIn'];
            header("Location: loggedinPage.php");
            exit;
        }
        if(!$count == 1){
            header("Location:Login.php");
            exit;
        }
    ?>
</body>

そしてアクセスページ:

 <html>
<head>
    <title>
        <?php
            session_start();
        ?>
    </title>
</head>
<body>
    <?php
        if($_SESSION['loggedIn'] != "true"){
            echo "You are NOT logged in";
            echo $_SESSION['loggedIn'];
            exit;
        }
            echo $_SESSION['loggedIn'];
            echo "You are logged in";
    ?>
</body>

正しいユーザーとパスワードを入力しても、新しいページに移動するとログインしていないと表示されます。もう1つは「ヘッダー(場所:など)」です。これは機能しません。手動でリダイレクトする必要があります。

どんな助け:)? - デビッド


ありがとう、ログインできるようになりましたが、リダイレクトはまだ機能しませんか? 私のファイルは次のようになります。

 <?php
    session_start();
    ?>
    <?php

        $connection = mysql_connect("localhost", "root", "root");
        if(!connection)
        {
            die();
        }
        mysql_selectdb("phplogin", $connection) or die ("MySQL error i valg af database: " .mysql_error());
        $query = "Select * from users where username='".$_POST['username']."' AND password = '".$_POST['userpass']."'";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        if($count==1){
            $_SESSION['loggedIn'] = "true";
            header("Location: loggedinPage.php");
        }
        if(!$count == 1){
            header("Location:Login.php");
        }
    ?>

<head>
    <title>

    </title>
</head>
<body>

</body>

4

2 に答える 2

3

session_start()ドキュメントの最上部にheader()配置し、Web サイトで出力が行われる前にのみ実行する必要があります。

于 2012-08-21T21:59:35.497 に答える
0

データを出力する前に、セッションを開くか、その内容を変更する必要があります。session_start は、出力の前に呼び出す必要があり、

<html>
...

が出力されます。

同じことが言えます

$_SESSION['loggedIn'] = "true";

すべてのログイン関連のチェックと開始を html の上に配置します。

header('Location... ') と同じです-出力の前にある必要があります

ところで、私は直接行きません

if($_SESSION['loggedIn'] != "true"){ ...

代わりに、設定されているかどうかを確認します

if(!isset($_SESSION['loggedIn']) || $_SESSION['loggedIn'] != "true"){ ...
于 2012-08-21T22:03:17.653 に答える