我正在尝试让我的网上商店的用户输入用户名,然后将在每个页面上显示。我已经在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上显示?
答案 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 : '';