Frage

hy, ich brauche ein wenig Hilfe hier:

i verwenden SWFUpload zum Hochladen Bilder! in der Upload-Funktion machen i einen Ordner Aufruf $_SESSION['folder'] und alle Dateien, i-Upload in 1-Array Anruf $_SESSION['files'] sind nach Uploads beenden print_r($_SESSION) i aber das Array ist leer? warum das?

Das ist mein 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);
}
War es hilfreich?

Lösung

SWFUpload nicht die Session-ID an das Skript übergeben, wenn Sie laden, so dass Sie diese Texte selbst zu tun haben. Übergeben Sie einfach die Session-ID in einem Get oder Post param auf die Upload-Skript, und dann diese in der Anwendung tun, bevor session_start:

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

Andere Tipps

müssen Sie die Session-ID in der Upload-Datei von swfupload verwendet passieren. Weitere Informationen hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top