宝哥软件园

PHP和服务器文件系统之间的简单交互

编辑:宝哥软件园 来源:互联网 时间:2021-09-14

1.php.ini中文件上传的设置说明

2.文件上传过程

(1)上传文件提交表单的html代码:

!-上传文件到服务器的HTML表单(限文本文件)-!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' title administration-upoload new files/title/head body h1上传新文件/h1表单操作='upload.php '方法=' post ' enctyple=' multipart/form-data '!- enctyple:指定如何在将表单数据发送到服务器之前对其进行编码(上传控件时必须以上述方式设置此属性)-div输入类型=' hidden ' name=' max _ file _ size ' value=' 100000 '!-指定传输文件的最大字节数-label为=' userfile '上传文件/标签!-单击标签中的文本将触发控件,浏览器将自动聚焦于标签所指向的表单控件,属性输入类型=' file ' name=' user file ' id=' user file '!-id属性是标签标签指向的控件元素的id号-输入类型=' submit '值=' sendfile '/div/form/body/html(2)PHP处理上传文件代码

(1)在php脚本中,待处理的数据保存在超级变量数组$_FILES中,通过打开register_globals指令,可以通过变量名直接访问这些信息;

如果表单变量名为“用户名”,则有:

$ _ files[' user file '][' tmp _ name ']:存储文件在Web服务器中的临时存储位置;$_FILES['userfile']['name']:存储用户系统中文件的名称;$_FILES['userfile']['size']:保存文件的大小;$_FILES['userfile']['type']:保存文件的类型;$_FILES['userfile']['error]:存储与文件上载相关的任何错误代码;

错误类型描述:

Upload _ err _ ini _ size: 1,上传的文件超过了php.ini中upload_max_filesize选项的限制.Upload _ err _ form _ size: 2,上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。Upload _ err _ partial: 3,只上传了部分文件。Upload _ err _ no _ file: 4,未上传任何文件。Upload _ err _ no _ tmp _ dir: 6,找不到临时文件夹。PHP 4.3.10和PHP 5.0.3简介。Upload _ err _ cant _ write: 7,文件写入失败。PHP 5.1.0简介。

php代码

?Php //检查文件传输异常if($ _ files[' user file '][' error ']0){ echo ' problem ';switch($ _ FILES[' user File '][' error ']){ case 1: echo ' File超过了upload _ max _ filesize ';打破;案例2:回显“文件超过最大文件大小”;打破;案例3:回应“文件仅部分上传”;打破;案例4:回应“未上传文件”;打破;案例6:回应“无法上传文件:未指定临时目录”;打破;案例7:回应“上传失败:无法写入磁盘”;打破;}退出;}//如果($_FILES['userfile']['type']!=' text/plain '){ echo ' problem :文件不是纯文本';退出;}//将上传的文件包含在服务器的/uploads/目录中(该目录必须独立于Web文档树)$ upfile='/uploads/'。$ _ files[' user file '][' name '];//创建一个新文件if(is _ uploaded _ file($ _ files[' userfile '][' tmp _ name '])并在指定目录中使用传输文件的文件名){if(!Move _ uploaded _ file($ _ files[' user file '][' tmp _ name '],$ upfile)){//将传输文件的临时文件移动到创建的新文件echo '问题:无法将文件移动到目标目录';退出;} } else{ echo 'Problem:可能的文件上传攻击。文件名: ';echo $ _ FILES[' username '][' name '];退出;}回显“文件已上载seucesfullybr/br/”;//从传输文件中清除html和php标记$ contents=file _ get _ contents($ upfile);//将文件内容提取为字符串;$ contents=strip _ tags($ contents);//从字符串中删除html和标记;file _ put _ contents($ _ FILES[' user FIle '][' name '],$ contents);//将字符串重写到文件中;//在浏览器上显示传输的文本文件内容echo上传文件内容的PP审核: br/HR’;echo nl2br($ contents);echo '/br/HR ';3.使用目录功能

(1)从目录中读取文件名

使用opendir()、readdir()、closedir()函数;

?PHP $ current _ dir='/uploads/';//创建目录全球资源定位器(统一资源定位符)对象$ dir=open dir($ current _ dir);//打开目录,结果返回一个目录对象回声" PupLoad目录是$ current _ dir/p”;回显"目录列表:/pul”;while(($file=readdir($dir))!==false){ //读取目录对象if($file!='.'$file!='.'){ //过滤当前目录和上一级目录呼应“李$文件/李”;echo 'a href='filedetails.php?文件= '。$文件。'''.$文件/ABR/';} } echo '/ul ';close dir($ dir);//关闭目录;使用服务器端编程语言(专业超文本预处理器的缩写)的目录类

?PHP $ current _ dir='/uploads/';//创建目录全球资源定位器(统一资源定位符)对象$ dir=dir($ current _ dir);//创建目录对象回声“pHandle是$ dir-handle/p”;回声" PupLoad目录是$ current _ dir/p”;回显"目录列表:/pul”;while(($file=$dir-read())!==false){ //通过目录对象读取目录下的文件名if($file!='.'$file!='.'){ echo ' Li $ file/Li ';} } echo '/ul ';$ dir-close();//关闭目录?(2)使用scandir()函数对文本名称进行字母表的排序方式

?PHP $ current _ dir='/uploads/';//创建目录全球资源定位器(统一资源定位符)对象$ files 1=scandir($ current _ dir);//将指定目录下的文件名保存为一个数组,默认以字母升序排序$files2=scandir($current_dir,1);//将指定目录下的文件名保存为一个数组,以字母降序排序回声" PupLoad目录是$ current _ dir/p”;回显"按字母顺序排列的目录列表,升序:/pul”;foreach($ file 1作为$ file 1){ if($ file 1!='.'$file1!='.')回显”李$文件1/李”;} echo '/ul ';(3)获取当前目录的其他信息

dirname($path):返回路径的目录部分;

基本名称($路径):返回路径的名称部分;

disk _ free _ space(美元路径):返回路径所在磁盘可以保存上传文件的容量;

(4)创建和删除目录

mkdir():创建目录;

代码:

$ old umask=umask(0);//重置当前权限码mkdir('/tmp/testing ',0777);//创建目录umask(旧umask);//恢复当前权限码rmdir():删除目录;

代码:

rmdir('/temp/testing ');或rmdir(' c : tmp testing ');

要删除的目录必须是空目录;

4、与文件系统的交互

(1)获取文件信息:

while(($file=readdir($dir))!==false){ echo ' a href= '文件详细信息。PHP?文件= '。$文件。'''.$文件/ABR/';}?PHP $ current _ dir='/uploads/';$ file=基本名称($ file);//获取文件文件名回显“h1文件/h1的详细信息";回显“H2FIle数据/H2”;回显"上次访问的文件:"。日期(' j F Y H:i ',fileatime($file)).br ';//返回最近访问的时间戳回显"文件上次修改时间:"。日期(' j F Y H:i ',文件时间($file)).br ';//返回最近修改的时间戳$ user=POSIX _ getpwuid(文件所有者($ file));//返回用户标识用户界面设计(User Interface Design的缩写)回显"文件所有者:"。$user['name'].br/';$group=posix_getgrgid(文件组($ file));//返回组织标识眩倒病回应"文件组:"。$group['name'].br/';回应"文件权限:"。煎服(fileperms($file)).br/';//返回8位的权限码回应"文件类型"。文件类型($file).br/';//返回文件类型回应"文件大小"。文件大小($file).br/';//返回文件字节数回应“h2文件测试/H2”;echo“is _ dir?”。(is_dir($file)?true':'false ').br/';“echo”是可执行的吗?(is_executable($file)?true':'false ').br/';//判断文件是否可执行;echo“is _ file?”。(is_file($file)?true':'false ').br/';echo 'is_link?(is_link($file)?true':'false ').br/';回声"可读吗?"。(is _ ready($ file)?true':'false ').br/';回声"是可写的吗?"。(is _ write($ file)?true':'false ').br/';(2)更改文件属性

chgrp(文件,组):修改文件的分组;

chmod(文件,权限):修改文件的权限;

chown(文件,用户):修改文件的所有者;

(3)创建、删除和移动文件

bool touch($filename,[int time,[ int atime]]):创建一个文件(时间指定创建时间戳,atime指定可选时间戳)

取消链接($文件名):删除一个文件

复制($source_path,$destination_path):复制一个文件

重命名($oldfile,$newfile):重命名文件;

(4)使用程序执行功能

字符串执行(字符串命令[,数组结果[,int result_value]])

返回命名结果的最后一行,结果变量可以返回字符组的个数,这些字符串代表输出的每一行,result_value得到返回代码;

void passthru(String命令[,int result_value])

结果直接输出到浏览器;

字符串系统(字符串命令[,int return_value])

将结果输出到浏览器并返回命令结果的最后一行或false;

当用户提交的数据包括执行命令的一部分时,应按如下方式打包:

system(escape shellcmd($ command));

5.与环境变量交互

Phpinfo()函数:获取php中所有变量的列表;

getenv('$key_name'):

setenv(' $ key _ name=$ value ');

以上是边肖介绍的PHP和服务器文件系统的简单交互,对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+