编程语言
首页 > 编程语言> > 会话变量未传递到uploadify.php

会话变量未传递到uploadify.php

作者:互联网

我需要为用户名使用会话变量,以在uploadify(版本3.1)中指定上传路径.在uploadifive.php中,使用以下方法效果很好:

$uploadDir = 'media/' . $_SESSION["user_name"] . '/';

但是在uploadify中,当我使用相同的代码时,文件仅被上传到媒体文件夹(忽略用户文件夹).我已经在uploadify.php中回显了$_SESSION [“ user_name”],并使用onUploadSuccess函数检索了此信息,尽管启动了会话,但确实没有将用户名变量传递给uploadify.php.

可以与uploadifive一起使用,而不与uploadify一起使用似乎很奇怪.我对PHP不太了解,希望对此有所帮助.

我在下面包含完整的uploadify.php脚本.

谢谢,

缺口

<?php
session_start();
/*
Uploadify
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
// Define a destination
$targetPath = 'media/' . $_SESSION["user_name"] . '/';

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetFile = $targetPath . $_FILES['Filedata']['name'];

    // Validate the file type
    $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
    $fileParts = pathinfo($_FILES['Filedata']['name']);

    if (in_array($fileParts['extension'],$fileTypes)) {
        move_uploaded_file($tempFile,$targetFile);
        echo '1';
    } else {
        echo 'Invalid file type.';
    }
}
?>

解决方法:

我也偶然发现了这个问题.

Uploadify Flash文件是调用PHP脚本而不是浏览器的文件,这意味着PHP会话不会从浏览器传播到Flash并传播到服务器,您只需通过$_GET /传递会话ID. $_POST使问题消失.

在HTML文件中:

<input type="hidden" id="sessionid" value="<?php echo session_id(); ?>" />

在javascript文件中:

$('#image').uploadify({
    'uploader'  : '/uploadify-v2.1.4/uploadify.swf',
    'script'    : '/uploadify.php',
    'cancelImg' : '/uploadify-v2.1.4/cancel.png',
    'folder'    : '/tempfiles',
    'auto'      : true,
    'multi'     : false,
    'scriptData': { 'session': $('#sessionid').val() }
});

在PHP文件中:

if ( isset($_REQUEST['session']) && !empty($_REQUEST['session']) ) {
    session_id($_REQUEST['session']);
}
session_start();

会话配置设置为auto_start时似乎出现了问题(但我尚未对此进行全面测试).

documentation of Uploadify中也提到了这一点.

标签:upload,uploadify,session,php
来源: https://codeday.me/bug/20191201/2079718.html