2014-02-28 2 views
0

세션 변수를 설정 해제 할 때 문제가 있습니다.

하나의 PHP 스크립트에서 나는 홈 페이지로 사용자를 리디렉션하고 다음을 수행 다음 세션 변수

$_SESSION['flash_message'] = "Information successfully added!"; 

을 만듭니다

var_dump($_SESSION); 

if (isset($_SESSION['flash_message']) { 
    $message = $_SESSION['flash_message']; 
    echo $message; 
    unset($_SESSION['flash_message']); 
} 
var_dump($_SESSION); 
var_dump($message); 

문제뿐만 아니라이 설정되지를 않는다는 것입니다 $_SESSION['flash_message'] 또한 $message을 설정 해제합니다.

아무 것도 설정하지 않으면 모든 3 var_dump과 에코로부터 응답을받습니다.

내가 할 경우

if (empty($message)) { 
unset($_SESSION['flash_message']); 
} 

그럼 아무것도 설정되지 얻을 수없고, 다시 내가 값을 4 번 볼 수 있습니다;

이런 종류의 동작을 일으키는 원인이 될 수있는 사람이 있습니까? 그 두 $example를 통해으로 접근 할 수 것입니다, $_POST['example']$_GET['example']경우

+3

'위해서 var_dump ($ _ SESSSION);'너무 많은 S가 –

+0

인 경우 나를 위해 작동합니다. http://phpfiddle.org/main/code/ef2-t7f – Populus

+0

내게도 너무 효과적입니다. 응용 프로그램, 그래서 그것은 내 응용 프로그램에서 뭔가 알고 있지만 그것이 무엇인지 알아낼 수 없습니다. –

답변

0

모두에게 감사, 나는 아직도 정확히이 문제의 원인이 무엇인지 확실하지 않지만, 해결책을 발견합니다.

어쨌든 나는 이제 Session 클래스를 사용하여 메시지의 설정과 해제를 처리하고있다. 내 세션 클래스에서

지금이 수행 내 컨트롤러에서

function __construct() { 
    session_start(); 
    $this->check_message(); 
} 

    public function message($msg=""){ 
    if(!empty($msg)){ 

     $_SESSION['message'] = $msg; 
    }else{ 
     // get message 
     return $this->message; 
    } 
} 


    private function check_message(){ 

    if(isset($_SESSION['message'])){ 
     // Add it to an attribute and erase the stored version 
     $this->message = $_SESSION['message']; 
     unset($_SESSION['message']); 
    }else{ 
     $this->message = ""; 
    } 
} 

을 나는이 수행

$session->message("Details successfully updated!"); 

을 그리고 내보기 :

$helper->display_message($errors, $session->message, $errors_heading); 
1
당신은 register_globals
의 값을 확인 할 수 있습니다

당신은 htaccess로 파일에 오프에

php_flag register_globals off 

을 설정할 수 있습니다.
는 논리에 해제을 적용하고, 그 var에 설정되지 않은 이유를 알고

+0

*이 기능은 PHP 5.3.0부터는 사용이 권장되지 않았으며 PHP 5.4.0부터는 제거되었습니다. * [http://www.php.net/manual/en/security.globals.php] – MisterBla

+0

더하다. 그것은 단지 그것이 작동하는 것은 어리 석다. 하지만 TS는 PHP 버전에 대해서는 아무 말도하지 않았으며 다음과 같이 들릴 것입니다 : – Martijn

+0

고마워요.하지만 PHP5.5에서 실행하고 있습니다. register_globals –

관련 문제