在PHP会话中使用变量

时间:2015-11-26 11:15:09

标签: php session

我正在尝试让我的网上商店的用户输入用户名,然后将在每个页面上显示。我已经在header.php中启动了会话并设置了用户名变量:

session_start();
$_SESSION['username'] = $username;
$username = ''; //set blank variable to be filled in index

然后我使用:

在index.php中调用header.php
<?php
include "header.php";
?>

在logIn div里面我要求输入用户名(没有表格可以提交它,没有遇到这么远而没有遇到下面的问题)。如果用户未登录表单以登录,则脚本应显示一条消息,但如果他们已提交要使用的用户名,则表单应显示欢迎消息:

 <div class="logIn">
                <?php
                if (!isset($_SESSION['username'])) {
                    echo 'Welcome, '.$_SESSION['username'];
                } else {
                    echo 'Sorry, You are not logged in.';
                }
                ?>
 </div>

我目前收到此错误:

Notice: Undefined variable: username in /header.php on line 13

但我无法弄清楚原因。我以为我已经宣布它为空,但即使我给它一个值,index.php中的if语句也没有按预期工作。

如何设置一个简单的会话并接受一个用户名变量(无密码),然后在index.php上显示?

2 个答案:

答案 0 :(得分:4)

您的错误很简单。

$_SESSION['username'] = $username;
$username = '';

您尝试在分配之前使用$username

$username = '';
$_SESSION['username'] = $username;

应该更好!

答案 1 :(得分:0)

我猜第13行就是这个$_SESSION['username'] = $username;

如果您要将$username分配给$_SESSION['username'],则必须先将其设置在某个地方,我无法在您的示例中看到这一点。

您的代码必须如下所示:

//declare $username
$username = "somename";
$_SESSION['username'] = $username;

或者如果您在条件或其他条件下设置$username,您可以尝试:

$_SESSION['username'] = ( isset( $username ) ) ? $username : '';