嗯..怎么讲呢,其实我自己也不是很了解的.大致谈一下吧.先看如下代码:<form action=$PHP_SELF?action=update method=POST ENCTYPE="multipart/form-data">
<input type=file name=upfile>
<input type=submit value="update">
</form>这是从一个上传文件的PHP文件中独立出来的.这个表单的作用是把一个文件中的数据上传到服务器的临时目录中.然后,就会有$upfile,$upfile_name,$upfile_size,$upfile_mine传给PHP文件了.$upfile - 用户上传到服务器上的文件临时存放的名称$upfile_name - 在用户机器上该文件的原始名称$upfile_size - 上传文件的实际字节数 $userfile_type - 如果用户的浏览器提供了这个信息的话,它表示mime的类型。例如image/gif请看copy函数的语法:int copy(string source, string dest);前面是源地址,后面是目标地址.copy($upname, $upname_name);
其实就是把临时目录中的文件拷贝到PHP文件所在的目录来.
整个上传工作就完成了.
----------------------
顺手简单的讲一下PHP上传文件时容易产生的安全问题,就是用户在提交表单的时候,恶意指定$upname等变量的内容,导致将一些敏感文件复制出来(如密码文件等).临时解决办法: 在PHP脚本中检查上传文件大小和实际的临时文件大小是否一致,这可以抵挡大部分的攻击, 除非攻击者知道确切的文件大小
----------------------
不过这是挺久以前的事了,不知道现在的PHP是否已经可以防止这种攻击.
<input type=file name=upfile>
<input type=submit value="update">
</form>这是从一个上传文件的PHP文件中独立出来的.这个表单的作用是把一个文件中的数据上传到服务器的临时目录中.然后,就会有$upfile,$upfile_name,$upfile_size,$upfile_mine传给PHP文件了.$upfile - 用户上传到服务器上的文件临时存放的名称$upfile_name - 在用户机器上该文件的原始名称$upfile_size - 上传文件的实际字节数 $userfile_type - 如果用户的浏览器提供了这个信息的话,它表示mime的类型。例如image/gif请看copy函数的语法:int copy(string source, string dest);前面是源地址,后面是目标地址.copy($upname, $upname_name);
其实就是把临时目录中的文件拷贝到PHP文件所在的目录来.
整个上传工作就完成了.
----------------------
顺手简单的讲一下PHP上传文件时容易产生的安全问题,就是用户在提交表单的时候,恶意指定$upname等变量的内容,导致将一些敏感文件复制出来(如密码文件等).临时解决办法: 在PHP脚本中检查上传文件大小和实际的临时文件大小是否一致,这可以抵挡大部分的攻击, 除非攻击者知道确切的文件大小
----------------------
不过这是挺久以前的事了,不知道现在的PHP是否已经可以防止这种攻击.
那这个脚本如何控制它的作用范围?(我现在用的是apache,没有太多理解,apache中能设置这一点吗?)比如:编一个目录管理的脚本,在脚本中指定某个目录(它给我指定的目录上层的).这能够控制吗?
使用move_uploaded_file()来完成复制工作.使用方法同copy().
--------------------------------------------------------------嗯....我好像不太理解你说什么呢.呵呵...我的理解能力不是很好了.你的意思可能是说那个临时目录吧.那个临时目录是在PHP.ini中设置的.就是以下这段:; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =如果你不设置,就使用系统默认设置.你设置的话,就按你的路径存放临时文件.
我想问的是,那些空间不是可以执行用户上传的脚本吗?这些脚本怎么控制?
当然你可以把脚本放在upload_tmp_dir中,但这些脚本没法执行呀?
不知道可不可以这样叙述?
3x,[email protected]