2014-05-09 3 views
-2

PHP 응용 프로그램을 개발 중이며 세션 값을 유지하는 데 문제가 있습니다. 나는 사이드 바 (sidebar.php)와 홈 페이지 (home.php) 인 두 개의 파일을 가지고있다. 홈 페이지에 사이드 바를 포함 시켰습니다. 사이드 바에 로그인 컨트롤이있어 성공적으로 로그인 할 수 있습니다. 나는 그것이 내게 환영 메시지 인 'username'을 보여주기 때문에 성공적으로 로그인 한 것을 안다. 그러나 홈 페이지로 이동하면 환영 값인 '사용자 이름'부분은 세션 값이 삭제됨에 따라 표시되지 않습니다. 대신 로그인 양식이 표시됩니다. 왜 그런가요? php - 다른 페이지로 이동할 때 세션 값을 유지할 수 없습니다.

은 (sidebar.php)

<?php require_once('connections.php'); ?> 
<?php 
// if the login button is clicked 
if (isset($_POST['btnLogin'])) 
{ 


$myusername=$_POST['textusername']; 
$mypassword=$_POST['textpassword']; 

$result=mysql_query("SELECT * FROM users_table WHERE username='$myusername' and password='$mypassword'"); 

$count=mysql_num_rows($result); 

if($count>=1) 
{ 

$_SESSION['username'] = $row["username"] ; 
$_SESSION['userid']= $row["ID"]; 

} 
else 
{ 

//Any code here 

} 

} 
?> 

<div class="col-md-12 right-aside"> 

<?php 


if (isset($_SESSION['userid'])) 
{ 
echo Welcome : " . $_SESSION['username']; 
echo " <a href='logout.php'> | Logout</a>"; 
} 

else //if session is not set 
{ 

echo 'Some html for login form'; 

} 

?> 
</div> 

는 다음의 홈 페이지입니다 (home.php)

<?php include("head.php"); ?> 
<body> 
<div class="container container-body"> 
     <div class="row"> 
      <div class="col-md-9 main-content"> 
      <div class="row">        

       <p>Some Text Here</p> 

      </div><!-- /.row --> 
      </div><!-- /.main-content --> 
     <div class="col-md-3"> 

    <div class="row"> 
     <?php include 'sidebar.php';?>  
    </div> 

</div> 

+0

세션에 값을 넣기 전에 세션이 시작되지 않은 경우 세션을 시작하고 세션에 값을 넣으십시오. – user3470953

+0

내가 할 때 그것은 다음과 같은 오류를 보여줍니다. 나는 그랬지만 사이드 바에 오류가 발생했습니다. 경고 : session_start() [function.session-start] : 세션 캐시 제한을 보낼 수 없습니다 - 이미 보낸 헤더 (C : \ xampp \ htdocs \ trialphp \ head.php : 38에서 출력 시작) head.php는 기본적으로 CSS와 스크립트 파일을 가져 와서 home.php에 가져 왔습니다. 그것은 오직 일부만 논한다 일부 CSS 및 일부 스크립트 – EngAbth9

+0

일반 텍스트 비밀번호로 작업하는 데 익숙해지지 마십시오. 먼저 강력한 해싱/암호화 (md5가 아니라 소금이 아님)를 관리해야한다고 생각합니다. 'mysql_'은 비추천이고, 문자열은 이스케이프하지 않으며,'session_start()'도 없습니까? – DanFromGermany

답변

3

집에서 세션을 시작하는 홈 페이지입니다 .php? 세션 변수에 액세스하려는 모든 PHP 스크립트의 첫 번째 줄에서 session_start()으로 전화해야합니다.

집 상단에 추가해보세요. 세션이 이미 시작되면서 그런 경우에도 session_start이 head.php 또는 sidebar.php에 다시 호출

<?php 
session_start(); 
//Then do your work 

, 그것은 무시됩니다.

+0

나는 그랬지만, 사이드 바에 오류가있다. 경고 : session_start() [function.session-start] : 세션 캐시 제한을 보낼 수 없습니다 - 이미 보낸 헤더 (C : \ xampp \ htdocs \ trialphp \ head.php : 38에서 출력 시작) head.php는 기본적으로 CSS와 스크립트 파일을 가져 와서 home.php에 가져 왔습니다.일부만 포함합니다 일부 CSS 및 일부 스크립트 – EngAbth9

+1

오류는 세션을 시작하기 전에 출력이 이미 브라우저로 전송되었음을 의미합니다. 'session_start()'는 출력이 보내지기 전에 첫 줄에서 호출되어야합니다. 업데이트 된 답변보기 –

+0

고마워, 효과가 있었다. 즉 세션 값을 참조하는 모든 파일 위에 session_start()를 써야한다는 의미입니까? – EngAbth9

관련 문제