SWFUpload的破坏会话? PHP [英] swfupload destroy session? php
问题描述
HY,我需要一些帮助在这里:
我使用的SWFUpload上传图片!
在上传的功能,我做的一个文件夹调用 $ _ SESSION ['文件夹']
和所有的文件我上传的都是1阵列通话 $ _ SESSION ['文件']
后上传完成I 的print_r($ _ SESSION)
但阵列是空的?为什么?
这是我的upload.php的:
如果($ _ FILES ['形象'] ['名']){
列表($名称,$错误)=上传('形象','JPEG,JPG,PNG');
如果($错误){$结果= $误差;}
如果($名){//上传成功
$结果=水印($名);
打印'< IMG SRC =上传/'.$_ SESSION ['目录'。'/'$结果。'/>'; }其他{//上传由于某种原因失败。
打印NONAME$结果。
}
}函数上传($的file_id,$类型=){
如果($ _ FILES [$ FILE_ID] ['名']!)返回阵列('','没有指定的文件');
$ isimage = @getimagesize($ _ FILES [$ FILE_ID] ['tmp_name的值']);
如果(!$ isimage)返回阵列('','不JPG'); $ FILE_TITLE = $ _FILES [$ FILE_ID] ['名'];
//获取文件扩展名
$ ext_arr =拆分(\\,基本名($ FILE_TITLE));
$ EXT =用strtolower($ ext_arr [计数($ ext_arr)-1]); //获取最后一次延长 //不是真的潮头 - 但对于所有的实际原因,
$ uniqer = SUBSTR(MD5(uniqid(RAND(),1)),0,10);
// $ FILE_NAME = $ uniqer。 _。 $ FILE_TITLE; //获取唯一名称
// $ FILE_NAME = $ FILE_TITLE;
。$ FILE_NAME = $ uniqer $ EXT; $ all_types =爆炸(,,用strtolower($类型));
如果($类型){
如果(in_array($分机,$ all_types));
其他{
$结果=[名字'。是不是有效的文件。$ _ FILES [$ FILE_ID。'; //显示错误(如有)。
返回数组('',$结果);
}
} 如果((!使用isset($ _ SESSION ['目录'))||(!file_exists('上传/'.$_ SESSION ['目录'))){
$目录名=日期(YmdHis); // 20010310143223
$ pathtodir = $ _ SERVER ['DOCUMENT_ROOT']/ ifunk /上传/。
。$ NEWDIR = $ pathtodir $目录名;
如果(!的mkdir($ NEWDIR,0777)){返回数组('','无法创建目录');}
$ _SESSION ['目录'] = $目录名;
} 如果(!使用isset($ _ SESSION ['文件'])){$ _ SESSION ['文件'] =阵列();}
//如果该文件必须上传到
$文件夹='上传/'.$_ SESSION ['目录'。'/';
//如果($文件夹)$文件夹='/'。 //在文件夹的末尾添加/
$ uploadfile = $文件夹$ FILE_NAME。 $结果='';
//从所存储的位置将文件移动到新的位置
如果(!move_uploaded_file($ _ FILES [$ FILE_ID] ['tmp_name的值'],$ uploadfile)){
$结果=无法上传文件[名字'。'$ _ FILES [$ FILE_ID。'; //显示错误(如有)。
如果(!file_exists($文件夹)){
。$结果=:文件夹不存在。
} ELSEIF(!is_writable($文件夹)){
。$结果=:文件夹不可写。
} ELSEIF(!is_writable($ uploadfile)){
。$结果=:文件没有写。
}
$ FILE_NAME =''; }其他{
如果(!$ _ FILES [$ FILE_ID] ['大小']){//检查文件由
@unlink($ uploadfile); //删除空文件
$ FILE_NAME ='';
$结果=空文件中找到 - 请使用有效的文件。 //显示错误信息
}其他{
// $ _ SESSION ['文件'] =阵列();
$ _SESSION ['文件'] [] = $ FILE_NAME。
CHMOD($ uploadfile,0777); //使人人皆可写。
}
} 返回数组($ FILE_NAME,$结果);
}
SWFUpload的不会话ID传递给脚本,当您上传,所以你必须这样做你自己。简单地传递会话ID的GET或POST参数来上传脚本,然后在你的应用程序做到这一点的session_start前:
如果(使用isset($ _ REQUEST ['PHPSESSID'])){
SESSION_ID($ _ REQUEST ['PHPSESSID']);
}
hy, i need a little help here:
i use SWFupload to upload images!
in the upload function i make a folder call $_SESSION['folder']
and all the files i upload are in 1 array call $_SESSION['files']
after uploads finish i print_r($_SESSION)
but the array is empty? why that?
this is my 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);
}
SWFUpload doesn't pass the session ID to the script when you upload, so you have to do this yourself. Simply pass the session ID in a get or post param to the upload script, and then in your application do this before session_start:
if(isset($_REQUEST['PHPSESSID'])) {
session_id($_REQUEST['PHPSESSID']);
}
这篇关于SWFUpload的破坏会话? PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!