博客列表 >目录遍历与文件上传——2018年9月2日16点15分

目录遍历与文件上传——2018年9月2日16点15分

Nevermore的博客
Nevermore的博客原创
2018年09月02日 16:17:24777浏览

实例

<form  action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> " method="post" enctype="multipart/form-data">
    <fieldset>
        <legend >文件上传</legend>
        <input type="file" id="upload" name="upload">
    </fieldset>
     <p align="center"><input type="submit" value="提交" name="submit"></p>
</form>
<?php
  if($_SERVER['REQUEST_METHOD']=='POST')
  {
      if(isset($_FILES['upload']))
       {
          if( ($_FILES['upload']['type']=='image/jpg')||
              ($_FILES['upload']['type']=='image/png')||
              ($_FILES['upload']['type']=='image/jpeg') )
          {
             if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}"))
             {
                 echo  "<script>alert('上传成功')</script>";
             }
          }
          else echo  "<script>alert('请选择正确文件类型')</script>";
       }

        else exit('请选择上传文件');
  }
  else  exit('请求类型错误');
  ?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
$dir=opendir('../0827') or die('打开失败');
   while ($content=readdir($dir))
   {    if(($content!='.')&&($content!='..'))
     {
       echo  nl2br($content."\n");
      }
   }
echo '<hr>';
      $file=scandir('../0824');
       foreach ($file as $content)
       {
           if(($content!='.')&&($content!='..'))
           {
               echo  nl2br($content."\n");
           }
       }

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

echo  $_SERVER['DOCUMENT_ROOT']; 网站根目录,不知道指向何方就打印一下   E:/xampp/htdocs     

fwrite() 等同于fputs  fwrite($fp,$outputstring);  第三个参数是限制长度,  一般用strlen($outputstring),跨平台用到   

fgets() 每次读取一行,直到读到换行符\n,或者文件结束符EOF。

fgetss() 与fget 相似,过滤PHP和html标记 

'r'读模式,从头开始读

'w'写模式,打开文件,从头开始写,如果文件内已有内容将被删除,没有文件,将创建新文件 

'a'追加模式打开文件,从末尾始追加写或者读,没有文件,将创建新文件 



file_get_contents()将以字符串的形式返回文件内容,而不是将文件内容回显到显示器中。

例如  $content=file_get_contents('text.txt');

打印字符串  echo $content;



array_rand(array,number)函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。

array 必需。规定数组。

number 可选。规定返回多少随机键名。


目录操作 (相当于文件操作)

opendir(),readdir, closedir

.表示当前目录

..表示上一级目录

scandir 目录扫描,返回数组;


文件的魔术常量

__FILE__  (双下划线)  返回当前文件的绝对路径   echo __FILE__;  E:\xampp\htdocs\phpstudy\0828\demo3.php

basename(__FILE__)获取当前文件的文件名

__DIR__获取当前文件的目录名  注意返回值最后没有反斜线 要手动添加

pathinfo():将目录名,文件名,扩展或解析到一个数组中



DIRECTORY_SEPARATOR 是分隔符,用于不用系统的目录分割

pathinfo():将目录名,文件名,扩展或解析到一个数组中

$pathinfo = pathinfo(__FILE__);

echo '目录名:', $pathinfo['dirname'],'<br>';

echo '文件名:', $pathinfo['basename'],'<br>';

echo '扩展名:', $pathinfo['extension'],'<br>';



unlink()删除文件 例如:unlink('file.txt')

copy()复制文件;列子:copy('text1','../0827/newtext') or die('复制失败')  将文件目录下的text1  复制到上级目录下的0827中,并重新命名newtext

rename()移动文件(原文件将移动) rename('text1', '../0827/text1.txt') or die('复制失败')  将文件目录下的text1  移动到上级目录下的0827中,命名不变,原文件消失 .绝对路径写法(rename('text1',__DIR__.'/../0827/text1.txt')

mkdir()  在当前目录中再创建目录 例如mkdir('admin');

rmdir()删除目录,目录中为空时才能操作。



enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。

application/x-www-form-urlencoded 在发送前编码所有字符(默认)

multipart/form-data         不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。

text/plain 空格转换为 "+" 加号,但不对特殊字符编码。


$_SERVER['PHP_SELF'];当前脚本名称,表单提交用当前脚本处理时使用


$_FILES['file']['name']: 文件原始名称

$_FILES['file']['type']: 文件类型

$_FILES['file']['size']: 上传的文件大小

$_FILES['file']['tmp_name']: 服务器上的临时文件夹

$_FILES['file']['error']: 上传错误代码


if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}"))



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议