Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器+;TankAuth+;Swfupload无法获取记录器用户id_Php_Codeigniter_Swfupload_Tankauth - Fatal编程技术网

Php 代码点火器+;TankAuth+;Swfupload无法获取记录器用户id

Php 代码点火器+;TankAuth+;Swfupload无法获取记录器用户id,php,codeigniter,swfupload,tankauth,Php,Codeigniter,Swfupload,Tankauth,我正在使用安装了TankAuth库的Codeigniter,并试图从swfupload上传到index.php/requests/doUpload,但无法通过身份验证访问页面。我在网上读过很多关于类似问题的帖子,并试图将$config['sess\u match\u useragent']=FALSE但仍然没有区别。出于测试目的,我最终跳过了控制器中的登录检查。但是现在我需要从我的控制器访问tankAuth库来获取当前登录的用户ID。它是在我的应用程序中请求的,不能跳过它,我真的需要将登录的用户

我正在使用安装了TankAuth库的Codeigniter,并试图从swfupload上传到index.php/requests/doUpload,但无法通过身份验证访问页面。我在网上读过很多关于类似问题的帖子,并试图将
$config['sess\u match\u useragent']=FALSE但仍然没有区别。出于测试目的,我最终跳过了控制器中的登录检查。但是现在我需要从我的控制器访问tankAuth库来获取当前登录的用户ID。它是在我的应用程序中请求的,不能跳过它,我真的需要将登录的用户ID传递给那个双负载模型。我有如下设置控制器:

function doUploadFileFn() {
        if (!$this->tank_auth->is_logged_in()) {
            return;
        } else {
            $user_id = $this->tank_auth->get_user_id();
            $this->load->model('requests/doUploadFile');
            $this->doUploadFile->uploadData($user_id);
            }

    }
现在,它没有通过is_logged_in()检查,正如我从其他帖子中了解到的,CI删除了会话,但我已将配置设置为与用户代理不匹配,但仍然无法工作


有什么解决办法吗?

值得一提的是,Flash文件应该与您的CI站点来自同一个域,否则其中一个站点将无法读取另一个站点的cookie。还要确保登录cookie路径设置为根路径。如果SWFUpload无法读取登录cookie,则它也无法发送该cookie

闪存对会话cookie的访问有限。您是否可能设置了自动登录以避免设置过期(在config/tank_auth.php中),从而使其成为会话cookie?如果是这种情况,则SWFUpload SWF可能无法访问或发送autologin cookie值,具体取决于计算机上Flash player的版本。使用诸如Firebug之类的调试工具仔细检查cookie过期值,看看是否存在这种情况。如果在选中“记住”我复选框时上传工作正常,则表明存在会话cookie问题


要强制SWF在文件上载时传递TankAuth cookie值,可以首先重载cookie助手get\u cookie函数,以便在$\u cookie数组或$\u POST数组中查找值。然后,这似乎是发送autologin密钥的方式,它将允许您的控制器获取用户id。但是在破解Cookie helper之前,请确保您的移动部件首先正常工作,如第一段所述。

按照中的教程,我能够实现您的要求。
1) 将其放入SWFUpload JS配置中:

post_params: {"<?php echo $this->config->item('sess_cookie_name'); ?>" :"<?php echo $this->session->get_cookie_data(); ?>"},
否则,将为useragent创建一个新会话
Shockwave Flash

编辑:好的,根据您的评论。.您确实需要将
post_参数设置为当前会话,以便在flash
post
发送到控制器时可以将其发送,现在在您的情况下,我能想到的最好的方法如下:
您的externalUntouchableJsFile.js:

// JS scripts...  
...
var swfu = new SWFUpload({  
    ...
    ...
    post_params: GLOBAL_VAR,
    ...
});  
    ...  
// rest of your JS
在PHP视图中,在加载此JS文件之前,请执行以下操作:

<script>  
var GLOBAL_VAR = {};  
<?php if(session_is_there) { ?>
GLOBAL_VAR = {"<?php echo $this->config->item('sess_cookie_name'); ?>" :"<?php echo $this->session->get_cookie_data(); ?>"}
<?php } ?>  
</script>
<script type="text/javascript" src="<?php echo base_url() ?>path/to/js/externalUntouchableJsFile.js"></script>

通过在URL中传递记录的用户ID,并使用URL函数从Javascript中获取,我成功地对此进行了粗略的修复。这是我现在可以依赖的最好的方法,用户ID是可见的,这对我来说并没有太大影响,因为我使用的是托管iframe来显示应用程序的特定部分,并且应用程序仅供公司内部使用


谢谢你的回答。

我已经有了这个配置,只是我不能像那样传递参数,因为我使用的是JS文件来启动脚本,而不是PHP文件。我不能提出这样的变量。只有当我使用一个带有JS头的PHP文件时,我才会这样做,但我不会预先提供这个方法。谢谢
<script>  
var GLOBAL_VAR = {};  
<?php if(session_is_there) { ?>
GLOBAL_VAR = {"<?php echo $this->config->item('sess_cookie_name'); ?>" :"<?php echo $this->session->get_cookie_data(); ?>"}
<?php } ?>  
</script>
<script type="text/javascript" src="<?php echo base_url() ?>path/to/js/externalUntouchableJsFile.js"></script>
post_params: (typeof GLOBAL_VAR === 'undefined') ? {}:GLOBAL_VAR,