なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

PHPの基礎~一言掲示板ちっくななにか~

f:id:nazuna_0124:20170312082946p:plain

おはようございます!

昨日作るだけ作って更新しなかったので、さっそく更新。


プログラムの基本3構造+POSTだけで何か作れないか考えましたが、

やっぱりそれだとサーバーにある意味がありません


というわけで、テキストファイルに出力して読み込むタイプの処理です。


チャットや掲示板、CMSの原石みたいなかんじです。


テキストファイル書き込みテスト

画面はこんなかんじ。

f:id:nazuna_0124:20170312083534p:plain

ソースはこちら

<?php
    $inputName = '';

define("TXT_PATH","log.txt");

    //postがあったら書き込みする。
    if(!empty($_POST)){
        //文章作成
        $str[] = date('Ymd H:i:s');
        //$str[] = $_SERVER['REMOTE_ADDR']; //IPを表示しておきたいとき
        $str[] = $_POST['name'];
        $str[] = $_POST['text'];
        $str[] = "\r\n";

        file_put_contents(TXT_PATH,implode(",",$str),FILE_APPEND);

        //名前維持のために変数へ格納
        $inputName = $_POST['name'];
    }



    $getTxt = htmlspecialchars(file_get_contents(TXT_PATH),ENT_COMPAT);
    $getTxt = str_replace("\r\n","<br>",$getTxt);

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>txt test</title>


</head>
<body>

    <form name="frm" action="" method="POST">
    名前
    <input name ="name" type="text" size="30" maxlength="255" value="<?php echo $inputName ?>">
    <p>
    本文
    <input name="text" type="text" size= "" maxlength="255">
    </p>

    <p>
    <input type="submit" value="送信">
    </p>

    </form>

    <br>

    <?php echo $getTxt;?>


    <script>
   window.onload= function(){
       if(document.frm.name.value == ''){
           document.frm.name.focus();
       }else{
           document.frm.text.focus();
       }
   }

</script>
    </body>
</html>

ファイルを書き込む処理として file_put_contents 使ってます。

ロックがどうなってるのかさっぱりわかりません

同時書き込みとかどうなるんでしょーね…


初めて使う時は名前にフォーカスがあたって、

本文入力後は本文側にフォーカスあたるようになってます


この手の使いやすさはとっても大事。チャットでは基本といえば基本ですけれど。


$text =['日付','名前','本文']

こーゆう配列を 「日付,名前,本文,」という風に

文字列に置き換えてくれるのがimplodeです。

他の言語だとjoinかな? 


PHPにもありますが非推奨なので注意


これが出来るといろいろできます。


テキストファイルで処理してるとこをデータベースにすればさらに!