2013-06-27 2 views
0

여기에 심각한 문제가 있습니다. 세션이있는 사용자 시스템을 만들었습니다. 문제는 로그인했을 때만 볼 수있는 콘텐츠가 있다는 것입니다. 예를 들어 탐색 표시 줄에서 로그인 버튼이 계정 버튼으로 대체되었습니다.PHP 포함 페이지 내용이 새로 고침되지 않습니다.

내 문제 : 모든 페이지에는 navbar.php가 포함되어 있습니다.

<body> 
<?php include("navbar.php")?> 
</body> 

login.php가의 index.php로 리디렉션 : 다음의 index.php에서 예를 들어 는 기록

header("Location: index.php"); 

그러나 index.php를 새로 고침하지 않습니다. "F5"로 열심히 새로 고침하면 모든 것이 잘됩니다.

또한 캐시에서 페이지를로드하지 못하도록 메타 태그를 시도했습니다.

어떤 아이디어?

의 index.php :

<html lang="en"> 
<head> 
    ... 
</head> 
<body > 
<?php include("navbar.php")?> 
    <div id="wrap"> 
    ... 
    </div> 
</body> 
</html> 

navbar.php

<div class="navbar"> 
    <?php 
    session_start(); 
    if (!isset($_SESSION['logged']) || !$_SESSION['logged']) 
    {?> 
     ...Sign in etc... 
    <?php 
    } 
    else 
    {?> 
     ...Accounting... 
    <?php 
    }?> 
</div> 

login.php :

<html> 
<head> 
</head> 
<body> 
<?php include("navbar.php"); ?> 
<div class="container"> 
    <form class="form-signin" action="logon.php" method="post" > 
     ... 
    <button type="submit">Login</button> 
    </form> 
</div> 
</body> 
</html> 

logon.php :

<?php 
if login successfull //pseudo code 
    header("Location: http://www.***.com/index.php"); 
} 
else 
{ 
    header("Location: http://www.google.de"); 
} 
exit; 
?> 
+0

PHP 파일의 캐시 한도는 얼마입니까? 동적 파일 이후 .htaccess –

+0

에 대해 얘기하면, 일반적으로 연습은 캐싱을하지 않는 것입니다. –

+0

어디에서 login.php 파일을 포함하고 있습니까? 'header'를 호출하기 전에 어떤 것을 echo하고 있습니까? 헤더를 설정하기 전에 파일에 HTML이 있습니까? 그렇다면 :'header'를 맨 위로 이동하거나'ob_start() '를 사용하십시오. –

답변

0

the specs에 따르면, 절대 uri를 패스해야합니다.
이 리디렉션 때,이를 추가하는 것이 좋습니다 :

header('HTTP/1.1 301 Moved Permanently'); 
header('Location: https://www.google.com'); 
검색 엔진 최적화 purpouses를 들어

및 브라우저 캐시 (자세한 내용을 보려면이 구글).
이미 알았 으면 좋겠지 만 출력이 클라이언트에 전송되지 않았는지 확인해야합니다. 그 경우 헤더가 이미 전송 되었기 때문에 논리가 변경하기가 너무 늦기 때문입니다. 그때. 헤더 및 출력 버퍼링을 처리하는 방법에 대한 자세한 내용은

Check this question입니다.

+0

login.php가 헤더 ("Location : http : //www.***.com/index.php")로 변경되었습니다. 여전히 색인을 새로 고치지 않습니다.php, F5를 누르면 모든 것이 정상이며 로그인 버튼이 계정으로 대체됩니다. – Swagger

+0

@Swagger : 그 결과는 ...? 또한 : 당신이 올린 스 니펫 이미 헤더를 보냈다는 인상을받습니다 (출력을 보내서 암시 적으로). 출력을 버퍼링하는 방법 또는 필요에 따라 헤더를 설정할 수있는 방법을 설명하는 이전 질문에 대한 링크를 추가했습니다. –

1

.htaccess 파일에 추가하십시오. 이 파일 확장명에서 브라우저 캐싱을 사용하지 않도록 설정합니다.

<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$"> 
Header unset Cache-Control 
</FilesMatch> 
관련 문제