제출 CI와 swfupload를 결합하여 302의 해결 방안을 초기화하다

3064 단어 swfupload
PS:오늘 오전에 너무 답답했어요. 간단한 기초 문제가 많아서 헷갈렸어요. 아이고, 코드를 며칠 안 쓰면 잊어버려요.지금은 COO도 안 하고 코드를 열심히 외워야 해요!
302는 대부분 flash 플러그인이 i의 쿠키를 사용하지 않기 때문에 로그인한 hook이 sessionid를 복원할 수 없기 때문에 CI가 로그인하지 않은 줄 알고 Redirect를 형성하여 Login yemian de 302에 도달했습니다.
일찍이 어떤 사람이 문장을 쓴 적이 있다.그러나 나는 그의 방법에 따라 비록 도움이 되었지만 해결할 방법이 없어서 스스로 연구했다. 다음은 해결 방안이다.
전제: php 자체의session이 아닌 CI의session을 사용합니다
    1. 먼저 홈페이지에 가서 최신 버전의 swfupload를 다운로드하세요. 안에 swfupload가 있어요.cookies.js, 페이지에 가져오고 swfupload를 초기화한 다음refreshCookies를 따라갑니다. 이렇게 보입니다.
swfu = new SWFUpload(settings);
    swfu.refreshCookies();

    2. 이렇게 제출할 때 쿠키의 물건을post에 넣고 제출합니다. 그래서 우리는ci가 쓴 권한 갈고리에서 이 물건을 얻습니다.
$CI =& get_instance();
        if($CI->input->post('ci_session') !== false){
            //    swfupload     post   ci_session   ci
            $ci_session = urldecode($CI->input->post('ci_session'));
            $cookie = array(
                'name'   => 'ci_session',
                'value'  => $ci_session,
                'expire' => '86500'
            );
            $CI->input->set_cookie($cookie);
        }
        $CI->load->library('session');

매일 같은 이치
만약 우정이 상록수라면, 우정을 주입하는 것은 반드시 마음속의 맑은 샘에서 나온 것이다.우정이 불패의 꽃이라면, 우정을 비추는 것은 반드시 마음속에서 떠오르는 태양이다.얼마나 많은 웃음소리도 우정이 불러일으키고, 얼마나 많은 눈물도 우정이 닦아낸 것이다.우정의 항구는 온정이 넘치고, 우정의 맑은 바람은 돛을 가득 채운다.우정은 감정의 투자가 아니라 배당금과 배당금을 필요로 하지 않는다.(우정은 다른 단어로 바꿀 수 있다)
주의: 우리는load session 이전에 이 일을 하였으며, autoload에session이 있을 수 없습니다. 그렇지 않으면session의 로드가 이 갈고리보다 빠를 것입니다
    3. 이것만 가지고는 안 된다.ci는user-agent와 일치하지 않으면session을 잃어버리게 할 것이다. 잃어버리는 이 검사를 닫아도 되지만 안전 위험이 있다. 우리는ci원본을 아예 고쳐서ci가flashuser-agent에 부딪혀야 통과할 수 있다.
Session을 엽니다.php에서 이 섹션을 찾습니다.
// Does the User Agent Match?
		if ($this->sess_match_useragent == TRUE AND trim($session['user_agent']) != trim(substr($this->CI->input->user_agent(), 0, 120)))
		{
			$this->sess_destroy();
			return FALSE;
		}

안에 한 단락의 말을 추가하면 이렇게 된다.
// Does the User Agent Match?
		if ($this->sess_match_useragent == TRUE AND trim($session['user_agent']) != trim(substr($this->CI->input->user_agent(), 0, 120)))
		{
            if($this->CI->input->user_agent() != 'Shockwave Flash'){
                $this->sess_destroy();
                return FALSE;
            }
		}

다 됐어!
    
PS: 나의 swfupload 초기화 setting 대상에서 이 줄을 삭제한 것은 다음과 같다.
post_params: {"PHPSESSID" : ""},

영향이 있을지 모르겠지만, 테스트에 성공하지 못한 사람도 이렇게 삭제하세요.
    
    
    
글이 끝나면 프로그래머의 우스갯소리 어록을 공유합니다. 그것은 습관이 결정하는 것입니다. 습관을 계속 유지하는 것은 좋지 않습니다!IE6 사용자는 다중 탭에 익숙하지 않지만, 최종적으로는 다중 탭의 브라우저로 넘어가야 한다.역사(소프트웨어 UI)의 진보(개선)는 개인의 의지(습관)로 바뀌는 것이 아니다!

좋은 웹페이지 즐겨찾기