【问题标题】:PHP: Starting a SESSION not working [duplicate]PHP:启动会话不起作用[重复]
【发布时间】:2017-05-12 07:41:35
【问题描述】:

当用户登录时我正在启动一个会话,但是当我尝试从会话中提取时,它就像它不存在一样。任何想法为什么?

登录页面的PHP

session_start();
if (isset($_POST) & !empty($_POST)) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $sql = "SELECT * FROM `web_accouts` WHERE username='$username' AND password='$password'";
    $result = mysqli_query($conn, $sql);
    $count = mysqli_num_rows($result);
    if ($count == 1) {
        $_SESSION['username'] = $username;
        header('location: /main-page.php');
        die();
    } else {
        $fmsg = "Invalid Username/Password";
    }
}

PHP 提取信息

<?php
    echo "Username is " . $_SESSION["username"] . ".<br>";
?>

我已经尝试了所有我能想到的东西,但我是 PHP 新手

【问题讨论】:

  • 您需要在第一个页面以及 main-page.php 开头添加 session_start()

标签: php html session


【解决方案1】:

编辑您的以下代码:

<?php
        echo "Username is " . $_SESSION["username"] . ".<br>";
?>

对此:

<?php
        session_start();
        echo "Username is " . $_SESSION["username"] . ".<br>";
?>

您必须在每个页面上开始会话。

【讨论】:

  • 现在一切正常,不知道我需要在每个页面上启动一个会话。
【解决方案2】:

你应该保留

session_start();

在您处理会话数据的所有页面之上。

【讨论】:

    【解决方案3】:

    另外为了防止一些php的提示如session已经开始在线...,这样做

    <?php
    
    if(!isset($_SESSION) && session_id() == ''){//only start session if it hasnt been started
    session_start(); 
    }
    ?>
    

    【讨论】:

      【解决方案4】:

      您应该将session_start(); 放在文件开头,也就是您要访问会话的位置。

      【讨论】:

        猜你喜欢
        • 2018-05-31
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 2012-07-14
        • 2016-12-01
        • 2013-02-09
        • 2014-02-08
        相关资源
        最近更新 更多