0

我已经解决了我的最后一个问题,但我现在有另一个问题。我想我已经在 google 和 stackoverflow 上搜索了几个小时了。但我无法让它工作。

当我登录时,使用这个:

<?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 回答