おはようございます!
昨日作るだけ作って更新しなかったので、さっそく更新。
プログラムの基本3構造+POSTだけで何か作れないか考えましたが、
やっぱりそれだとサーバーにある意味がありません
というわけで、テキストファイルに出力して読み込むタイプの処理です。
チャットや掲示板、CMSの原石みたいなかんじです。
画面はこんなかんじ。
ソースはこちら
<?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にもありますが非推奨なので注意
これが出来るといろいろできます。
テキストファイルで処理してるとこをデータベースにすればさらに!