2011-10-31 1 views
2

나는 (적어도 나를 위해) 괜찮은 프로젝트의 마지막 다리에 있는데, 나는 내 아약스 요청이 그들이로드하고있는 URL에 $ _SESSION 데이터를 보내지 않는 문제에 직면 해있다. Gdata를 사용하여 YouTube 파일 업로드를 자동화하려고합니다. jQuery를 사용하여 아약스 요청을하지만, PHP 스크립트라는 아약스에서 $ _SESSION [ 'sessionToken']을 테스트하면 아무 것도 얻지 못합니다.

여기 내 코드는이 유튜브 스크립트를 업로드 부르고,이다 :

function uploadVideos(id, upload, selected) { 
     var status = document.getElementById('currentStatus'); 
     var fields = upload[id].split(":", 2); 

     var token="<?php echo $_GET['token'];?>"; 
     var dataString = 'videoId='+ fields[0]; // + '&token=' + token; 

     id++; 
     status.innerHTML = "<b>Videos for Upload:</b>&nbsp;&nbsp;&nbsp; <h3 class='status'>Currently Updating Bout #" + fields[1] + " (" + id + " of " + upload.length + " videos)</h3>"; 

     $.ajax({ 
      type: "GET", 
      url: "upload.php", 
      data: dataString, 
      success: function(txt) { 
       if (txt != 'Success') { 
        alert(txt); 
       } 

       if (id < upload.length) { 
        uploadVideos(id, upload, selected); 

       } else { 

        status.innerHTML = "<b>Videos for Upload:</b>&nbsp;&nbsp;&nbsp; <h3 class='status'>Completed</h3>"; 
       } 

       //deselect the checkbox 
       document.videos.video[selected[id-1]].checked = false; 
       document.videos.video[selected[id-1]].style.display = 'none'; 
      }, 
      async: true 

     }); 
} 

그것이 내가 인증 해요 생각에 어떻게 sessionToken이 함께 upload.php로 보낼 수?

+0

아마도 여기에 더 많은 코드가 포함되어있어 정말 유용합니다. 기본적으로 .ajax 요청에 "session : sessionString"과 같은 것을 추가하는 방법이 필요합니다. – Adam

+0

명확하지 않은 경우를 대비하여 $ _SESSION의 모든 항목은 서버에만 있고 클라이언트에는 없습니다. 토큰이 일반적으로 쿠키를 통해 브라우저에서 전송되는지 확인해야합니다. – hafichuk

+0

나는 쿠키가 있다는 것을 알고있다. 포함 된 내 스크립트에 "$ _SESSION [ 'sessionToken']을 표시 할 수 있으며 토큰의 값을 볼 수 있습니다.이 값을 내 Ajax 요청의 헤더에도 넣고 싶지만 어떻게 계산할 수 있습니까? – Adam

답변

2

첫 번째 : Ajax 호출과 함께 "토큰"변수를 전송하지 않습니다. 토큰 변수를 포함하지 않는 dataString 변수를 보내고 있습니다. 당신은

var token="<?php echo $_GET['token'];?>"; 
var dataString = 'videoId='+ fields[0]; // + '&token=' + token; 

둘째 ... 토큰 부분을 댓글을 달았 : 당신은 POST와 Ajax를 보내거나 당신이 GET을 사용하는 호출하여 아약스에서

를 얻을 수 있습니다, 당신은 $ 확인해야하므로 _도망; $ _SESSION이 아닙니다.

+0

GET 토큰은 한 번 사용 토큰이기 때문에 주석으로 처리했습니다. 하나의 업로드를 위해 작동하도록 할 수는 있지만 후속 업로드가 실패합니다. 내 uploadVideos() 함수가 재귀적임을 알 수 있으므로 여러 번 호출 할 수 있어야합니다 .Gdata는 세션을 사용해야합니다. 내 토큰은 GET 또는 P 중 하나입니다. OST (이 경우에는 GET)하지만 쿠키를 설정할 수 있어야합니다. 권리? – Adam

+1

$ _SESSION – Christian

+0

예를 읽기 전에 upload.php에서 session_start()를 호출하십시오. @Christian에 동의합니다. 세션에 액세스해야하는 모든 장소에서 session_start()를 호출하는 것을 잊지 않았습니까? Ajax는 여전히 스크립트를 호출하는 브라우저이므로 세션 ID를 다시 보내야합니다. – iWantSimpleLife