【问题标题】:Uploadify is destroying session before uploadUploadify 在上传之前正在销毁会话
【发布时间】:2013-10-12 03:27:41
【问题描述】:

我们都知道 Uploadify 存在会话问题。当我浏览帖子时,我找到了解决问题的方法,即我需要通过 ajax 传递会话。

但问题是,每当我转到包含上传内容的页面时,它通常会在刷新后破坏会话。我什么都没上传。 '。

例如,我进入了一个包含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.     
}

【问题讨论】:

  • 您能否更清楚地描述问题所在并展示您用于解决问题的代码?
  • 你怎么知道是会话在起作用?您确定没有其他导致页面重新加载的 JavaScript 错误吗?
  • 是的。我尝试删除 jqeur.uploadify.js 的路径并且 SESSION 没有被破坏。
  • 另外,我打印了会话,它返回 0

标签: php jquery ajax session uploadify


【解决方案1】:

您是否尝试将 PHPSESSID 替换为 sec_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.     
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2011-11-25
    相关资源
    最近更新 更多