0

前回の問題は解決しましたが、今は別の問題があります。私はグーグルとスタックオーバーフローで何時間も検索したと思います。しかし、私はそれを機能させることができません。

ログインすると、これを使用します:

<?php
            if(isset($_POST['submit'])) {
                $username = $mysqli->real_escape_string($_POST['username']);
                $password = $mysqli->real_escape_string(md5($_POST['password']));

                $checkUser = "SELECT * FROM users WHERE username='".$username."' AND password='".$password."'";
                $checkUserResult = $mysqli->query($checkUser);

                if($checkUserResult->num_rows > 0) {
                    $userRow = $checkUserResult->fetch_assoc($checkUserResult);

                    $dbid = $userRow['id'];
                    $dbuser = $userRow['username'];

                    $_SESSION['id'] = $dbid;
                    $_SESSION['username'] = $dbuser;

                    header("location: me.php");
                } else {
                    echo "<div class='errorField'>Anv&auml;ndarnamnet och/eller l&ouml;senordet &auml;r fel!</div>";
                }
            }
        ?>

me.php にリダイレクトされます。このコードは次のとおりです。

<?php
include "core/global.php";
echo (headers_sent())?'sent':'not sent';
session_start();
$id = $_SESSION['id'];
$username = $_SESSION['username'];

if(!isset($_SESSION['id'])) { header("location: index.php"); } ?>

しかし、その後、Index.php(セッションの原因)にリダイレクトされ、使用しようとすると

echo (headers_sent())?'sent':'not sent';

「送信されていません」と表示される

セッションが機能しません...何らかの理由でわかりません。OOP「プロ」である私の友人は、これを解決することさえできません...だから、助けてください!

ありがとう。

PS。ログインページの session_start() は、ページのトップにあります: http://prntscr.com/1g7ohh

4

2 に答える 2

2

me.php のこの行...

echo (headers_sent())?'sent':'not sent';

あなたの session_start 呼び出しを壊しています。

テキストを出力することにより、ヘッダーの送信を強制しています。

と置換する

if (headers_sent()) die ("Headers have already been sent");

そうすれば、ヘッダーが送信されているかどうかをテストしながらヘッダーを送信していません:)

于 2013-07-18T22:26:33.133 に答える
0

ログイン例では、セッションを開始していないようです。

session_start();残りのコードを表示しない限り、ファイルの先頭に追加します。使用する場合は、常にセッションを開始する必要があることに注意してください。

于 2013-07-18T22:27:56.007 に答える