2012-03-17 3 views
1

임 내 인증 시스템 내 XAMPP 서버에 괜찮 았는데, 지금은 일반적으로의 PHP SESSION 변수

을 Bluehost를하는 동안 이동하기 때문에 나는 페이지와 같은를 열 경우, 문제가 메신저 varialbles 내 PHP 세션에 문제가 index.php 로그인했는지 확인하고, 로그인 페이지로 이동하지 않았지만 작동하지 않는 경우 테스트를 위해 $_SESSION['username']을 반향하려고 시도했지만 공백으로 표시됩니다.

지금 나는 ALEX가 말한 것과 내가이 에러를 가지고 있다고 말했어 : 헤더 정보를 수정할 수 없다 - 이미 보낸 헤더 (/ home7 /에 시작된 출력). ./public_html/blog.php:4) 여기

라인 (22)에 /home7/blogboua/public_html/blog.php의 코드입니다 : 당신의 index.php<?php 내부 설정

<?php session_start(); ?> 
<html> 
<head> 
<?php 
ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 
/*-----Connect to Database-----*/ 
include ('connect_database_2.php'); 

//check if logged in 
function isLoggedIn() 
{ 
    if(isset($_SESSION['valid']) && $_SESSION['valid']) 
     return true; 
    return false; 
} 


//if the user has not logged in 
if(!isLoggedIn()) 
{ 
    header('Location: login_form.html'); 
    die(); 
} 

/* get username */ 
$username = $_SESSION['username']; 


/*-----Include Navigation------*/ 
include ('frame.html'); 

?> 

답변

2

이미 2-3 행에 <html><head>을 보낸 후에 Location 헤더를 보내려고합니다. 너는 그렇게 할 수 없다. 출력을 보내기 전에 머리글을 보내야합니다.

코드가 로컬 서버에서 어떻게 작동했는지 솔직하게 알지 못합니다.

+1

출력 버퍼링이 구성되어 있기 때문에 코드가 로컬 서버에서 작동했다. 그러나 이것은 정답입니다. 해결책은''을'include ('frame.html');의 직전으로 옮기거나 더 나은 방법으로'frame.html' 안에 넣는 것입니다. – DaveRandom

+0

감사합니다! – user1107703

1

.. .

ini_set('display_errors', 'on'); 
error_reporting(E_ALL); 

그런 다음 index.php (이전에 빈 페이지)를 다시로드합니다.

오류의 원인을 알려줍니다. 가능하면 세션 데이터를 /tmp/에 쓸 수 없습니다.

+0

괜찮아요, 내 고침은 내 게시물을 수정합니다. – user1107703

1

bluehost와 같은 공유 서비스 공급자를 사용하는 경우 이러한 호스팅 공급자가 이전 사용자/tmp 파일을 가비지 수집/정리하므로 세션 지속성에 대한 가정을 조심해야합니다. IMO를 피하는 가장 쉬운 방법은 명시 적 세션 핸들러를 선언하고 MySQL D/B에 세션 컨텍스트를 저장하는 것입니다. 이를 수행하는 방법에 대한 예제는 PHP session_save_handle r 토론을 참조하십시오.

+0

나는 내 자신의 폴더에 session.save_path를 바 꾸었습니다. – user1107703

+0

"내 session.save_path를 내 폴더로 변경했습니다."- .htaccess 액세스 규칙을 추가하여 액세스가 중지되도록했습니다. URI, 나는 희망한다 : – TerryE