2010-03-26 116 views
2

hy,我需要一點幫助:swfupload銷燬會話? php

我使用SWFupload上傳圖片! 在上傳功能我讓一個文件夾調用$_SESSION['folder']和我上傳的所有文件都在1數組調用$_SESSION['files']上傳完成後我print_r($_SESSION)但數組是空的?爲什麼?

這是我的upload.php的:

if($_FILES['image']['name']) { 
    list($name,$error) = upload('image','jpeg,jpg,png'); 
    if($error) {$result = $error;} 
    if($name) { // Upload Successful 
     $result = watermark($name); 
     print '<img src="uploads/'.$_SESSION['dir'].'/'.$result.'" />'; 

    } else { // Upload failed for some reason. 
     print 'noname'.$result; 
    } 
} 

function upload($file_id, $types="") { 
    if(!$_FILES[$file_id]['name']) return array('','No file specified'); 
    $isimage = @getimagesize($_FILES[$file_id]['tmp_name']); 
    if (!$isimage)return array('','Not jpg'); 

    $file_title = $_FILES[$file_id]['name']; 
    //Get file extension 
    $ext_arr = split("\.",basename($file_title)); 
    $ext = strtolower($ext_arr[count($ext_arr)-1]); //Get the last extension 

    //Not really uniqe - but for all practical reasons, it is 
    $uniqer = substr(md5(uniqid(rand(),1)),0,10); 
    //$file_name = $uniqer . '_' . $file_title;//Get Unique Name 
    //$file_name = $file_title; 
    $file_name = $uniqer.".".$ext; 

    $all_types = explode(",",strtolower($types)); 
    if($types) { 
     if(in_array($ext,$all_types)); 
     else { 
      $result = "'".$_FILES[$file_id]['name']."' is not a valid file."; //Show error if any. 
      return array('',$result); 
     } 
    } 

    if((!isset($_SESSION['dir'])) || (!file_exists('uploads/'.$_SESSION['dir']))){ 
     $dirname = date("YmdHis"); // 20010310143223 
     $pathtodir = $_SERVER['DOCUMENT_ROOT']."/ifunk/uploads/"; 
     $newdir = $pathtodir.$dirname; 
     if(!mkdir($newdir, 0777)){return array('','cannot create directory');} 
     $_SESSION['dir'] = $dirname; 
    } 

    if(!isset($_SESSION['files'])){$_SESSION['files'] = array();} 
    //Where the file must be uploaded to 
    $folder = 'uploads/'.$_SESSION['dir'].'/'; 
    //if($folder) $folder .= '/'; //Add a '/' at the end of the folder 
    $uploadfile = $folder.$file_name; 

    $result = ''; 
    //Move the file from the stored location to the new location 
    if (!move_uploaded_file($_FILES[$file_id]['tmp_name'], $uploadfile)) { 
     $result = "Cannot upload the file '".$_FILES[$file_id]['name']."'"; //Show error if any. 
     if(!file_exists($folder)) { 
      $result .= " : Folder don't exist."; 
     } elseif(!is_writable($folder)) { 
      $result .= " : Folder not writable."; 
     } elseif(!is_writable($uploadfile)) { 
      $result .= " : File not writable."; 
     } 
     $file_name = ''; 

    } else { 
     if(!$_FILES[$file_id]['size']) { //Check if the file is made 
      @unlink($uploadfile);//Delete the Empty file 
      $file_name = ''; 
      $result = "Empty file found - please use a valid file."; //Show the error message 
     } else { 
      //$_SESSION['files'] = array(); 
      $_SESSION['files'][] .= $file_name; 
      chmod($uploadfile,0777);//Make it universally writable. 
     } 
    } 

    return array($file_name,$result); 
} 

回答

3

SWFUpload在上傳時不會將會話ID傳遞給腳本,因此您必須自己執行此操作。只需將會話ID以get或post參數傳遞給上傳腳本,然後在應用程序中在session_start之前執行此操作:

if(isset($_REQUEST['PHPSESSID'])) { 
    session_id($_REQUEST['PHPSESSID']); 
} 
1

必須在會話ID傳送SWFUpload實例使用的上傳文件。 更多詳情here