欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

php实现文件留言,PHP文件操作及实例:留言板

发布时间:2023/12/4 php 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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文本文件

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;

}

用户名:

标   题:

内   容:

提 交

总结

以上是生活随笔为你收集整理的php实现文件留言,PHP文件操作及实例:留言板的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。