array array_filter(array input[,callback callback])
说明:在回调函数中不要对数组进行修改操作,例如,增加或者删除数组中的元素,如果一旦数组改变,那么此函数的运用也就没有意义了。如果没有提供callback()函数,array_filter()将删除input中所有等值为FALSE的元素。
本实例中定义的回调函数是check(),用于验证数组中的元素值是否为空,其语法如下:
function check($var){//验证数组的返回值是否为空 return($var!=""); }
三、设计过程
(1)创建index.php文件。添加表单,设置文件域、提交按钮,使用POST方法,设置enctype="multipart/form-data",将数据提交到index_ok.php页,完成多个文件的上传操作,其关键代码如下:
<table width="750"border="0"cellspacing="0"cellpadding="0"> <form action="index_ok.html"method="post"enctype="multipart/form-data"name="form1"> <tr> <td width="100"height="25"align="right"class="STYLE1">内容1:</td> <td width="150"align="center"><input name="files[]"type="text"id="files[]"size="15"></td> <td align="left"><input name="picture[]"type="file"id="pcture[]"size>="30"></td> </tr> <tr> <td height="25"align="right"class="STYLE1">内容2:</td> <td width="center"><input name="files[]"type="text"id="files[]"size="15"></td> <td align="left"><input name="picture[]"type="file"id="pcture[]"size>="30"></td> </tr> <tr> <td colspan="3"align="center"> <input type="image"name="imageField"src="images/bg_09.jpg"> <input type="image"name="imgeField2"src="images/bg_11.jpg"></td> </tr> </form> </table>
(3)创建index.php文件获取表单中提交的数据,将多个文件存储到服务器中,将文件的名称和存储路径存储到数据库中,其代码如下:
<?php header("Content-type:text/html;charset=UTF-8"); //设置文件编码格式 include"conn/conn.php"; //包含数据库链接文件 if($_POST[files]!=""){ if(! is_dir("./upfile")){ mkdir("./upfile");//创建上传文件存储文件夹 } $data=date("Y-m-d H:m:s");//定义时间 function check($var){ //验证数组的返回值是否为空 return($var!="");//如果不为空则返回数组元素 } $files=array_filter($_POST["files"],"check");//去除数组中空值 $array=array_filter($_FILES["picture"]["name"],"check"); //去除数组中空值 foreach=($aarray as $key=>value){ //循环读取数组中数据 $path='upfile/'.time().$key.strtolower(strstr($value,".")); //定义上传文件存储位置 move_uploaded_file($_FILES["picture"]["tmp_name"][$key],$path);//执行上传操作 $query="insert into tb_up_file(file_test,data,file_name)values('$path','$data''$files[$key]')"; $result=mysql_query($query); } echo"<script> alert('图片上传成功');window.location.href='index.html';</script>"; } ?>
四、技巧补充
通过伪静态技术隐藏PHP文件后缀。
首先,修改Apache服务器的配置文件httpd.conf。打开httpd.conf文件,定位到如下位置:
#LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On#启动项 RewriteRule^index.html$ index.php RewriteRule^ndex_ok.html$ index_ok.php RewriteRule^index-([0-9]+)-([0-9]+)-([0-9]+)\.html$ index.php?vv=$1&ljjl=$2&page=$3[L]
通过正则表达式对文件的后缀和传递的参数进行匹配,完成对PHP文件后缀的隐藏操作。
希望本文所述对大家的PHP程序设计有所帮助。