php文件上传(详细方法)
/**
*文件的上传:
*1.单个文件上传
*2.多个文件上传
*一、php配置文件中和上传有关的配置选项【经测试,修改配置文件修改的是wamp下的apache下的php.ini】
*php.ini里面
*file_uploads=on是必须的,不然文件写得再对都上传不到服务器上。
*upload_max_filesize=20M这个值一定不要超过服务器的内存大小。
*post_max_size=250M这个值是post的最大值,一定要比上传文件的最大值要大。
*上传上去的数据临时存在什么地方?
upload_tmp_dir=c:/uploads/
*在脚本执行完以后,临时文件会删除,所以在脚本执行完以前一定要把你上传的文件copy出来,不然就没了。
*
*二、上传需要注意的事项
*文件上传表单需要注意什么?
* 1.如果有文件上传操作,表单的提交方法method=post,
必须用post。
* 2.表单上传需要使用类型为file的input
* 3.enctype="multipart/form-data"只有文件上传时才用这个,用来指定表单编码的数据方式。让服务器知道我们要传递文件。
*并带有一些常规的信息。加在form里面和method一样。*三、php处理上传的数据
*$_POST提取post方法提交的的表单数据,如果是文件上传的数据则使用$_FILES接收文件,而$_POST接收
*非文件数据。所以当要上传文件时用两种方法接收数据。点击上传后只要将临时文件移动到目标文件夹中就成功了。
*array(size=4)
'shopname'=>string'得到'(length=6)
'shoppri'=>string'得到'(length=6)
'shopnum'=>string'得到'(length=6)
'sub'=>string'添加商品'(length=12)
array(size=1)
'pic'=>
array(size=5)
'name'=>string'11112907_124211588000_2[1].jpg' (length=30)
'type'=>string'image/jpeg'(length=10)
'tmp_name'=>string'D:\wamp\tmp\phpDAA.tmp' (length=22)
'error'=>int0
'size'=>int288127
**/
header("Content-Type:text/html;charset=utf-8");
date_default_timezone_set("PRC");//设置时区
if(isset($_POST["sub"])){
//var_dump($_POST);
//var_dump(__FILE__);//string
'D:\wamp\www\mytest\10-29-fileupload01.php'
(length=41)
//var_dump($_FILES);
/*点击上传之后,执行以下操作*/
//1.使用$_FILES["pic"]["error"]检查错误
if($_FILES['pic']['error']>0){
switch($_FILES['pic']['error']){
case1:
echo"上传的文件超过了php.ini中upload_max_filesize选项限制的值
";
break;
case2:
echo"文件大小超过了1M
";
break;
case3:
echo"文件只有部分被上传
";
break;
case4:
echo"没有文件被上传
";
break;
default:
echo"未知错误
";
}
exit;
}
//2.使用$_FILES["pic"]["size"]限制大小
if($_FILES['pic']['size']>1000000){
echo"文件不能大于1M
";
exit;
}
//3.使用$_FILES["pic"]["type"]或文件的扩展名来限制类型。type的值是"大类型/小类型"如'image/jpeg'
//具体有些什么类型,在apache下的bin下的apache下的cof文件夹中有一个mime.types文件中查看
//如果是使用大类型来限制,缺点是只要是图片都能传上去,但我们处理不了有些类型的图片,所以不推荐大类型限制方法/*
list($dl,$xl)=explode("/",$_FILES["pic"]["type"]);
if($dl!="image"){
echo"只能上传图像文件。
";
exit;
}*/
/*建议用后缀名来限制类型*/
$types=array("jpg","jpeg","png","gif");//允许的文件类型
$hzs=explode('.',$_FILES["pic"]["name"]);
$hz=$hzs[count($hzs)-1];//从文件名中提取后缀名
if(!in_array($hz,$types)){
echo"请选择允许的文件类型
";
exit;
}
//4.使用$_FILES["pic"]["name"]改文件名和过滤非法字符。
$tmppath=dirname($_FILES['pic']['tmp_name']);//获取文件上传的临时路径
$path="./uploaded_files/";//移动到此路径下
$randname=date('Y').date('m').date("d").date('H').d ate('i').date('s').rand(100,999).'.'.$hz;//随机名//将临时文件移动到对应文件夹
if(is_uploaded_file($_FILES['pic']['tmp_name'])){
if(move_uploaded_file($_FILES['pic']['tmp_name'],$p ath.$randname)){
echo"上传成功";
}else{
echo"上传失败";
}
}else{
var_dump($tmppath.$_FILES['pic']['name']);
echo"不是上传的文件。
";
}
}
?>
php文件上传(详细方法)
必须用post。 * 2.表单上传需要使用类型为file的input * 3.enctype="multipart/form-data"只有文件上传时才用这个,用来指定表单编码的数据方式。让服务器知道我们要传递文件。 *并带有一些常规的信息。加在form里面和method一样。*三、php处理上传的数据 *$_POST提取post方法提交的的表单数据,如果是文件上传的数据则使用$_FILES接收文件,而$_POST接收 *非文件数据。所以当要上传文件时用两种方法接收数据。点击上传后只要将临时文件移动到目标文件夹中就成功了。 *array(size=4) 'shopname'=>string'得到'(length=6) 'shoppri'=>string'得到'(length=6) 'shopnum'=>string'得到'(length=6) 'sub'=>string'添加商品'(length=12) array(size=1) 'pic'=> array(size=5) 'name'=>string'11112907_124211588000_2[1].jpg' (length=30)
文件上传漏洞及解析漏洞总结
文件上传漏洞及解析漏洞总结 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。 文件上传后导致的常见安全问题一般有: 1)上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。 2)上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似); 3)上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。 4)上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。 除此之外,还有一些不常见的利用方法,比如将上传文件作为一个入口,溢出服务器的后台处理程序,如图片解析模块;或者上传一个合法的文本文件,其内容包含了PHP脚本,再通过"本地文件包含漏洞(Local File Include)"执行此脚本;等等。 要完成这个攻击,要满足以下几个条件: 首先,上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容器所覆盖到的路径。 其次,用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过Web访问,或者无法得到Web容器解释这个脚本,那么也不能称之为漏洞。 最后,用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。 一、从FCKEditor文件上传漏洞谈起 FCKEditor是一款非常流行的富文本编辑器,为了方便用户,它带有一个文件上传功能,但是这个功能却出过多次漏洞。 FCKEditor针对ASP/PHP/JSP等环境都有对应的版本,以PHP为例,其文件上传功能在:
php+html5实现无刷新上传、大文件分片上传、断点续传的方法
php+html5实现无刷新上传、大文件分片上传、断点续传的方法理清思路: 引入了两个概念:块(block)和片(chunk)。每个块由一到多个片组成,而一个资源则由一到多个块组成。 块是服务端的永久数据存储单位,片则只在分片上传过程中作为临时存储的单位。服务端会以约一个月为单位周期性的清除上传后未被合并为块的数据片。实现过程: 将文件分割,分片上传,然后合并。 前端代码:
kindEditor完整认识 PHP上调用并上传图片说明
引用: https://www.360docs.net/doc/0917951577.html,/yanghbmail/blog/item/6fc7beec9531e33462d09f2a.htm l kindEditor完整认识 PHP上调用并上传图片说明。 2011年02月03日星期四 20:26 最近又重新捣鼓了下kindeditor,之前写的一篇文章 https://www.360docs.net/doc/0917951577.html,/yanghbmail/blog/item/c681be015755160b1d9583e7.htm l感觉有点不太全面细致,所以今天再重新写下。 此文所述KE版本为当前2011年2月3日 20:10:18最新版KindEditor 3.5.2 先看下目录结构 我使用的是PHP 所以黄色区域的文件夹是可以删除的。 重命名为:kindeditor 看下我的WWW目录:
这里的关键文件就是图中的两个其它我划掉的是我自己的文件夹 -----------------dome.php----------------------
php实现上传图片保存到数据库的方法
这篇文章主要介绍了php实现上传图片保存到数据库的方法,可通过将图片保存在数据库实现多台服务器共享文件的功能,非常具有实用价值,需要的朋友可以参考下php实现上传图片保存到数据库的方法。分享给大家供大家参考。具体分析如下: php 上传图片,一般都使用move_uploaded_file方法保存在服务器上。但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外)如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间。 首先图片文件是二进制数据,所以需要把二进制数据保存在mysql数据库。 mysql数据库提供了BLOB类型用于存储大量数据,BLOB是一个二进制对象,能容纳不同大小的数据。 BLOB类型有以下四种,除存储的最大信息量不同外,其他都是一样的。可根据需要使用不同的类型。 TinyBlob 最大255B Blob 最大65K MediumBlob 最大16M LongBlob 最大4G 数据表photo,用于保存图片数据,结构如下: 代码如下: CREATE TABLE `photo` ( `id` int(10) unsigned NOT NULL auto_increment, `type` varchar(100) NOT NULL, `binarydata` mediumblob NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; upload_image_todb.php: 代码如下: <?php // 连接数据库 ","") or die(mysql_error()); @mysql_select_db('demo',$conn) or die(mysql_error()); // 判断action $action = isset($_REQUEST['action'])? $_REQUEST['action'] : ''; // 上传图片 if($action=='add'){ $image = mysql_escape_string(file_get_contents($_FILES['photo']['tmp_name'])); $type = $_FILES['photo']['type']; $sqlstr = "insert into photo(type,binarydata) values('".$type."','".$image."')"; @mysql_query($sqlstr) or die(mysql_error()); header('location:upload_image_todb.php'); exit(); // 显示图片 }elseif($action=='show'){ $id = isset($_GET['id'])? intval($_GET['id']) : 0;
php处理ftp上传文件
用php实现文件上传二法 -------------------------------------------------------------------------------- PHP(Hypertext Preprocessor)是一种HTML 内嵌式的语言(类似IIS 上的ASP)。而PHP 独特的语法混合了C、Java、Perl 以及PHP 式的新语法。它可以比CGI 或者Perl&nb sp;更快速的执行动态网页。除此之外,用PHP 写出来的Web 后端CGI 程序,可以很轻易的移植到不同的系统平台上。 我们在做网站时,需要访问者的参于才能将网站建设得更加引人注目,这就要求我们从访问者那里得到文章、图片等。因此,文件上传成为网页中必不可少的功能。现在我就利用现在流行的编程语言PHP,用两种方法来说明其功能的实现。 一、利用php的文件函数来实现上传 这段代码分为两个文件,一个为upload.html,一个是upload.php。 上传文件选择:upload.html 代码如下: --------------------------------------------------------------------------------
php多文件(图片)上传(精华版)
PHP多文件(图片)上传 总共三个文件conn.php index.php upload.php conn.php 文件 -------------------------------------------------------------------------------------------------------------- index.php 文件 --------------------------------------------------------------------------------------------------------------
上传文件 upload.php 文件PHP文件上传类
code = $seccode; $code->width = 150; $code->height = 60; $code->background = 1; $code->adulterate = 1; $code->ttf = 1; $code->angle = 1; $code->color = 1; $code->size = 1; $code->shadow = 1; $code->animator = 0; $code->display(); $code->fontpath = ROOT_PATH.'/includes/captcha/fonts/'; $code->imagepath = ROOT_PATH.'/includes/captcha/'; 简单用法 include_once(ROOT_PATH.'/includes/cls.captcha.new.php'); $seccode = 'asdf'; $code = new Captcha(); $code->code = $seccode; $code->display(); */ class Captcha { var $code; //a-z 范围内随机 var $width = 150; //宽度 var $height = 60; //高度 var $background = 1; //随机图片背景 var $adulterate = 1; //随机背景图形
php上传图片精典源码
//上传文件类型列表 $uptypes=array('image/jpg', 'image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image /x-png'); $max_file_size=5000000; //上传文件大小限制, 单位BYTE $destination_folder="../image/userhead/"; //上传文件路径 $watermark=1; //是否附加水印(1为加水印,其他为不加水印); $watertype=1; //水印类型(1为文字,2为图片) $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); $waterstring="newphp.site.cz"; //水印字符串 $waterimg="xplore.gif"; //水印图片 $imgpreview=1; //是否生成预览图(1为生成,其他为不生成); $imgpreviewsize=1/2; //缩略图比例 ?>