【问题标题】:PHP not creating $_SESSION variable on session_start();PHP 没有在 session_start() 上创建 $_SESSION 变量;
【发布时间】:2011-10-29 16:46:53
【问题描述】:

我在这里设置了 3 页:

login.php:登录页面,包含提交给的用户名和密码字段

checklogin.php:检查凭据是否正确并重定向到

login_successful.php:显示用户名

login.php 以

开头
<?php session_start(); ?>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <?php
        include 'content.php';
        echo $head;
    ?>
</head>

应该初始化一个全局 $_SESSION 变量对吗?

checklogin.php 有一些看起来像这样的代码:

if (mysql_num_rows($result) < 1)
{
    /* Access denied */
    echo 'Sorry, your username or password was incorrect!';
}
else
{
    $_SESSION['username'] = $username;

    /* Log user in */
    header("location:login_successful.php");
}

login_successful.php 看起来像这样:

<div id="title" style="margin:5px">
    <h2>Welcome back <?php echo $_SESSION['username']; ?>!</p>
</div>

不幸的是,当我完成登录过程并进入 login_successful.php 时,我收到此错误“注意:未定义变量:第 15 行 C:\wamp\www\login_successful.php 中的 _SESSION”,尽管我清楚地启动了login.php 中的会话。

为什么要这样做?

【问题讨论】:

  • 您是否在每个脚本中都包含 session_start();

标签: php apache session


【解决方案1】:

您需要在每个脚本的顶部调用session_start()

【讨论】:

  • 谢谢!我假设它应该被全局调用一次。
  • 因为http是无状态的,每个web请求都会有效地启动php,运行,然后关闭——所以每次都需要调用它。如果此答案解决了问题,请使用左侧的大勾号将其标记为已接受。谢谢!
【解决方案2】:

你需要记住 checklogin.php 中的 session_start()

【讨论】:

    猜你喜欢
    • 2015-05-09
    • 2020-10-18
    • 1970-01-01
    • 2015-05-10
    • 2014-08-28
    • 2011-11-19
    • 2019-08-07
    • 1970-01-01
    相关资源
    最近更新 更多