2011-09-22 4 views
0

사용자가 로그인 할 수있는 양식이 있고 사용자가 동일한 페이지로 다시 게시하는 양식을 채우고 사용자 이름과 암호 및 로그로 오류를 검사한다고 가정 해 보겠습니다. 모든 것이 부풀어 오르는 경우에 suer. 순간 나는이 상태에서 형태를로드하여이 일을 해요 :PHP - POST 및 헤더 다루기

if($_SERVER['REQUEST_METHOD'] != 'POST') { 

이 사실이 아닌 경우 다음 오류를 검사하고 문제는이 모든 일이 발생한다는 것입니다에 등

로그 signin.php. signin.php 상단에 나는 자신의 이름에서 알 수있는 것과 정확히 일치하는 header.phpconnect.php을 포함합니다. 페이지에 다시 게시하면 로그인 상태의 변경 사항이 헤더 파일에 표시되지 않습니다 (이 파일에는이 사이트의 것과 비슷한 특성의 사용자 막대가 있음). 로그인은 작동하지만 '로그인/등록'대신 '로그인'을 표시하는 헤더의 다른 페이지로 이동해야합니다.

잘못된 방식으로이 문제를 해결했거나 헤더를 업데이트하기 위해 추가해야 할 부분이 있습니까? 건배.

P.S : PHP에 너무 익숙하지 않기 때문에 너무 복잡하지 않은 것이 좋을 것입니다.

+0

다른 페이지 헤더 ("Location :". $ url); 또는 동일한 페이지를 리디렉션 할 수 있습니다. 그것은 해결 될 것이다. 리디렉션하기 전에 브라우저에 출력되는 내용이 있으면 meta refresh 또는 javascript 리디렉션을 사용하십시오. – mahadeb

+0

@mahadeb 브라우저에서 전혀 출력되지 않아야합니다. –

+0

로그인이 완료되면 this - header ('Location :'. basename ($ _ SERVER [ 'REQUEST_URI']))); exit; 페이지 리다이렉션. 이 코드가 실행되기 전에 브라우저에 출력이 있어서는 안되며 공간 출력도 없어야합니다. – mahadeb

답변

1

웹 개발의 아주 기본적인 아직 엄격한 규칙을 위반하여 설정 2 문제가있다

  1. POST 요청 후 리다이렉션해야합니다. 다른 답과 같이 할 수 있습니다.
  2. 모든 논리가 완료되기 전에 HTML이 표시되어야합니다. 따라서 header.php는 폼 검사 이후에 호출되어야합니다.
+0

그래, 지금 포인트 2가 중요하다는 것을 알았어. 바로 순서대로 호출하기 시작하자마자 내가 원하는대로 작동했다. 분명히. 건배! –

3

당신은 아마도 POST 코드 발생 후 (header()를 사용하여) 리디렉션해야합니다

if($_SERVER['REQUEST_METHOD'] != 'POST') { 
    .. 
} 
else { 
    .. 
    header('Location: ' . basename($_SERVER['REQUEST_URI'])); 
    exit; 
}