fread()函数
该函数读取打开的文件。
函数会在到达指定长度或读到文件末尾时(以先到者为准),停止运行
该函数返回读取的字符串,如果失败则返回 FALSE
语法:**fread (resource $handle , int $length**)
handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)
length:必需。规定要读取的最大字节数
<?php
$filename = $_GET['filename'];
if(file_exists($filename)){
$fp = fopen($filename,"r");
$str = fread($fp,filesize($filename)); //指定读取大小,这里把整个文件内容读取出来
echo $str;
fclose($fp);
}
?>
fileget_contents()函数
该函数是用于把文件的内容读入到一个字符串中
语法:file_get**contents(path,include_path,context,start,max_length)
path**:必需。规定要读取的文件
include_path:可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’
context:可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略
start:可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的
max_length:**可选。规定读取的字节数。该参数是 PHP 5.1 中新增的
<?php
$filename = $_GET['filename'];
if(file_exists($filename)){
$str = file_get_contents($filename); //将整个文件内容读入到一个字符串中
echo $str;
}
?>
feof()函数
feof() 函数检查是否已到达文件末尾,如果出错或者文件指针到了文件末尾则返回TRUE,否则返回FALSE
语法:feof(file)
file:**必需。规定要检查的打开文件
提示:feof()函数对遍历长度未知的数据很有用
<?php
$filename = $_GET['filename'];
if(file_exists($filename)){
$fp = fopen($filename,"r");
$str = "";
$buffer = 1024; //每次读取 1024 字节
while(!feof($fp)){ //循环读取,直至读取完整个文件
$str .= fread($fp,$buffer);
}
echo $str;
}
?>
highlight_file()函数
该函数对文件进行语法高亮显示
语法:highlight_file(filename,return)
filename:必需。要进行高亮处理的 PHP 文件的路径
return:**可选。如果设置 true,则本函数返回高亮处理的代码
<?php
$filename = $_GET['filename'];
highlight_file($filename,false);
?>
fgets()**函数
该函数从打开的文件中返回一行,碰到换行符、读到文件末尾时,停止返回一个新行,如果失败该函数返回 FALSE
语法:fgets(file,length)
file:必需。规定要读取的文件
length:可选。规定要读取的字节数。默认是 1024 字节
<?php
$filename = $_GET['filename'];
if(file_exists($filename)){
$fp = fopen($filename,"r");
while(!feof($fp)){
echo fgets($fp)."<br/>";
}
}
?>
fgetss()函数
函数从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记
语法:fgetss(file,length,tags)
file:必需,规定要读取的文件
length:可选。规定要读取的字节数。默认是 1024 字节。该参数在 PHP 5 之前是必需的
tags:可选。规定不会被删除的标签,若失败,则返回 false
<?php
$file = fopen("1.txt","r");
echo fgetss($file);
fclose($file);
?>
<?php
$file = fopen("1.txt","r");
echo fgetss($file,1024,"<p>");
fclose($file);
?>
readfile()函数
该函数读取一个文件,并写入到输出缓冲,如果成功,该函数返回从文件中读入的字节数。如果失败,该函数返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 ‘@’ 来隐藏错误输出
语法:readfile(filename,include_path,context)
filename:必需。规定要读取的文件
include_path:可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’
context:**可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项
<?php
$filename = $_GET['filename'];
if(isset($filename)){
echo "<pre>";
echo readfile($filename);
echo "</pre>";
}
?>
parse_ini_file()函数
解析一个配置文件(ini 文件),并以数组的形式返回其中的设置
语法:parse_ini_file(file,process_sections)
file:必需。规定要检查的 ini 文件
process_sections:可选。如果设置为 TRUE,则返回一个多维数组,包括了配置文件中每一节的名称和设置。默认是FALSE
<?php
print_r(parse_ini_file("C:\Windows\win.ini"));
?>
# print_r 打印变量,以更容易理解的形式展示
过滤绕过案例(一)
# 文章来源:https://paper.seebug.org/676/
# 下面代码改过
<?php
$filename = str_replace('../','',$_GET['filename']);
if(isset($filename)){
echo "<pre>";
echo readfile($filename);
echo "</pre>";
}
?>
过滤绕过案例(二)**
<?php
$filename = str_replace(array('../','./'),'',$_GET['filename']);
if(isset($filename)){
echo "<pre>";
echo readfile($filename);
echo "</pre>";
}
?>