本篇文章主要介绍如何创建和修改文件内容,感兴趣的朋友参考下,希望可以对大家有所帮助。
file_put_contents写入文件
我们先来学习第一种写入文件的方式:
int file_put_contents ( string $文件路径, string $写入数据])
功能:向指定的文件当中写入一个字符串(会清空原有的内容),如果文件不存在则创建文件。返回的是写入的字节长度
<?php $data = "在PHP中文网学好PHP,妹子票子不再话下!"; $numbytes = file_put_contents('binggege.txt', $data); //如果文件不存在创建文件,并写入内容 if($numbytes){ echo '写入成功,我们读取看看结果试试:'; echo file_get_contents('binggege.txt'); }else{ echo '写入失败或者没有权限,注意检查'; }?>
fwrite配合fopen进行写入操作
int fwrite ( resource $文件资源变量, string $写入的字符串 [, int 长度])
<?php $filename = 'test.txt'; $fp= fopen($filename, "w"); //w是写入模式,文件不存在则创建文件写入。 $len = fwrite($fp, '我是一只来自北方的狼,却在南方冻成了狗'); fclose($fp); print $len .'字节被写入了\n';?>
总结:1.不论有没有新建都会打开文件重新写入2.原有的文件内容会被覆盖掉3.文件不存在会创建
那我们来对比一下以下几个模式的不同:
模式 | 说明 |
---|---|
r | 只能读不能使用fwrite写 |
r+ | 可操作读、写 |
w | 只可以写功能 |
w+ | 即可读又可以写 |
a模式和w模式的不同
同样是下面的这段代码,我们改为a模式。
<?php $filename = 'test.txt'; $fp= fopen($filename, "a"); $len = fwrite($fp,'读大学迷茫了,PHP中文网学PHP给你希望'); echo $len .'字节被写入了\n';?>
打开网页执行这段代码,你会发现:每刷新一次,文件中就会多一段:读大学迷茫了,PHP中文网学PHP给你希望。
总结:
模式 | 总结 |
---|---|
x | 每次写入会干掉原有文件的内容,文件不存在都会创建 |
a | 每次写入都会向文件的尾端追加内容 |
x模式和w模式的不同
这段代码我们再实验一次,改为x模式:
<?php $filename = 'test.txt'; $fp= fopen($filename, "x"); $len = fwrite($fp,'读大学迷茫了,PHP中文网学PHP给你希望'); echo $len .'字节被写入了\n';?>
我们会发现:
1.文件存在的时候会报错2.如果把$filename 改成其他的文件名,就可以了。但是,再次刷新的时候又报错了3.x+ 是增强的x模式。读取时也可以使用。
php 创建临时文件
我们来学习一下这个函数:
resource tmpfile ( )
功能:创建一个临时文件,返回资源类型。关闭文件即被删除。
php移动、拷贝和删除文件
重命名文件
bool rename($旧名,$新名);
这个函数返回一个bool值,将旧的名字改为新的名字。
<?php //旧文件名$filename = 'test.txt';//新文件名$filename2 = 'reName.txt.';//修改名称rename($filename, $filename2);?>
复制文件
复制文件,就相当于是克隆技术,将一个原来的东西再克隆成一个新的东西。两个长得一模一样。
bool copy(源文件,目标文件)
功能:将指定路径的源文件,复制一份到目标文件的位置。
<?php //旧文件名 $filename = 'copy.txt'; //新文件名 $filename2 = 'copy2.txt'; //修改名字。 copy($filename, $filename2);?>
注:1·复制的文件名不能和源文件同名,否则无法复制;2.复制文件名如果已经存在的话,会把源文件的内容copy一份替换复制文件的内容。
删除文件
删除文件就是将指定路径的一个文件删除,不过这个删除是直接删除。使用的是windows电脑,你在回收站看不到这个文件。
你只会发现,这个文件消失了。
bool unlink(指定路径的文件)
<?php $filename = 'test.txt'; if (unlink($filename)) { echo "删除文件成功 $filename!\n"; } else { echo "删除 $filename 失败!\n"; }?>
php检测文件属性函数
bool file_exists ( $指定文件名或者文件路径) 功能:文件是否存在。bool is_readable ( $指定文件名或者文件路径) 功能:文件是否可读bool is_writeable ( $指定文件名或者文件路径) 功能:文件是否可写bool is_executable ( $指定文件名或者文件路径) 功能:文件是否可执行bool is_file ( $指定文件名或者文件路径) 功能:是否是文件bool is_dir ( $指定文件名或者文件路径) 功能:是否是目录void clearstatcache ( void ) 功能:清楚文件的状态缓存
我们来讲第一个例子,文件锁。如果已经安装了,存在安装锁就提示已安装,否则就继续安装。
我们假设安装界面的网址是:install.php,安装的锁文件是install.lock。我们就可以检测install.lock文件是否存在。
<?phpif (file_exists('install.lock')){ echo '已安装,请不要再次进行安装'; exit; }?>
php 文件常用函数和常量
|平台 |分割符|--|--||windows |
|类unix |/
我们会使用到一个常量:
DIRECTORY_SEPARATOR //代表反斜杠
由于FILE是PHP的预定义常量,所以没办法改变,如果需要让FILE也自适应操作系统。那么就是不要用FILE,可以用自定义的常量,并且把FILE处理一下,如下:
<?php //获取文件路劲,然后用DIRECTORY_SEPARATOR替换路劲中的'/'、'\\';$_current_file = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, __FILE__);//重新字定义常量,输出格式化后的文件路劲define('__CUR_FILE__', $_current_file);echo __CUR_FILE__; // D:\myphp\test\inidex.php?>
文件指针操作函数
rewind ( resource handle) 功能:指针回到开始处 fseek ( resource handle, int offset [, int from_where]) 功能:文件指针向后移动指定字符
<?php> demo2.txt > aaaaa > bbbbb > 11111 > 22222$fp = fopen('demo2.txt', 'r+');//读取10个字符, //读取前十个字节(空格算一个,换行算两个字节)echo fread($fp,10);//指针设置回到开始处 rewind($fp); // aaaaa bbb//再读取10次看看输出的是什么echo '<br>';echo fread($fp,10); // aaaaa bbbecho '<br>';//文件指针向后移动10个字符,(当前指针在最开始的位置)echo fseek($fp,10); // fseek的返回值为0echo '<br>';//再看看文件中输出的是什么echo fread($fp,10); // bb 11111 echo '<br>'; fclose($fp);?>
filesize 检测文件的大小
<?php $filename = 'demo.txt';echo $filename . '文件大小为: ' . filesize($filename) . ' bytes';?>
其它操作文件的函数
其实还有一些其他操作文件的函数,读取文件
函数名 | 功能 |
---|---|
file | 把整个文件读入一个数组中 |
fgets | 从文件指针中读取一行,读到最后返回false |
fgetc | 从文件指针中读取一个字符,读到最后返回false |
ftruncate | 将文件截断到给定的长度 |
fgetc
//以增加的r模式打开$fp = fopen('demo2.txt','r+');//你会发现每次只读一个字符echo fgetc($fp) .'<br>'; //只读取一个字符//我要全部读取可以,读取一次将结果赋值一次给$stringwhile($string = fgetc($fp)){ echo $string; //读取不到返回false}
fgets
//以增加的r模式打开$fp = fopen('demo.txt','r+');//你会发现每次读取一次打开一行echo fgets($fp);echo fgets($fp);echo fgets($fp);echo fgets($fp); //读取不到返回false
ftruncate返回值为1 int
ftruncate($file , len);截取的长度大于文件内容长度,会用空字符填补
//打开我们上面的demo.txt文件$file = fopen("demo.txt", "a+");//你可以数数20个字有多长,看看是不是达到效果了echo ftruncate($file,20); fclose($file);
文件的时间函数
函数 | 功能说明 |
---|---|
filectime | 文件创建时间 |
filemtime | 文件修改时间 |
fileatime | 文件上次访问时间 |
<?php $filename = 'demo.txt'; if (file_exists($filename)) { echo '$filename文件的上次访问时间是:' . date("Y-m-d H:i:s", fileatime($filename)); echo '$filename文件的创建时间是: ' . date("Y-m-d H:i:s", filectime($filename)); echo '$filename文件的修改时间是: ' . date("Y-m-d H:i:s", filemtime($filename));} ?>
php 文件锁处机制
文件锁的用途:
若一个人在写入一个文件,另外一个人同时也打个了这个文件进行写入文件。这情况下,如果遇到一定的碰撞概率的话,不知道到底谁的操作为准。因此,这个时候我们引入锁机制。若用户A在写入或者读取这个文件的时候,将文件加上共享所。我可以读,其他人也可以读。但是,我如果这与的时候。我使用独占锁。这个文件归我了,你们都别动,除非我将文件锁进行释放。
注意:加上了文件锁后要注意释放。
php 文件锁处机制文件锁机制一般在单一打开文件的时候根本看不到效果。这一块的学习有一点点抽象。
大家不要去思考怎么实现的呀?
为什么看不到效果呀?答:因为电脑的操作太快了,基本上是毫秒级的。所以这个实验其实是看不到效果的。
这一章了解文件锁的基本概念即可,熟悉文件锁函数和锁机制。
文件锁的用途:
若一个人在写入一个文件,另外一个人同时也打个了这个文件进行写入文件。这情况下,如果遇到一定的碰撞概率的话,不知道到底谁的操作为准。因此,这个时候我们引入锁机制。若用户A在写入或者读取这个文件的时候,将文件加上共享所。我可以读,其他人也可以读。但是,我如果这与的时候。我使用独占锁。这个文件归我了,你们都别动,除非我将文件锁进行释放。
注意:不论加上了文件锁后要注意释放。
我们来看看这个函数:
bool flock ( resource $handleFile , int $operation)
我们来看看锁类型:
锁类型 | 说明 |
---|---|
LOCK_SH | 取得共享锁定(读取的程序) |
LOCK_EX | 取得独占锁定(写入的程序) |
LOCK_UN | 释放锁定(无论共享或独占) |
我们接下来把demo2.txt加上一个独占锁,进行写入操作。
$fp = fopen("demo2.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { echo '1'; fwrite($fp, "文件这个时候被我独占了哟\n"); // 释放锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人在操作,这个时候不能将文件上锁"; } fclose($fp);
说明:
1.上例中我为了写入文件,把文件加上了独占锁。
2.如果我操作完成,写入完成后,解除掉了独占锁。
3.如果是在读取文件的时候,大家可加按照同样的处理思路加上共享锁。
相关推荐:
以上是php 建立和修改文件內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中