2012-11-22 4 views
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'나는 파일의 나머지 부분에서 오류가 발생하지 않기 때문에, 난 그냥이 게시물에 메뉴 파일이 포함되어 있습니다. 별도의 파일 안에 있다면 세션의 특별한 치료가 있는지 누군가가 말해 줄 수 있습니까?PHP 세션 전역 변수

<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()이 하나를 포함하는 파일에 있습니다.

+2

'session_start'가'include' 전에 호출되는 것이 확실합니까? – Raziel

+0

또는 $ _session에 user_name을 설정 했습니까? –

+0

'session_start'는이 파일을 포함하고있는 파일에서 무엇보다 먼저 호출됩니다. 또한 위에있는 변수를 확인하고 설정되지 않은 경우 로그 작성 화면으로 리디렉션합니다. –

답변

1

당신은 오류보고를 억제해야

$ 사용자 이름 =하여 strtolower (@ $ _ SESSION [ '_ 이름']);

이상인 경우 변수를 사용하기 전에 isset ($ _ SESSION [ 'user_name'])을 확인하십시오.

+0

왜 그것을 억제합니까? 그것이 있으면 뭔가 잘못되었다는 뜻입니다. 그것을 고쳐야할까요? –

+0

나는 내가이 일을하고 있다고 믿을 수 없다. 그러나 나는 대답을 선택해야한다. 그리고 당신만큼 많은 해키가있다. 나는 억압했다. :(오류가 없으며 모든 것이 제대로 작동합니다. 곧 다시 돌아가 겠지만, 계속 지켜보기 위해이 일에 너무 피곤합니다. 여러분 모두 도와주세요. –

+1

생산 코드에 오신 것을 환영합니다. :) ... if (! empty ($ _ SESSION [ 'user_name'])) 또는 if (isset ($ _ SESSION [ 'user_name']))를 사용하는 것이 좋습니다. 그러나이 경우에는 경험이 많은 프로그래머에게는 오류가 표시되지 않는 이유가 분명해야합니다 ... 모든 스크립트에서 session_start 이후 – soulfreshner

0

에러 여기서 발생한 것으로 보인다

$ = 아이디를하여 strtolower ($ _ SESSION [ '_ 이름']);

"정의되지 않은 색인"은 기본적으로 '_ user_name'색인을 $ _SESSION 변수에서 찾을 수 없음을 의미합니다.

어디에서 코드를 게시 할 수 있습니까?
$ _SESSION [ 'user_name']에 대한 확인 전에이 코드가 실행되는지 확인하십시오.

+0

다음과 같은 내용의 Lock.php 파일이 포함됩니다. if (! isset ($ _ SESSION [ 'logged_in'], $ _SESSION [ 'user_name'], $ _SESSION [ 'user_role'])) { \t 헤더 ('위치 : 로그인.PHP '); } 세션 변수를 사용하는 지점에 이르렀 기 때문에 세션 변수를 사용한다는 의미입니다. 적어도 내가 코드를 작성할 때 생각했던 것입니다. –

+0

이상한 일은 코드가 잘 돌아가는 것입니다 ... 나는 그 오류를 얻었습니다. 이상해. –

+0

결제, 도구 메뉴 항목이 에코 아웃되는 경우이 변수에 포함 된 내용을 보려면 "echo $ username"을 포함시킬 수 있습니까? 이 작업을 수행하려면 오류보고 수준을 단계적으로 낮춰야 할 수도 있습니다. – SteB