2011-10-31 11 views
2

私は(少なくとも私にとっては)まともなプロジェクトの最後のレースにいるので、私のAjaxリクエストがロードしているURLに$ _SESSIONデータを送信しないという問題が発生しています。 Gdataを使用してYouTubeのファイルのアップロードを自動化しようとしています。私はjQueryを使ってajaxリクエストを行いますが、PHPスクリプトと呼ばれる私のajaxで$ _SESSION ['sessionToken']をテストすると、何も得られません。ここで

は私のコードですが、それはスクリプトをアップロードするYouTubeに呼び出しています:

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 

     }); 
} 

それは私が認証だと考えていると私は、upload.phpに沿っはsessionTokenを送ることができますどのように?

+0

ここには本当に便利なコードが含まれています。私は基本的にちょうど "session:sessionString"のようなものを.ajaxリクエストに追加する方法を望んでいます。 – Adam

+0

$ _SESSIONの中の何かは、サーバー上でのみでクライアント上ではありません。あなたは、トークンがブラウザから(通常はクッキー経由で)送信されていることを確認する必要があります。 – hafichuk

+0

私はクッキーを持っていることを知っています。私がインクルードしたスクリプトに$ _SESSION ['sessionToken']をエコーすることができ、トークンの値がわかります。私はこの値を自分のAjaxリクエストのヘッダに入れたいのですが、 – Adam

答えて

2

最初に: あなたのAjax呼び出しで「トークン」変数を送信していません。トークン変数を含まない変数dataStringを送信しています。 あなたは$をチェックする必要がありますので、あなたがGETを使用している呼び出しにのみ、POSTでのAjaxを送ったり、あなたのAjaxで

を得ることができます:あなたが第二は

...

var token="<?php echo $_GET['token'];?>"; 
var dataString = 'videoId='+ fields[0]; // + '&token=' + token; 
をトークン部分をコメントアウトしています_取得する; $ _SESSIONではありません。

+0

GETトークンはワンタイム使用トークンGdataは1回のアップロードでうまく動作するようになりますが、その後のアップロードは失敗します。私のuploadVideos()関数は再帰的なので、複数回呼び出す必要があります。それを実現するトークン。私の要求はまだGETかP OST(この場合GET)が、私はクッキーを設定できるはずです。右? – Adam

+1

$ _SESSION – Christian

+0

から読み込む前にupload.phpのsession_start()を呼び出してみてください。 @Christianに同意する。セッションにアクセスする必要があるすべての場所でsession_start()を呼び出すことを忘れましたか? Ajaxはスクリプトを呼び出すブラウザと同じようにセッションIDを送り返します。 – iWantSimpleLife

関連する問題