fwrite

【自学php】第三天 - 读写文件

血红的双手。 提交于 2020-04-04 03:05:21
这次的例子是把订单的数据保存起来,一般是用数据库来进行数据的存储最好,但是今天目的是为了学习读写文件,所以这次把数据存在文件里。 读写文件有一般有三个步骤:   1)打开文件。如果文件不存在,需要先创建它。   2)读取/写入数据。   3)关闭文件。 1.使用fopen()打开文件。    $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", "ab"); fopen()返回一个文件指针给$fp,读写文件时需要使用这个变量。   调用fopen()通常使用2个参数。第一个参数指定文件名,第二个参数指定打开文件的方式。   php有个内置变量$_SERVER['DOCUMENT_ROOT']指向web服务器的根目录,同表单数据一样,这个变量也有3种访问方法,这里将 $_SERVER['DOCUMENT_ROOT'] 赋给 $DOCUMENT_ROOT以 方便访问。“..“表示文档的父目录,出于安全原因,将要读写的文件放在web根目录的外面(这个安全原因我也不太清楚,可能以后书里会提到了)。   a-追加模式,从文件末尾开始追加,如文件不存在,先创建这个文件。b-二进制模式,windows系统下会区分二进制文件和文本文件,为了获得最大的可移植性,推荐使用这项。更多其他模式可以查看文档。   打开文件时

php文件函数

徘徊边缘 提交于 2020-03-27 15:14:54
文件函数库 文件、目录函数库为 PHP 核心函数库,可以通过其提供的 API 完成对于文件及目录的常用操作。 文件信息相关的 API /* * 文件信息相关API * filetype(), filesize(), filectime(),filemtime(), fileatime() */ $dirname = "./"; $filename = "./11.txt"; // string filetype(string filename):返回文件的类型 echo '文件类型为:', filetype($dirname), "\n"; //dir echo '文件类型为:', filetype($filename), "\n"; //file //int filesize(string filename):返回文件大小的字节数 echo '文件大小:', filesize($filename), "\n"; //int filectime(string filename):返回文件的创建时间的时间戳 echo '文件的创建时间:', date('Y-m-d H:i:s', filectime($filename)), "\n"; //int filemtime(string filename):返回文件的最后修改时间的时间戳 echo '文件的修改时间:', date('Y

PHP Moving Array Item Shows Correct Array but Writes Wrong?

随声附和 提交于 2020-03-25 18:36:26
问题 Have a code that shifts an element of an array up one space. URL loads: action?p=ArrayNumber if (isset($_GET['p'])) { $index = $_GET['p']; $panel_dir = 'host.txt'; $panel_data = file($panel_dir); $pos = $panel_data[$index]; $panel_data[$index] = $panel_data[$index-1]; $panel_data[$index-1] = $pos; $f_panel = fopen($panel_dir, "w+"); foreach($panel_data as $panel_line) { fwrite($f_panel, $panel_line); } fclose($f_panel); } How the content begins: Array ( [0] => Name [1] => List [2] => Folder

Discuz XSS得webshell

不羁的心 提交于 2020-03-19 04:35:52
By racle @tian6.com 欢迎转帖.但请保留版权信息. 受影响版本:Discuz<6.1.0,gbk+utf+big5 3天前有朋友在论坛问过,说Discuz有个非论坛创始人获得WEBSHELL的漏洞,是superhei早前发出来的一大堆DISCUZ漏洞之一.见原帖:http://bbs.tian6.com/redirect.php?goto=findpost&pid=54794&ptid=8706当时我说一会就弄出来给大家,但是实际上一接触,发现这个漏洞本身需要管理员权限,要广泛普遍的利用还是很复杂的,主要是以下几个问题,所以拖到今天才基本完工.分析和写EXP的过程中,得到t0by57的大力帮助.他PHP和JS都不错的哦!我也希望大家看这篇文章时,更注意分析和明白的过程,毕竟XSS是目前WEB安全的最大头戏.各种形式:XSIO,Cross Iframe Trick,crsf等等.. ----------------------------------------------------------前言分隔线----------------------------------------------------------------------------- problem1:漏洞页面runwizard.inc.php数据提交方式为post.需要模拟POST提交

C\\C++中 fopen中文件打开方式的区别:

試著忘記壹切 提交于 2020-03-18 08:15:53
在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。 如以下C代码: #include <stdio.h> char buf[10] = {10,10,10,10,10,10,10,10,10,10}; FILE *fp = fopen("c:\\test.dat","w"); fwrite(buf,1,10,fp); fclose(fp); FILE *fp1 = fopen("c:\\test1.dat","wb"); fwrite(buf,1,10,fp); fclose(fp1); 我们注意到,程序的第一段定义一个数组,每个分量的值为:10,等价的十六进制为0A。 第二段,先是打开一个文件test.dat进行写操作,再是把10个数据写入文件,最后关闭文件。 第三段,功能差不多,只是文件名换成了test1.dat,打开文件的模式换成了wb. 第二段和第三段有什么区别呢?我们看一下最后的文件内容: test.dat: 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A test1.dat: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 原因是为什么呢?这就是w 和 wb的区别,w是以文本方式打开文件,wb是二进制方式打开文件

php中记录日志的几种方法

北城余情 提交于 2020-03-11 08:38:57
1、使用fwrite()函数写入文件 <?php $now=date('y-m-d',time()); $filename='log/tongbu_'.$now.'.log'; $file=fopen($filename,"a+"); //a+表示文件可读写方式打开 fwrite($file,'开始写入'."\n"); $time=time(); $res="www.geiliyou.com"; $result='ok'; fwrite($file,$time."\t".$res."\t".$result."\n"); fwrite($file,'写入完成'."\n"); 2、使用error_log()函数写入 <?php $now=date('y-m-d',time()); $filename='log/tongbu_'.$now.'.log'; $time=time(); $re="www.geiliyou.com"; $result='ok'; error_log($time."\t".$re."\t".$result."\n",3,$filename);//3表示消息被发送到后面的文件 ?> 3、使用file_put_contents()函数创建写入文件 <?php function writelog($loginfo){ $file='log/tongbu_'.date(

文件操作

孤人 提交于 2020-02-22 00:44:44
文件类型 在 PHP 里面,文档类型有 7 种 ( 基于 UNIX 系统 ) ,如果是基于 Windows 系统,文件类型只有 3 种。 在 UNIX 系统下面文件类型有 7 种: fifo , char , dir , block , link , file 和 unknown 。 如下表: 文件类型 描述 fifo 命名管道,用于将信息的一个进程传递到另一个进程 char 字符设备 Dir 目录类型 Block 块设备类型 Link 符号链接,是指向文件的指针 File 普通文件类型 unknown 未知类型 在 Windows 系统下面文件类型只有 3 种: dir , file , unknown 在 PHP 里面有一个函数可以查看文件的类型 filetype() 这里补充一个 file_exists() 函数:判断文件是否存在 除此之外,还有一组判断文件是否为某一个类型的函数 is_file() is_dir() 文件属性 在操作文件的时候,我们往往需要获取文件的相关属性,例如:文件的大小,文件的创建时间,文件的访问时间 如下表:下面的函数接收的参数都是文件所在的路径 函数 功能 返回值 file_exists 判断文件是否存在 返回 true 或者 false filesize() 获取文件大小 返回字节数 filectime() 获取文件的创建时间 返回一个时间戳

php中使用Curl、socket、file_get_contents三种方法POST提交数据

半城伤御伤魂 提交于 2020-02-12 04:47:20
抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl。 直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了。我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好。 php中curl和file_get_content的一些比较 主要区别: 学习才发现,curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是说,它能做到很多file_get_content做不到的事情。curl在php可以实现远程获取和采集内容;实现PHP网页版的FTP上传下载;实现模拟登陆;实现接口对接(API),数据传输;实现模拟Cookie;下载文件断点续传等等,功能十分强大。 了解curl一些基本的使用后,才发现其实并不难,只不过记住里面一些设置参数,难弄一点,但是我们记住几个常用的就可以了。 开启curl: 因为PHP默认是不支持curl功能的,因此如果要用curl的话,首先需要在php.ini中开启该功能,即去掉 ;extension=

PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

本秂侑毒 提交于 2020-02-12 04:39:35
了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求。 并且TELNET是一个特别灵活的工具,我们还可以用它进行FTP/SMTP/POP3/TCP等方式的简单请求。 通过开始菜单--运行--CMD命令进入DOS状态, 我们输入“Telnet 主机地址 端口(Telnet 192.168.1.99 80)” 来进入telnet命令状态(完全黑窗口,此时输出字符会出问题),我们按”ctrl”+”]”,切回普通CMD窗口,再按”ENTER”回车键进入编辑命令状态。 如果系统提示找不到TELNET命令,只需按如下方式可解锁TELNET命令。 进入TELNET 命令输入模式后我们就可以直接编辑头文件来进行发送了 只需要注意:当编辑完请求头文件后要按两次回车键来发送。 这是一次标准的HTTP请求与响应,是不是跟上节的HTTP文件关联了。 当然我们不能只用这么不方便的工具,下面要介绍的是PHP里的 fsockopen() 方法。 先来看fsockopen()方法的原型: resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout =

How to write a string with padding to binary file using fwrite?

情到浓时终转凉″ 提交于 2020-02-08 10:02:12
问题 My requirement is to write a "32-byte string indicating the units of pressure" to a binary file. The units of pressure I am wanting to write is "Pa" as a 32-byte string. And here is my attempt. #include <stdio.h> #include <string> using namespace std; int main() { FILE *myFile; myFile = fopen ("input_file.dat", "wb"); //Units string units = "Pa"; //Write Units fwrite (&units, 1, 32, myFile); fclose (myFile); return 0; } I'm expecting (conversion of Pa to binary in 32 bytes). The "00100000"