2013-11-20 3 views
0

브라우저 URL에 붙여 넣은 페이지로 사용자를 리디렉션하는 데 어려움이 있습니다. 사용자가 로그인했는지 여부를 확인하는 checklogin 파일이 있습니다. 그들은 login.php 페이지로 리디렉션되지 않습니다.

시나리오 : 사용자가 및 유형에 기록되어 있지 않은 경우와 입력 된 URL로 리디렉션해야이 http://intra.friends.net/forum/index.php?id=1&show=29&count=1 사용자 로그와 같은 URL입니다.

이제 제대로 작동하지 않습니다. checklogin 검사는 사용자가 로그인하지 않은 경우 및 리디렉션 logout.php하고 logout.php가

checklogin.php

$url = $_SERVER["REQUEST_URI"]; 
if ($logged_in == 0 && (!isset($_COOKIE['autologin']))) 
{ 
    $goback ="http://intra.tobiasfransman.net/hallinta/logout.php?temp=$url"; 
    header ("Location: $goback"); 
} 

logout.php

$url = $_GET['temp']; 
if ($logged_in == 0) 
{ 
    $goback ="http://intra.tobiasfransman.net/login.php?select=$url"; 
    //$goback ="http://intra.tobiasfransman.net/login.php"; 
} 

로그인을 login.php 리디렉션. PHP

$url = $_GET['select']; 

문제는 $ url 복용량에 누가 제작은 문자열 쿼리를 벗어났습니다 링크 : 보이는 다음과 같이 :

/forum/index.php?id=1 

은 다음과 같아야합니다 때 :

/forum/index.php?id=1&show=29&count=1 

그것은 문자열 쿼리를 푼다 .. 어쨌든 나는이 작업을 얻을 수 있을까?

+0

[모든 웹 개발자는 URL 인코딩에 대해 알아야 할 사항] (http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding) - 리디렉션 URL을 다시 한 번 살펴보고 '&'가 의미하는 것을 두 번 생각하십시오. – deceze

답변

1

귀하의 문제는 당신이 당신의 쿼리 문자열을 인코딩하지 않는다는 것입니다. 전체 URL을 반환하여 login.php에서 [ '선택'] $ _GET을해야 차례에 logout.php 마녀 당신에게 $ _GET [ '임시']의 전체 URL을 제공해야

$url = urlencode($_SERVER["REQUEST_URI"]); 
if ($logged_in == 0 && (!isset($_COOKIE['autologin']))) 
{ 
    $goback ="http://intra.tobiasfransman.net/hallinta/logout.php?temp=$url"; 
    header ("Location: $goback"); 
} 

.

+0

안녕하세요, 여전히 그것은 login.php 페이지에서 /forum/index.php?id=1을 출력합니다. id = 1 후에 깨집니다. – user2023042

+0

URL에 전체 링크가 표시됩니다 .. – user2023042

+0

브라우저 URL에 올바르게 표시됩니다. login.php? select =/foorumi/index.php? id = 1 & go = 1 & page = 2 & show = 129 그러나 login.php 페이지에서 $ _GET [ 'select']를 사용하여 선택하면 안됩니다. 그것은 단지 /foorumi/index.php?id=1 – user2023042

1

다른 URL에 GET var에로 요청 URI를 가하고 있습니다 것처럼, 당신은 먼저 탈출해야합니다

$url = urlencode($_SERVER["REQUEST_URI"]); 
관련 문제