> 백엔드 개발 > PHP 튜토리얼 > javascript - 세션을 설정하지 못했습니다.

javascript - 세션을 설정하지 못했습니다.

WBOY
풀어 주다: 2016-08-18 09:15:52
원래의
1357명이 탐색했습니다.

은 이미지 업로드 플러그인 uploadify를 사용했습니다. IE 및 Firefox에서 업로드할 때 발생하는 302 오류로 인해 현재 세션 이름 session_name()을 프런트엔드의 백엔드에 전달하여 다시 세션을 수립했는데, 아래와 같이 백그라운드에서 session_name()의 매개변수를 받을 수 있는데, 세션을 다시 수립할 때 실패하는 경우 어떻게 해결하나요?

프런트 데스크:

<code>//这是uploadify插件向后端传送数据的参数
'formData'     : {
     'timestamp' : '<?php echo $timestamp;?>',
     'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',
     '<?php echo session_name();?>' : '<?php echo session_id();?>',
     //上面的session参数渲染后是这样:'PHPSESSID':'',
            },</code>
로그인 후 복사
로그인 후 복사

백엔드:

<code>//这是一个公共的控制器的初始化方法 里面验证登陆
function __construct() {
    parent::__construct();
    $session_name = session_name();  
    $post_session_name = $this->input->post($session_name);
    if (isset($post_session_name)) { //测试过  可以进入这里
        session_id($post_session_name);  //但是在这个地方好想设置会话失败
        session_start();
    }
    if ( !$this->session->valid_user() ){ //因为设置会话失败 这里通不过 前端返回302
        redirect( module_url( 'common/login' ) );
    }
}
</code>
로그인 후 복사
로그인 후 복사

답글 내용:

은 이미지 업로드 플러그인 uploadify를 사용했습니다. IE 및 Firefox에서 업로드할 때 발생하는 302 오류로 인해 현재 세션 이름 session_name()을 프런트엔드의 백엔드에 전달하여 다시 세션을 수립했는데, 아래와 같이 백그라운드에서 session_name()의 매개변수를 받을 수 있는데, 세션을 다시 수립할 때 실패하는 경우 어떻게 해결하나요?

프런트 데스크:

<code>//这是uploadify插件向后端传送数据的参数
'formData'     : {
     'timestamp' : '<?php echo $timestamp;?>',
     'token'     : '<?php echo md5('unique_salt' . $timestamp);?>',
     '<?php echo session_name();?>' : '<?php echo session_id();?>',
     //上面的session参数渲染后是这样:'PHPSESSID':'',
            },</code>
로그인 후 복사
로그인 후 복사

백엔드:

<code>//这是一个公共的控制器的初始化方法 里面验证登陆
function __construct() {
    parent::__construct();
    $session_name = session_name();  
    $post_session_name = $this->input->post($session_name);
    if (isset($post_session_name)) { //测试过  可以进入这里
        session_id($post_session_name);  //但是在这个地方好想设置会话失败
        session_start();
    }
    if ( !$this->session->valid_user() ){ //因为设置会话失败 这里通不过 前端返回302
        redirect( module_url( 'common/login' ) );
    }
}
</code>
로그인 후 복사
로그인 후 복사

로그를 확인하여 오류 메시지가 있는지 확인하세요. session_id 세션이 시작되기 전에 설정해야 합니다. 이 컨트롤러의 __construct() 호출 전에 세션이 다른 곳에서 열렸나요? session_id 줄 앞에 session_abort()를 추가해 보세요.

기본값은 쿠키를 통해 session_id를 저장하는 것입니다. 쿠키가 비활성화되어 있거나 삭제되어 있는지 확인하세요

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿