0

我在 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() 位于包含此文件的文件中。

4

2 回答 2

1

您需要抑制错误报告:

$username = strtolower(@$_SESSION['user_name']);

或者更好的是,在使用变量之前检查 isset($_SESSION['user_name']) 。

于 2012-11-22T08:37:21.577 回答
0

错误似乎发生在这里:

$username = strtolower($_SESSION['user_name']);

“未定义索引”基本上意味着在 $_SESSION 变量中找不到“用户名”索引。

你可以在你设置的地方发布你的代码吗?
并确保此代码在您检查 $_SESSION['user_name']; 之前运行。

于 2012-11-22T08:39:02.967 回答