PHP学習用 HTTP REQUESTを使用したメモ帳の作成


本日学習した内容をアウトプットする。

今回は、post,getメソッドを学習したのでそれらを利用してやることをメモするプログラムを作成した。

まず、index.tql.phpを作成した。

<!DOCTYPE html>
<html lang="ja">
  <?php include('header.inc.php')?>
//header.inc.phpを呼び出し
  <body>
<article class="todo-body">   
<h1 class="title">やることリスト登録</h1>
<form action="result.php" method='post' class='todo-form'>
    <p><?php echo $message;?></p>
    <label for="article">投稿</label>
    <input type="text" name='article'>
    <p></p>
    <label for="name" class='author'>投稿者名</label>
    <input type="text" name='name'><br>
    <button type='submit'>送信する</button>
</form>

<div class="todo-list">
  <h1>やることリスト</h1>
    <?php foreach($lines as $line){?>
      <p>
       <?php echo $line;?><br>
      </p>
   <?php }?>
</div>
</article> 
  </body>
<?php include('footer.inc.php');?>
//footerを呼び出し
</html>

include()関数・・・別のphpファイルを呼び出す。
これにより、保守性を強化することが出来る。

値の受け渡しは、inputのname属性によって値の受け渡しを行なっている。

次にindex.tql.phpファイルを呼び出すためにindex.phpを作成

<?php
$message='ここに本日やることを入力してください';
$lines=file(__DIR__.'/articles.txt',FILE_IGNORE_NEW_LINES);
require_once 'view/index.tql.php';
?>

今回は、「articles.txt」というテキストファイルにやることを追記していく。
詳しく見ていくと、
file()関数により、txtファイルの呼び出しを行なっている。

FILE_IGNORE_NEW_LINES

この部分では、
配列の各要素の最後の改行を省略するという役割を持っている。

次にこれらの結果のページが取得できたときのページを作成していく。

始めに、result.tql.phpファイルにて

<!DOCTYPE html>
<html lang="ja">
  <?php include('header.inc.php')?>
  <body>
<article class="todo-body">   
<h1 class="title">やることリスト登録</h1>
<form action="index.php" method='post' class='todo-form'>
   <p><?php echo $message;?></p>
    <p><?php echo $article;?></p>
    <p><?php echo $name;?></p>
    <button type='submit'>ページに戻る</button>
</form>
</article> 
  </body>
<?php include('footer.inc.php');?>
</html>

そして、これらの呼び出しもとで

<?php 
$message='入力が完了しました';
$article=htmlspecialchars($_REQUEST['article']);
$name=htmlspecialchars($_REQUEST['name']);
$line=$article.",".$name.PHP_EOL;
file_put_contents(__DIR__.'/articles.txt',$line,FILE_APPEND | LOCK_EX);
require_once 'view/result.tql.php';
?>

のように記述を行う。
ここでは、HTTPのPOSTリクエストを受け取る際に、

$article=htmlspecialchars($_REQUEST['article']);
$name=htmlspecialchars($_REQUEST['name']);

のように記述を行う。
htmlspecialcharsでは、コードをHTML形式に変換する役割を持っている。
そして、この中に
$_REQUESTにより値が格納される。

また、取得した$articleを変数にarticles.txtに追加したいので

file_put_contents(__DIR__.'/articles.txt',$line,FILE_APPEND | LOCK_EX);

のように処理を行う。
FILE_APPENDフラグは、前のテキストデータを上書きするのではなく、追記するように指示してくれる。
そして、LOCK_EXでは、同時に1プロセスのみ読み書きすることが出来る。

上記処理によって
画像のような簡単なプログラムを作成することが出来た。
学習ようなのでcssは雑に行っている。



引き続き毎日簡単なプログラムでもいいので学んだ内容をすぐにアウトプットに移していく。

コードは、以下の通りである。
https://github.com/muscleyukou/php_study_form