file_get_contents

PHP文件操作

夙愿已清 提交于 2020-01-23 05:27:15
PHP文件操作 计应134 凌豪 1.打开文件 在PHP中使用fopen()函数打开文件,fopen()函数的语法如下: resource fopen ( string filename, string mode [, bool use_include_path]); filename是要打开的包含路径的文件名,可以是相对路径,也可以是绝对路径。如果没有任何前缀则表示打开的是本地文件 mode是打开文件的方式,use_include_path是可选的,该参数在配置文件php.ini中指定一个路径,如F:\AppServ\ www\mess.php,如果希望服务器在这个路径下打开所指定的文件,可以设置为1或 true。 2.关闭文件 对文件的操作结束后应该关闭这个文件,否则可能引起错误。在PHP中使用fclose()函数关闭文件,该函数的语法如下: bool fclose ( resource handle ) ; 该函数将参数handle指向的文件关闭,如果成功,返回true,否则返回false 3.读写文件 •1.从文件中读取数据 1)读取整个文件:readfile()、file()和file_get_contents() ( 1)readfile()函数 readfile()函数用于读入一个文件并将其写入到输出缓冲,如果出现错误则 返回false。函数语法 如下: int

php 文件读取方式

我们两清 提交于 2020-01-10 04:53:32
整理了一下PHP中读取文件的几个方法,方便以后查阅。 1.fread    string fread ( int $handle , int $length )   fread() 从 handle 指向的文件中读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。   fread() 返回所读取的字符串,如果出错返回 FALSE。 <?php $filename = "/usr/local/something.txt"; $handle = fopen($filename, "r");//读取二进制文件时,需要将第二个参数设置成'rb' //通过filesize获得文件大小,将整个文件一下子读到一个字符串中 $contents = fread($handle, filesize ($filename)); fclose($handle); ?>   如果所要读取的文件不是本地普通文件,而是远程文件或者流文件,就不能用这种方法,因为,filesize不能获得这些文件的大小。此时,你需要通过feof()或者fread()的返回值判断是否已经读取到了文件的末尾。   例如: <?php $handle = fopen(

PHP获取网页内容的几种方法

北战南征 提交于 2019-12-25 02:00:37
方法1: 用file_get_contents以get方式获取内容 <?php $url='http://www.domain.com/?para=123'; $html= file_get_contents($url); echo$html; ?> 方法2:用file_get_contents函数,以post方式获取url <?php $url= 'http://www.domain.com/test.php?id=123'; $data= array('foo'=> 'bar'); $data= http_build_query($data); $opts= array( 'http'=> array( 'method'=> 'POST', 'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content'=> $data ) ); $ctx= stream_context_create($opts); $html= @file_get_contents($url,'',$ctx); 如果需要再传递cookie数据,则把 'header'=>"Content-type: application/x-www

php中socket、fsockopen、curl、stream 区别

不想你离开。 提交于 2019-12-19 09:51:54
socket 水泥、沙子,底层的东西 fsockopen 水泥预制件,可以用来搭房子 curl 毛坯房,自己装修一下就能住了 水泥、沙子不但可以修房子,还能修路、修桥、大型雕塑。socket也是,不但可以用于网页传输,还能传送其他东西,可以做聊天工具、下载器、ftp……几乎可以用网络传送的东西都能用它写出来,当然,需要掌握的知识也不少,例如建墙你就要知道怎么让墙笔直、不易倒、防冻、隔热等等都需要自己学 预制件你就不用管它是否笔直、结构如何、怎样隔热了,这些造的人帮你想好了,你想的就是怎样搭成你想要的形状就行。fsockopen就是,你可以忽略socket里面的creat, connect, send, recv等等函数的用法,直接就open了 毛坯房就更简单了,你装修就能住,最简单刷墙就行了,但想更舒适,就用更多更好的装修材料吧,但缺点就是——这是房子,你不能把它改造为渡河、交通的用途,只能住 curl也一样,各种连接什么的都帮你做好了,底层容错处理也做了,你就传参数给它就能得到你想要的结果,但缺点就是只能http / ftp,你想把它改成聊天工具,那就难难难了 stream_socket_client 和 fsockopen 没有本质上的区别 socket 是一个封装了 TCP/IP 操作的工具包 stream_socket_client 和 fsockopen 分属不同流派的对

2019-ZJCTF

偶尔善良 提交于 2019-12-13 22:42:09
浙江省大学生网络安全竞赛: 逆转思路 这题当初没做出来,可惜了。 主要是 php序列化 ,以及 data协议 。 <?php $text = $_GET["text"]; $file = $_GET["file"]; $password = $_GET["password"]; if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){ echo "<br><h1>".file_get_contents($text,'r')."</h1></br>"; if(preg_match("/flag/",$file)){ echo "Not now!"; exit(); }else{ include($file); //useless.php $password = unserialize($password); echo $password; } } else{ highlight_file(__FILE__); } ?> 第一关 file_get_contents() 函数把整个文件读入一个字符串中。 思路: 利用data协议绕过,将welcome to the zjctf字符读入 data://协议允许读入 第一关payload: text=data://text/plain;base64

php中 curl, fsockopen ,file_get_contents 三个函数 比较

让人想犯罪 __ 提交于 2019-12-06 20:13:41
赵永斌: 有些时候用file_get_contents()调用外部文件,容易超时报错。换成curl后就可以.具体原因不清楚 curl 效率比file_get_contents()和fsockopen()高一些,原因是CURL会自动对DNS信息进行缓存(亮点啊 有我待亲测) 范佳鹏: file_get_contents curl fsockopen 在当前所请求环境下选择性操作,没有一概而论: 具我们公司开发KBI应用来看: 刚开始采用:file_get_contents 后来采用:fsockopen 最后到至今采用:curl (远程)我个人理解到的表述如下(不对请指出,不到位请补充) file_get_contents 需要php.ini里开启allow_url_fopen,请求http时,使用的是http_fopen_wrapper,不会keeplive.curl是可以的。 file_get_contents()单个执行效率高,返回没有头的信息。 这个是读取一般文件的时候并没有什么问题,但是在读取远程问题的时候就会出现问题。 如果是要打一个持续连接,多次请求多个页面。那么file_get_contents和fopen就会出问题。 取得的内容也可能会不对。所以做一些类似采集工作的时候,肯定就有问题了。 sock较底层,配置麻烦,不易操作。 返回完整信息。 潘少宁-腾讯: file

php下curl与file_get_contents性能对比

試著忘記壹切 提交于 2019-12-06 20:13:29
前言 php站点没什么访问量,但是负载又出奇的高,反馈给程序员一般就一个结果,代码没有问题,检查一下服务器是不是正常的,有些人就不停的处在扯皮时期了,何不查查问题. 好吧,我这有一例,便是file_get_contents远程url引起的.好,进入正题. 如下是curl和file_get_contents连接淘宝ip地址库的接口. php代码 文件:1829.php <?php /** * 通过淘宝IP接口获取IP地理位置 * @param string $ip * @return: string **/ function getCityCurl($ip) { $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip; $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); $ipinfo=json_decode($file_contents);

file_get_content 和curl以及fopen 谁的效率最高

折月煮酒 提交于 2019-12-06 03:50:47
三个函数虽然都是读取资源的函数,但各自的应用场景不同。 curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。 1. fopen /file_get_contents 每次请求都会重新做 DNS 查询,并不对 DNS 信息进行缓存。但是 CURL 会自动对 DNS 信息进行缓存。对同一域名下的网页或者图片的请求只需要一次 DNS 查询。这大大减少了 DNS 查询的次数。所以 CURL 的性能比 fopen /file_get_contents 好很多。 2. fopen /file_get_contents 在请求 HTTP 时,使用的是 http_fopen_wrapper ,不会 keeplive 。而 curl 却可以。这样在多次请求多个链接时, curl 效率会好一些。 3. curl可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据。 来源: oschina 链接: https://my.oschina.net/u/1414906/blog/315594

cURL、file_get_contents、snoopy.class.php 优缺点

不打扰是莪最后的温柔 提交于 2019-12-06 03:50:09
curl()、file_get_contents()、snoopy.class.php这三个远程页面抓取或采集中用到的工具,他们功能相当,到底有什么优缺点呢,下面逐一介绍: snoopy.class.php snoopy 是用 fsockopen 自开发的一个类,效率比较高且不需要服务器特定配置支持,在普通虚拟主机中即可使用,但是经常出问题。官方网址: http://sourceforge.net/projects Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。 Snoopy的特点: 1、抓取网页的内容 fetch 2、抓取网页的文本内容 (去除HTML标签) fetchtext 3、抓取网页的链接,表单 fetchlinks fetchform 4、支持代理主机 5、支持基本的用户名/密码验证 6、支持设置 user_agent, referer(来路), cookies 和 header content(头文件) 7、支持浏览器重定向,并能控制重定向深度 8、能把网页中的链接扩展成高质量的url(默认) 9、提交数据并且获取返回值 10、支持跟踪HTML框架 11、支持重定向的时候传递cookies 要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。 file_get_contents() file

用php写爬虫去爬数据

不羁的心 提交于 2019-12-06 02:57:53
这里是我自己写的一个小需求 <?php /** 采集http://www.959.cn/school,即时更新的最新的文章内容;每分钟采集一次。采集结束后实时入库并展示。 */ header("Content-Type: text/html;charset=utf-8"); date_default_timezone_set('PRC'); $con = mysqli_connect('127.0.0.1', 'xxxxx', 'xxxxx', 'xxxxx'); mysqli_set_charset($con,'UTF8'); // 日志位置 //把当前的最新一条文章的id.shtml的id 存入一个max.log的文件中,实时读取 实时更改 $log_path = '/home/logs'; if(!file_exists($log_path)){ mkdir($log_path,0755,true); } $max_log = $log_path.'/kecheng_max.log'; $path = './img/'; $max = file_get_contents($max_log) ? file_get_contents($max_log) : 4613925; //当前的最新一条文章的id.shtml的id //记录日志 $message_log = $log