2013-01-24 3 views
1

내 페이지에는 몇 개의 링크가 있습니다. 사용자가 로그인하지 않은 경우 대부분은 홈페이지로 리디렉션됩니다. 로그인하는 대신 사용자를 로그인 페이지로 안내 한 다음 원래 가고자하는 페이지로 안내합니다.사용자가 가고 싶은 페이지 기억하기

예를 들어 사용자가 index.php에 있고 로그인하지 않고 page10.php을 클릭하면 login.php으로 연결됩니다. 로그인 한 후 웹 사이트는 원래 사용자가 page10.php으로 가고 싶다는 사실을 기억해야합니다.

기억하는 부분은 어떻게합니까? Cookie 및/또는 PHP 세션을 사용할 수 있다는 것을 알고 있지만 사용자가 page10.php에 가고 싶다는 것을 기억하는 가장 적절한 방법 (이 시나리오에서)은 무엇입니까?

+1

은하지 마세요 서버가 기억하기 때문에, 로그인하지 않은 사용자가 서버의 상태를 증가시킬 수 있기 때문입니다. (도스 공격을 수행하십시오). –

답변

2

, 간단히 제출 한 후 그 URI로 다시 리디렉션 로그인 페이지는 $ _SERVER 배열에서 HTTP_REFERER에 액세스 양식에 숨겨진 요소로 설정 세션을 사용하거나 변수를 얻을 필요가 없습니다

2

링크의 일부로 원하는 URL을 추가하십시오. 따라서 사용자가 로그인하지 않은 경우 :

login.php?url=<desired_url> 

로그인 페이지에서 변수를 읽고 성공한 경우 색인 대신 직접 읽습니다.

는 login.php에서 login.php?return=ORIGINAL_URL

$_SESSION['return'] = $_GET['return']; 설정에 리디렉션, $_SERVER['REQUEST_URI']

$_SERVER manual

+0

메서드에 동의하지만, 쿼리 문자열에 전달하려는 경우 url param을 실제로 'urlencode'해야합니다. 또한 $ _GET [ 'url']'은 OP의 login.php에서 가져 오기 위해 정상적으로 처리 할 것입니다. – Crisp

+0

정확히 말하지만, 요청 URI를 전달하는 것과 관련한 페이지를 탐색하면 궁극적으로 물어 보는 사람에게 어떤 종류의 인코딩이 생깁니다. 문제가 아니라면 어떤 값을 전달하면 얻을 수있는 문제는 분명히 그에게 좀 더 연구가 될 것이고 항상 좋은 것입니다 :) – Moseleyi

0

처음에는 서버 측 모양의 URL을 얻으려면.

성공한 로그인 후 $_SESSION['return']이 있는지 확인하고 유효한 URL 인 경우 리디렉션하고 $_SESSION['return']의 설정을 해제하십시오.

그게 전부입니다.

추신 : 사용자가 세션을 사용해야하는 이유는 사용자가 첫 번째 시도에서 성공적으로 로그인하지 못할 수 있기 때문입니다. 또는 계좌가 없을 수도 있습니다. 먼저 등록을 원할 수 있습니다. 이렇게하면 계정을 만든 후에도 해당 페이지로 리디렉션됩니다.

0

사용자를 기록하면 세션을 사용할 것임을 의미합니다. 세션은 대개 쿠키를 사용하지만 쿠키를 사용하거나 사용하지 않으려는 경우 요청시 세션 ID를 전달하여 구현할 수 있습니다. 대상 페이지가 세션에 설정되어있는 경우

1) 인증 검사 로그인 페이지

2) 로그인 페이지 검사로 리디렉션 :

이 작업을 수행하는 적절한 방법은 다음과 같이 세션을 사용하는 것입니다 그렇지 않은 경우는 레퍼러

3) 로그인 폼이 유효한 경우 대상 페이지가 세션으로부터 제거하고, 사용자가 일본어 페이지

4로 재) 그렇지 형태 인로 설정 다시 표시되었습니다.

관련 문제