前言:
这是对昨天糊弄课程的补充,今天来看看我的PHP,文件上传过程实现的实际案例。我们来说下这次要实现的功能,首先用户可以选择文件并上传,服务器判断文件类型,并进行重新命名后保存。
ps:感谢挑错党小幻莅临挑错…
本课程中存在的错误:用尾缀分隔的方式可能导致,挂马的危险。比如1.jpg.php就可以成功挂马,应该对文件尾缀进行分隔统计后判断最终尾缀。
实现过程:
HTML中的文件选项:
//我们建立index.php为主页 <html> <body> <form action="up.php" method="POST" enctype="multipart/form-data"> 用户名:<input type="text" name="uName" ></br> 图片:<input type="file" name="uImg"></br> //file格式提交组件 <input type="submit" value="提交"> </form> </body> </html>
up.php上传页面实现过程:
<?php $name=$_POST["uName"];//获取用户名 echo $name."</br>"; $uImg=_FILES["uImg"]; //获得image内容 echo $uImg ; //此时你发现这里输出了一个数组 print_r($uImg); //array([name]=>test.jpg [type]=>inage/jpeg [tmp_name]=>c:/Windows/tmp/php6F.tmp[error]=>0[size=>99])//数组key分别为文件名称,文件类型,临时存放目录。错误信息,文件大小 [error]错误信息:0文件上传成功 1超过php.ini中文件限制大小 2超过文本域范围 3部分上传 4没有选择上传文件 …………………… ——————————————对文件尾缀进行判断—————————————————— $ext=explode(".",uImg[name]);//用explode“.”为分隔依据,分割文件名。 $extName=$uImg["1"];//获得文件尾缀 if($uImg!=jpg&&$uImg!=jpeg&&$uImg!=gif){ echo"文件格式异常!"; exit;//终止后面程序运行} ——————————————对文件大小进行判断—————————————————— if($uImg["size"]>2000000){ echo "文件过大"; exit;} ——————————————重命名———————————————————————————— $uImgname=time().rand(10000,99999).".".$uImg; $upLoadUrl="upload/".$uImgname move_uploaded_file($uImg["tmpname"],$upLoadUrl); //使用move_uploaded_file(临时目录,拷贝目录);将临时目录中的文件拷贝到指定位置。 ?>
一个最基础的,文件上传模块就这样做好了,有兴趣的同学们可以继续折腾在做个类似相册的小工具。
后记:
话说这篇文章是昨天就写好的,给自己一个偷懒的理由—今天发,其实这也是一种蓄力的说~学习超文本预处理器语言的基础一定要扎实,学一点,练一点,不熟悉绝对不能继续,每5天要复习2天。毕竟这种语言的一年自学成功率只有20%。它虽然不是很难,但是对方法和语法要求都是很高的。因为这是fangker的第一门动态语言,关于c语言这种程序之母没有太大的接触,直接上PHP这种衍生语言,更要仔细不可。
$extName=$uImg["1"];//获得文件尾缀if($uImg!=jpg&&$uImg!=jpeg&&$uImg!=gif){明显有逻辑上的错误! 在此之前 变量 uImg 应该是一个图片文件,没错吧。是你说来吐槽的,不要怪我,而且你就没运行试试?不说代码问题,就说最开始的<?php 你就写错了 ……居然成了 <php?跪了。我写了个类似的,你可以看一下。 上传txt文本的,你看看,当然,上传图片也可以。(好吧,是我记不住全部的图片Mine……)文件提交成员管理:验证密码:文件上传:$extName=$uImg["1"];//获得文件尾缀if($uImg!=jpg&&$uImg!=jpeg&&$uImg!=gif){明显有逻辑上的错误! 在此之前 变量 uImg 应该是一个图片文件,没错吧。是你说来吐槽的,不要怪我,而且你就没运行试试?不说代码问题,就说最开始的<?php 你就写错了 ……居然成了 <php?跪了。我写了个类似的,你可以看一下。 上传txt文本的,你看看,当然,上传图片也可以。(好吧,是我记不住全部的图片Mine……)文件提交成员管理:验证密码:文件上传: