【发布时间】:2012-11-22 08:30:34
【问题描述】:
我在 php 中使用会话,我使用 session_start 并存储一些从登录表单传递的变量,变量是代码开头的“user_name”和“user_role”我检查是否设置了这些变量,如果没有,重定向到登录屏幕。现在的问题是我有一个包含菜单选项的包含文件,如果用户是特权用户,它会显示比不是特权用户更多的选项。我的问题是,当包含文件被处理时,我得到PHP Notice: Undefined index: user_name in C:\inetpub\wwwroot\2StarsGames.com\SomeGame v4.1\interface\HeaderMenu.php on line 20'user_name' 因为我在其余文件中没有收到错误,所以我只是在这篇文章中包含了菜单文件。如果在单独的文件中,有人可以告诉我会话是否有特殊处理?
<div id="page_header">
<img class="logoImage" src="./img/some1.png" align="left" />
SUPER B
<img class="logoImage" src="./img/some2.png" align="right" />
</div>
<div id="page_menu">
<center>
<a class="menu" href="./Contest.php">Contest</a>
<a class="menu" href="./Cards.php">Cards</a>
<a class="menu" href="./PlayersPoints.php">Players Points</a>
<a class="menu" href="./SBCardsCode.php">Card's Code</a>
<a class="menu" href="./Avatars.php">Avatars</a>
<a class="menu" href="./Sims.php">Sims</a>
<a class="menu" href="./Boards.php">Boards</a> <br/>
<a class="menu" href="./Charity.php">Charity</a>
<?php
$username = strtolower($_SESSION['user_name']);
if($username == 'some name1' ||
$username == 'some name2' ||
$username == 'some name3' ||
$username == 'some name4')
{
echo "
<a class='menu' href='./PayoutsNoWin.php'>Payouts</a>
<a class='menu' href='./Payins.php'>Payins|</a>
<a class='menu' href='./Payments.php'>Payments</a>
<a class='menu' href='./Tools.php'>Tools</a>
<a class='menu' href='./TransferData.php'>Transfer Data</a>
<a class='menu' href='./Games.php'>Games</a>
";
}
?>
</center>
编辑 session_start() 在包含这个的文件中。
【问题讨论】:
-
你确定
session_start在include之前被调用吗? -
或者你在 $_session 中设置了用户名?
-
session_start在文件中包含此文件的任何内容之前被调用。我还会检查顶部的这些变量,如果没有设置,我会重定向到登录屏幕。 -
你能在这里给我 print_r() 表格吗?
-
只有在包含菜单文件后设置
$_SESSION变量时才会发生这种情况,因此菜单文件还不能获得$_SESSION键。我建议您在包含文件之前切换$_SESSION设置
标签: php session include global-variables