php實現文件留言,PHP文件操作及實例:留言板

一、文件操作函數

1.創建文件:touch('./xxx.php');

bool touch ( string $filename [, int $time = time() [, int $atime ]] )

2.復制文件:copy('./xxx.php','./yyy.php');

3.移動或重命名:rename('./xxx.php','./yyy.php');

4.刪除文件:unlink('./xxx.php');

5.截取文件:ftruncate('./xxx.php',$size);

6.文件內容操作:

a.file_get_contents('./xxx.php');獲取文件

b.file_put_contents('./xxx.php','aaa');寫入文件

注:可以遠程讀取文件,如:file_put_contents('./xxx.php',file_get_contents('http://www.baidu.com'));

C.讀文件readfile('http://www.baidu.com');

d.$arr=file('./xxx.php'):將文件存為數組,每一行是一個元素

注:以上涉及讀取文件內容的函數無需先打開文件

二、文件的打開與關閉

1.$open=fopen('./xxx.php','r');

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

注:附加Mode:b操作二進制文件時加上,t文本文件

0818b9ca8b590ca3270a3433284dd417.png

2.fclose($open);

3.fwrite($open,'aaaa');可以更改fopen的mode,改變每次寫入是否覆蓋

4.fgetc($open);一次讀取文件一個字符

5.feof($open);指針到文件結尾返回true,可用作if判斷

6.fgets($open);一次讀取文件一行

7.fread($open,1024);一次讀取指定長度(字節數)的字符

注:以上讀取文件內容必須先打開文件

while(!feof($open)){

echo fgetc($open);

echo fgets($open);

echo fread($open,filesize($open));

}

三、移動文件的指針

1.ftell($open);返回指針當前位置,默認為開始

2.fseek($open,-4,SEEK_END);將指針移動至某位置,如從文件尾前移4個字節,注意結尾可能有換行符。可以配合fopen的a追加模式更方便的操作

$whence值可以是:

?SEEK_SET - 設定位置等于 offset 字節。

?SEEK_CUR - 設定位置為當前位置加上 offset。

?SEEK_END - 設定位置為文件尾加上 offset。

3.rewind($open);將指針放到開頭

四、文件的鎖定機制

1.flock($open,LOCK_SH):讀取/寫入文件時都需要鎖定(LOCK_SH/LOCK_EX),以防止多人同時操作,解鎖時方法相同(LOCK_UN)

注:$handle必須指向一個打開的文件資源

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

operation 可以是以下值之一:

? LOCK_SH取得共享鎖定(讀取的程序)。

? LOCK_EX 取得獨占鎖定(寫入的程序。

? LOCK_UN 釋放鎖定(無論共享或獨占)。

五、實例:留言板

$filename='message.txt';

if(isset($_POST['dosubmit'])){

$content="{$_POST['username']}||".time()."||{$_POST['title']}||{$_POST['content']}[n]";

writeMessage($filename,$content);

}

if(file_exists($filename)){

date_default_timezone_set('PRC');

readMessage($filename);

}

function writeMessage($filename,$content){

$open=fopen($filename,'a');

if(flock($open,LOCK_EX+LOCK_NB)){//添加寫入鎖及防阻塞

fwrite($open,$content);

flock($file,LOCK_UN+LOCK_NB);//釋放寫入鎖及防阻塞

}else{

echo "寫入鎖定失敗!";

}

fclose($open);

}

function readMessage($filename){

//不打開文件讀取,無法加鎖

//$mess=rtrim(file_get_contents($filename),'[n]');

$mess='';

$file=fopen($filename,'r');

if(flock($file,LOCK_SH+LOCK_NB)){//添加讀取鎖及防阻塞

while(!feof($file)){

$mess.=fread($file,1024);

}

flock($file,LOCK_UN+LOCK_NB);//釋放讀取鎖及防阻塞

}else{

echo "讀取鎖定失敗!";

}

$mess=rtrim($mess,'[n]');

$arr=explode('[n]',$mess);

foreach($arr as $value){

list($username,$time,$title,$content)=explode("||",$value);

echo "{$username},".date('y-m-d h:i',$time).":{$title}{$content}



";

}

fclose($file);

}

?>

input{

display: block;

}

textarea{

display: block;

}

用戶名:

標???題:

內???容:

提?交

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281680.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281680.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF-11 路由事件之一

什么是路由事件?我們從兩個維度來理解路由事件:功能的角度來看,路由事件是一種事件類型,不僅僅可以在事件源上處理事件響應,還可以在元素樹的多個偵聽器上處理事件響應(事件偵聽器是附加和調用事件處理程序的元素。事件…

個人總結的一個中高級Java開發工程師或架構師需要掌握的一些技能...

近三年,其實都是在做一個項目,項目是一個大型的多節點部署的項目,做了好幾個版本,中間用到了很多技術和框架, 也用了一些管理工具和敏捷實踐。我這里不是來說項目的,因為最近看了一些招聘信息,結…

Android 進程常駐(5)----開機廣播的簡單守護以及總結

這是一個輕量級的庫,配置幾行代碼。就能夠實如今android上實現進程常駐,也就是在系統強殺下,以及360獲取root權限下。clean master獲取root權限下都無法殺死進程 支持系統2.3到6.0 支持大部分設備,包含三星。華為。oppo&#xff0…

[k8s]metricbeat的kubernetes模塊kube-metric模塊

正確姿勢啟動metricbeat metricbeat.modules: - module: systemmetricsets:- cpu- filesystem- memory- network- processenabled: trueperiod: 10sprocesses: [.*]cpu_ticks: falseoutput.elasticsearch:hosts: ["http://192.168.x.x:9200"]setup.template.name: &q…

如何為 Task 添加超時功能

前言假設有如下代碼,功能是首先從緩存獲取數據,如果沒有命中緩存,則直接從數據庫獲取:var data await GetFromCache(); if (data is null) {data await GetFromDB(); }對于獲取緩存數據,我們需要限制一下GetFromCach…

php 隨機指定位數,php生成一個可選位數的隨機碼

echo coding(6);function coding($num){$str_arr array(‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘,‘l‘,‘m‘,‘n‘,‘o‘,‘p‘,‘q‘,‘r‘,‘s‘,‘t‘,‘u‘,‘v‘,‘w‘,‘x‘,‘y‘,‘z‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘…

Animate與transform的使用

Animate是用css給前端加載動畫的效果&#xff1a; 網址&#xff1a;https://daneden.github.io/animate.css/ <!DOCTYPE html> <html lang"en"> <head><link rel"stylesheet" href"static/css/Animate.css"><meta ch…

angular中的cookies與cookieStore區別

設置cookie用put()方法: $cookies.put(key, value[, options]); $cookieStore.put(key, value); 例如設置一個cookie&#xff0c;名為“userName”&#xff0c;值為“yangmin”&#xff1a; //使用$cookies設置cookie $cookies.put(userName, yangmin); //使用$cookieStore設置…

ASP.NET Core 6框架揭秘實例演示[29]:搭建文件服務器

通過HTTP請求獲取的Web資源很多都來源于存儲在服務器磁盤上的靜態文件。對于ASP.NET應用來說&#xff0c;如果將靜態文件存儲到約定的目錄下&#xff0c;絕大部分文件類型都是可以通過Web的形式對外發布的。“Microsoft.AspNetCore.StaticFiles” 這個NuGet包中提供了三個用來處…

js 棧(進制轉換)

<!DOCTYPE html>Documentposted 2017-12-07 19:33 mysure 閱讀(...) 評論(...) 編輯 收藏 刷新評論刷新頁面返回頂部轉載于:https://www.cnblogs.com/ar13/p/8000718.html

流程展示 php,js實現動態的流程進度展示條

這次給大家帶來js實現動態的流程進度展示條&#xff0c;js實現動態流程進度展示條的注意事項有哪些&#xff0c;下面就是實戰案例&#xff0c;一起來看一下。一、設計思路分為以下幾步(僅供參考)【豎線線】這個采用ul的list標簽制作&#xff0c;保證了可隨時添加&#xff0c;以…

【我們一起寫框架】C#的AOP框架

原文:【我們一起寫框架】C#的AOP框架前言 AOP&#xff0c;大家都是聽過的&#xff0c;它是一種面向切面的設計模式。 不過AOP雖然是被稱為設計模式&#xff0c;但我們應該很少能看到AOP設計的框架。為什么呢&#xff1f; 因為&#xff0c;AOP單獨設計的框架幾乎是無法使用的。普…

新浪微博授權認證過程

為什么80%的碼農都做不了架構師&#xff1f;>>> 一、授權認證 1、請求用戶授權Token URL&#xff1a; https://api.weibo.com/oauth2/authorize HTTP請求方式:GET/POST 請求參數 必選 類型及范圍 說明 client_id true string 申請應用時分配的AppKey。 redire…

VisualStudio 使用 FastTunnel 輔助搭建遠程調試環境

有時候需要遠程調試一些用戶問題&#xff0c;期望能使用本機的 Visual Studio 開發環境&#xff0c;調試遠程的用戶的設備上的應用。這時會遇到的一個問題是如何讓本機的 Visual Studio 可以連接上遠程的用戶的設備&#xff0c;從而進行調試。本文將告訴大家如何采用 FastTunne…

深入理解null的原理

--null的原理 --oracle一直將null和空字符串’’<長度為0>同等對待<如’’ is null是true,’’null為false,如果聲明a varchar2:’’,那么a is null為true,a’’為false>--1.null的運算 --算術表達式和null 運算總為null,實際上所有的操作符除了||連接操作符外&…

阻止中文輸入法輸入拼音的時候觸發input事件

阻止中文輸入法輸入拼音的時候觸發input事件 前言 最近看element-ui源碼的時候看到el-input發現的。這個少見的事件。 compositionstart、compositionend事件&#xff08;MDN解釋) compositionstart事件觸發于一段文字的輸入之前&#xff08;類似于 keydown 事件&#xff0c;但…

Python1

python介紹python是一種解釋型的&#xff0c;面對對象的。帶有動態語義的高級程序設計語言python簡史1989年,Guido(龜叔)為ABC 語言寫的一個插件。因Monty Python的喜劇團體的原因,故給這個語言起名為python。linux也是1989年誕生的,1991年正式發布linux1.0內核;1990年, 發布py…

ncut算法matlab實現,ncut_multiscale_1_6 經典的圖像分割算法 的Matlab代碼。 238萬源代碼下載- www.pudn.com...

文件名稱: ncut_multiscale_1_6下載收藏√ [5 4 3 2 1 ]開發工具: matlab文件大小: 587 KB上傳時間: 2015-04-17下載次數: 4提 供 者: HH詳細說明&#xff1a;經典的圖像分割算法NCut的Matlab代碼。-Matlab code of classic image segmentation algorithm NCut .文件列表(…

使用.NET從零實現基于用戶角色的訪問權限控制

使用.NET從零實現基于用戶角色的訪問權限控制本文將介紹如何實現一個基于.NET RBAC 權限管理系統&#xff0c;如果您不想了解原理&#xff0c;可查看推送的另一篇文章關于Sang.AspNetCore.RoleBasedAuthorization[1] 庫是使用介紹&#xff0c;直接使用該庫即可。背景在設計系統…

數據歸一化

數據歸一化 數據的標準化是將數據按比例縮放&#xff0c;使之落入一個小的特定區間&#xff0c;一般為0到1之間。在某些比較和評價的指標處理中經常會用到&#xff0c;去除數據的單位限制&#xff0c;將其轉化為無量綱的純數值&#xff0c;便于不同單位或量級的指標能夠進行比較…