嗯..怎么讲呢,其实我自己也不是很了解的.大致谈一下吧.先看如下代码:<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是否已经可以防止这种攻击.

解决方案 »

  1.   

    php脚本传到服务器上以后,已经copy到它给我指定的一个目录了,是吧?
    那这个脚本如何控制它的作用范围?(我现在用的是apache,没有太多理解,apache中能设置这一点吗?)比如:编一个目录管理的脚本,在脚本中指定某个目录(它给我指定的目录上层的).这能够控制吗?
      

  2.   

    我手上的资料都太旧了,哎,英文不好,新的资料又都是英文的.在PHP4.03以上的版本,就不推荐用copy了,推荐使用is_uploaded_file()和move_uploaded_file().使用is_uploaded_file()判断文件是否是由HTTP POST上传的.
    使用move_uploaded_file()来完成复制工作.使用方法同copy().
    --------------------------------------------------------------嗯....我好像不太理解你说什么呢.呵呵...我的理解能力不是很好了.你的意思可能是说那个临时目录吧.那个临时目录是在PHP.ini中设置的.就是以下这段:; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir =如果你不设置,就使用系统默认设置.你设置的话,就按你的路径存放临时文件.
      

  3.   

    sorry,也许我描述的太烂了.上传的流程我可能清楚了
    我想问的是,那些空间不是可以执行用户上传的脚本吗?这些脚本怎么控制?
    当然你可以把脚本放在upload_tmp_dir中,但这些脚本没法执行呀?
    不知道可不可以这样叙述?
      

  4.   

    是吗?你能把相关的内容给我发一份吗?
    3x,[email protected]