为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 简单留言板

标签:
PHP

/*

 * 文件的锁定机制

 * flock()轻便的咨询文件锁定

 * LOCK_SH取得共享锁定(读取的程序)。 

 * LOCK_EX 取得独占锁定(写入的程序。 

 * LOCK_UN 释放锁定(无论共享或独占)。 

 * 如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。 

 *  

 */

 /*

  * 留言板

  */

    $filename = "message.txt";

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

        //字段的分隔||  行的分隔[n]

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

        writemessage($filename, $mess);

    }

 

    if(file_exists($filename)){

        readmessage($filename);

    }

    //读信息

    function readmessage($filename){

          //      $mess = file_get_contents($filename);

                $mess = "";

                $fp = fopen($filename, "r");

                flock($fp, LOCK_SH+LOCK_NB);//读锁定

                while(!feof($fp)){

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

                }

                flock($fp, LOCK_UN+LOCK_NB);//释放锁

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

                $arrmess = explode("[n]", $mess);

                foreach($arrmess as $m){

                    list($username,$daytime,$title,$content) = explode("||", $m);

                    echo "<b>{$username}</b>,".date('Y-m-d H:i:s',$daytime).",<i>{$title}</i><br/><u>{$content}</u><br/><br/><br/>";

                }

                fclose($fp);

    }

    //写信息

    function writemessage($filename,$mess){

        $fp = fopen($filename, "a");

       //锁定文件

        if(flock($fp, LOCK_EX+LOCK_NB)){

            fwrite($fp, $mess);

            flock($fp,LOCK_UN+LOCK_NB);//释放文件

        }else{

            echo '写入锁定失败!';

        }

        fclose($fp);

    }

?>

<form action="index.php" method="post">

用户名:<input type="text" name="username" value=""/><br/>

标题:<input type="text" name="title" value=""/><br/>

内容:<textarea name="content" cols="40" rows="4"></textarea><br/>

<input type="submit" name="dosubmit" value="留言"/>

</form>

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消