2012-05-11 3 views
0

로그인이 포함 된 웹 사이트가 있는데 사용자가 로그인하면 기본 페이지에 메시지를 표시하고 세션을 끝내기를 원합니다.PHP 세션 알 수없는 오류

나는 오류 받고 있어요 :

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by.. 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 

내가 거기에 기록되지 오전 오류를 표시,하지만 최대한 빨리 로그인하고 페이지로 돌아가로 사라 , "로그인했습니다!"라는 메시지는 표시되지 않습니다.

<?php 
    session_start(); 
    if ($_SESSION["access"] == 'granted'){ 
     ?> 
     <p>You are logged in!</p> 
     <?php 
    } 
    else{ 
    ?> 
    <p>You are not logged in!</p> 
    <?php 
    } 
    ?> 
: 오류를 일으킬 것으로 보인다

if ($result["userName"] == $_POST[txtUsername] && $result["password"] ==$_POST[txtPassword]) 
    { 
     ?> 
     <script type="text/javascript">; 
     alert("successfully logged in, <?php echo $result['userName'];?>!"); 
     window.location.href='http://manning3.jcu.edu.au/~jc192699/index.html'; 
     </script> 
     <?php 
     session_start(); 
     $_SESSION["access"] = 'granted'; 
    } 

그리고 내 index.php를 내 코드 :이 경기에 대한 데이터베이스를 확인 후 여기에

내 인증 코드는 ...이해야처럼

어떤 도움을 주시면 감사하겠습니다. 고맙습니다!

+0

코드의 어딘가에서 느슨한 공간 (파일 끝에있는 경우)이 'session_start'를 호출하기 전에 출력이 트리거되도록합니다. 보고자하는 더 많은 장소에 대해서는 오른쪽 열에있는 무수한 관련 질문을 확인하십시오. – rjz

+0

세션으로 무엇을 하든지 상관없이 session_start()가 가장 먼저해야 할 일입니다. – thetrompf

+0

도와 주셔서 감사합니다! 오류는 이제 사라졌지 만 여전히 문제가 있습니다 ... 로그인 후 색인 페이지로 돌아 가면 시스템에 "로그인했습니다!"라는 메시지가 표시되지 않습니다. 모든 단서? – DommyCastles

답변

2

session_start()은 브라우저에 출력물을 인쇄하기 전에 호출해야합니다. 세션을 시작하기 전에 javascript 스크립트를 인쇄하기 때문에 머리글은 이미 설정되어 있으므로 세션을 시작할 수 없습니다.

+0

도와 주셔서 감사합니다! 오류는 이제 사라졌지 만 여전히 문제가 있습니다 ... 로그인 후 색인 페이지로 돌아 가면 시스템에 "로그인했습니다!"라는 메시지가 표시되지 않습니다. 모든 단서? – DommyCastles

+0

쿠키는 로그인에 유용합니다. 사용자가 로그인했는지 여부를 포함하는 쿠키를 저장하고 여기에 만료일을 설정하기 만하면됩니다. 그런 다음 로그 아웃 할 때 만료 날짜를 과거 날짜로 설정하여 해당 쿠키를 만료시킵니다. 또한, 쪽지에 질문을 할 때 동의하는 대답을 수락해야합니다. 이렇게하면 다른 사용자가 발생한 문제를 어떻게 해결했는지 알 수 있습니다. – Vulcan

+0

이 작업을 수행하는 방법에 대한 아이디어가 있습니까? – DommyCastles

1

<?php 선언 전에 공백이있는 것 같습니다. session_start() 앞에 헤더가 전송되어 수신 오류가 발생할 수 있습니다.