2013-03-26 2 views
0

$ _GET 변수가 내 URL의 다른 변수 값으로 설정되도록하고 싶습니다. 그렇지 않으면 페이지/URL을 설정 변수를 표시하도록 새로 고침하고 싶습니다. 다음 코드를 사용하는 코드입니다.PHP - GET 변수로 URL 다시로드

session_start(); 
$openfile = $_SESSION['openfile']; 
//check if $GET variable isset to the current $SESSION variable 
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){ 
//if not then create new URL string 
    $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile; 
//change location to new URL string 
    header("Location: $hloc"); 
} 

왜 작동하지 않는 지 이해할 수 없습니다. 도움이 될 것입니다. 감사.

편집 : 문제는 URL이 헤더 정보의 내용을 반영하지 않는다는 것입니다. 페이지가 다시로드되면이 문제는 잘 해결됩니다. 그러나 이것은 분명히 내가 원하는 것이 아닙니다.

답변

0

문제점을 발견했습니다.

스크립트 아래로 잘못된 헤더 정보가있는 것이 원인이었습니다.

0

예제 URL을 제공하여 그 URL이 코킹되는지 확인할 수 있습니까? 그 대신에 이것을 시도하십시오. $hloc는 따옴표 밖에 지금 얼마나 참고 :

session_start(); 
//check if $GET variable isset to the current $SESSION variable 
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){ 
//if not then create new URL string 
    $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile; 
//change location to new URL string 
    header("Location: " . $hloc); 
} 
+0

아직 효과가 없습니다. –

2
if(isset($_GET['file'])) { 
    //its set means value is not equal to null or false 
} else { 
    //its not set so redirect 
} 

http://php.net/manual/en/function.isset.php

+0

사실이 아닙니다. 'if'에서 [값은'false' 일 수 있습니다.] (http://viper-7.com/a8vApc). – nickb

+0

내 코드를 보면 if 문이 문제가 아닌 것을 볼 수 있습니다. 질문을 읽으면 리디렉션이 내가 원하는 URL을 표시하지 않는다는 것을 알 수 있습니다. –

0

실수 있습니다. Undefined variable: openfile.

변경이 줄을

$hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile;

$ openvariable이 (포스터 코멘트에 따라) 설정으로

$hloc = basename($_SERVER['PHP_SELF']).'?file='.$_SESSION['openfile']; 

, 그래서에만 오류가로 : SESSION 변수 중 하나 또는 변수는 아니다 GET 다음 코드는 완벽하게 작동합니다.

<?php 
session_start(); 
$_SESSION['openfile']='foo'; 
$_GET['file']='bar'; 
$openfile = $_SESSION['openfile']; 
//check if $GET variable isset to the current $SESSION variable 
if($_GET['file'] !== $_SESSION['openfile'] && !empty($_SESSION['openfile'])){ 
//if not then create new URL string 
    $hloc = basename($_SERVER['PHP_SELF']).'?file='.$openfile; 
//change location to new URL string 
    header("Location: $hloc"); 
} 
?> 

구문 상으로는 코드가 완벽 해 보입니다. 따라서 GET 변수와 세션 변수가 모두 설정되어 있는지 제대로 확인하십시오.

첫 번째 이 내용은header("Location: $hloc");입니다. 넣어 :

echo $_GET['file']; 
echo $_SESSION['openfile']; 

경우 이전 상태와 당신이 추적하고 버그를 알고 도움이 될 것입니다 output.It을 확인합니다.

+0

죄송합니다. 예제 코드를 너무 많이 사용하지 않았습니다. $ openfile이 세션 변수 $ _SESSION [ 'openfile']으로 설정되었습니다. –