0

Uploadify にセッションの問題があることは誰もが知っています。投稿を閲覧していると、ajax を介してセッションを渡す必要があるという問題の解決策が見つかりました。

しかし、問題は、uploadify を含むページに移動するたびに、通常は更新後にセッションが破棄されることです。私も何もアップロードしませんでした。'。

たとえば、uploadify スクリプトを含むページにアクセスしました。そして何もせずに別のページに行くと、自動的にログインページにリダイレクトされます*。これはセッションが破棄されたことを意味します。

Uploadify は、ファイルをアップロードする前、またはアップロード ボタンを押す前に ajax 呼び出しを行いますか?

これを解決する方法はありますか?

これは私のAjaxコードです:

$(function() {
$('#file_upload1').uploadify({
       'formData'     : {
         'PHPSESSID': '<?=session_id()?>',
         'timestamp' : '<?php echo $timestamp;?>',
         'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
        },
        'swf'      : 'uploadify.swf',
        'uploader' : 'uploadify1.php?id=<? echo $id; ?>&state=<? echo strtolower($state); ?>'

         });
});

これは私のトップPHPコードです:

session_id($_POST['PHPSESSID']);

include "func.php";
sec_session_start();

sec_session_start();関数です。だから、sec_session_start();コード:

function sec_session_start() {
        $session_name = 'sec_session_id'; // Set a custom session name
        $secure = false; // Set to true if using https.
        $httponly = true; // This stops javascript being able to access the session id. 

        ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies. 
        session_set_cookie_params(86400);
        $cookieParams = session_get_cookie_params(); // Gets current cookies params.
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
        session_name($session_name); // Sets the session name to the one set above.
        session_start(); // Start the php session
        session_regenerate_id(true); // regenerated the session, delete the old one.     
}
4

1 に答える 1

0

を に置き換えてみましたPHPSESSIDsec_session_id

$(function() {
$('#file_upload1').uploadify({
       'formData'     : {
         '<?=session_name()?>': '<?=session_id()?>',
         'timestamp' : '<?php echo $timestamp;?>',
         'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
        },
        'swf'      : 'uploadify.swf',
        'uploader' : 'uploadify1.php?id=<? echo $id; ?>&state=<? echo strtolower($state); ?>'

         });
});

あなたのPHPの上に:session_id($_POST['sec_session_id']);

また、 のsession_name($session_name)前に実行する必要がありますsession_set_cookie_params

function sec_session_start() {
        $session_name = 'sec_session_id'; // Set a custom session name
        session_name($session_name); // Sets the session name to the one set above.
        $secure = false; // Set to true if using https.
        $httponly = true; // This stops javascript being able to access the session id. 

        ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies. 
        session_set_cookie_params(86400);
        $cookieParams = session_get_cookie_params(); // Gets current cookies params.
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
        session_start(); // Start the php session
        session_regenerate_id(true); // regenerated the session, delete the old one.     
}
于 2013-10-12T05:26:58.960 に答える