ニュースの作成 誤りの指摘やご意見はこちらへ ご意見板
BBS

PHP Top
項目
ニュース作成機能 ↑項目に戻る
更新履歴や,ちょっとしたニュースを作成する機能です.
実は,PHPトップの更新履歴の部分もこのスクリプトを使用しています.
単純ですが,ブラウザだけあれば,ページの更新ができるので非常に便利です.

newspost.phpを,以下の内容で作成してください.

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
  </head>
  <body bgcolor="#FFFFFF" text="#006666">
    <br>
    ニュース投稿フォーム<br>
    <br>

    テキストエリアに投稿内容を書き込み,送信ボタンを押してください. <br>

    <form method="post" action="newspost.php">
      <input type"text" name="contents" value="" size="50" maxlength="256">
      <br><br>
      <input type="submit" name="submit" value="送信">

    </form>
    <br>

    <?php

      $filename = "news.dat";

      if(isset($_POST['submit'])){
        print("投稿内容: ".$_POST['contents']);

        $file = fopen($filename, "w");

        flock($file, 2);
        fwrite($file, $_POST['contents']);
        flock($file, 3);

        fclose($file);
      }

    ?>
  </body>
</html>

次は,printnews.phpを以下の内容で作成してください.

<?php

  //printnews.php

  $filename = "news.dat";
  $file = fopen($filename, "r");

  flock($file, 2);
  $contents = fread($file, filesize($filename));

  print $contents;

  flock($file, 3);
  fclose($file);

?>

次節以降より,解説です

その前に
newspost.phpを試す
printnews.phpを試す(newspost.phpで投降した後に試してください.)

フォーム ↑項目に戻る
今回は,フォームにより,サーバにデータを送信します.
「newspost.php」をごらんください.

    <form method="post" action="newspost.php">
      <input type"text" name="contents" value="" size="50" maxlength="256">
      <br><br>
      <input type="submit" name="submit" value="送信">
    </form>

HTMLで上のように記述すると,ブラウザ上では以下のように見えます.(注意:セキュリティ上,下のフォームは機能は実装していないものにしています.アップロードはできません.)

ニュース投稿フォーム

テキストエリアに投稿内容を書き込み,送信ボタンを押してください.



      <input type"text" name="contents" value="" size="50" maxlength="256">
      <br><br>
      <input type="submit" name="submit" value="送信">

テキストエリアに入力された文字列は,「contents」という名前でサーバに送信されます.  ボタンが押されると,「submit」という名前で,「送信」という文字列がサーバに送られます.

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

送り先は,newspost.phpファイルです.
今回は送り先と,送り元のページが同じですが,もちろん違うページに
データを送信しても構いません.


 図:newspost.phpの動作のイメージ

methodは,サーバへデータを送信する方法です.「GET」と「POST」がありますが, 通常はPOSTを使うようにしましょう.

GET - URLに変数を付加してデータを送信する.[http://hoge.com&a=1]など.文字数制限がある.
POST - 標準入力よりデータを送信する.

変数の受け渡し ↑項目に戻る
PHPでは,POSTによって送信された変数を,$POST['変数名'], GETによって送信された変数を,$_GET['変数名']でアクセスすることができます.

if(isset($_POST['submit'])){
  print("投稿内容: ".$_POST['contents']);

  $file = fopen($filename, "w");

  flock($file, 2);
  fwrite($file, $_POST['contents']);
  flock($file, 3);

  fclose($file);
}

newspost.phpよりnewspost.phpへデータを渡しているので少々わかりにくいかもしれませんが, 初回にnewspost.phpを訪れたときには,当然 変数「$_POST['submit']」はセットされていません.

ところが,「送信ボタン」を押した後にnewspost.phpが表示されたときには, $_POST['submit']と,$_POST['$contents']にはそれぞれ,ユーザの入れたデータが入っているわけです.

ここでは,isset関数により場合わけをしています.$_POST['submit']の内容が空ならば何も処理をしません. 空でないならば,投稿内容の表示,ファイルへの投稿内容書き込みといった,処理をします.

printnews.phpは以下の内容です.

<?php

  //printnews.php

  $filename = "news.dat";

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

  flock($file, 2);

  if(filesize($filename) == FALSE) $contents = "新着のニュースはありません";
  else $contents = fread($file, filesize($filename));

  print $contents;
  flock($file, 3);


  fclose($file);

?>

さきほど書き込まれた投稿内容をprintするだけの,簡単な処理です.

応用 ↑項目に戻る
今回作成したprintnews.phpを他のスクリプトより呼び出してみましょう.これは実に簡単です.

<? include("printnews.php"); ?>

と,ニュースを表示したい部分に埋め込むだけです.

ニュースだけ毎日変わるようなサイトがあったとしましょう.
毎日HTMLを書き換え,FTPでサーバにアップロードした日々にはもうサヨナラです.

そう,PHPの使えるあなたは,ブラウザに一行入力するだけで良いのです!
たとえ,外出先からだとしても!
オウ イエス,ザッツグレイト!

↑項目に戻る

PHP Top