梅木千世で
御座います。
法人ホームページなんか作っているとよくあるんですが、クライアントが更新しやすいようにCMSにする事があります。
というとWordPressで作ればいいんですが、せっかくWordPressで作ってもトップページしか更新しないのではかけた時間がもったいないですので、
今日は既存のWebサイトの、更新履歴など一部分をCMSぽくするPHPを書いてみました。
ターゲットとなる本体ページ「include.php」
入力フォーム「article_form.php」
プログラム本体「fputs.php」
更新に使う上書きファイル「article.php」(「deta」というフォルダの中に格納する事にします)
article.phpはとりあえず空でいいです。
はずは送信に使うフォーム。事実上の管理ページになります。
<DOCUTYPE html>
<html>
<head><title>フォームの送信</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
</head>
<body>
<form action=”fputs.php” method=”post”>
<p>
本文:<br>
<textarea name=”writingtext” rows=”40″ cols=”80″></textarea><!–writingtextの値をfputsに送っています–>
</p>
<p>
<input type=”submit” value=”送信”><input type=”reset” value=”リセット”>
</p>
</form>
</body>
</html>
次にプログラム本体。
<?php
$comment = $_POST[“writingtext”];/*受け取った値を$commentに代入します*/
$column = $comment.”\n\n”;/*受け取った値を$commentと改行コード2つ(1個だと行の終わりになり改行しない)を$columnに代入します*/
$file = fopen(“./deta/article.php”,”wb”);/*detaに格納したarticleを上書きモードで呼び出します*/
flock($file,LOCK_EX);/*自分以外が編集できると困るので排他的にロックします*/
fputs($file,$column);/*article.phpファイルに$columnを書き込みます*/
flock($file,LOCK_UN);/*排他的ロックをやめます*/
fclose($file);/*ファイルを閉じます*/
?>
<DOCUTYPE html>
<html>
<head>
<title>フォームの入力</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
</head>
<body>
<p>
書き込みが完了しました。<br>
</p>
<p>
<a href=”include.php” target=”_blank”>ページを確認する</a>
</p>
<a href=”article_form.php”>入力ページ</a>
<p>
</p>
</body>
</html>
最後に更新されたファイルを読み込んでHTMLにします。
<DOCUTYPE html>
<html>
<head><title>インクルードを使う</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
</head>
<body>
<p>
<?php include(“deta/article.php”); ?>/*articleはHTMLの形をしていないので、HTMLを書くファイルに埋め込みます*/
</p>
</body>
</html>
こんな感じで、最低限それっぽいファイルができたんじゃないかと思います。