我使用php的会话,我使用session_start并存储一些从登录表单传递的变量,变量在代码开头是"user_name"和"user_role"我检查这些变量是否已设置,如果没有,则重定向到loggin scree。现在的问题是我有一个包含菜单选项的包含文件,如果用户是特权用户,它会显示比不是的用户更多的选项。 我的问题是,当处理包含文件时,我得到PHP Notice: Undefined index: user_name in C:inetpubwwwroot2StarsGames.comSomeGame v4.1interfaceHeaderMenu.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() 位于包含此文件中的文件中。
您需要禁止显示错误报告:
$username = strtolower(@$_SESSION['user_name']);
或者更好的是,在使用变量之前检查 isset($_SESSION['user_name'])。
错误似乎发生在这里:
"$username = strtolower($_SESSION['user_name']);
未定义的索引"基本上意味着在 $_SESSION 变量中找不到"user_name"索引。
你能在设置它的地方发布你的代码吗?
并确保此代码在您检查 $_SESSION['user_name'] 之前运行;