PHP 간이포럼 제작 ①~발언 기능~

15966 단어 HTMLPHP
다음과 같은 기능이 부착된 간이 게시판을 제작한다.
1. 발언 기능: {번호}<>{명칭}<>{주석}<>{발언 시간}의 형식으로 발언 내용을 표시합니다.또 각 발언에 비밀번호를 설정할 수 있다.
2. 삭제 기능: 지정된 번호의 발언을 삭제할 수 있습니다.비밀번호 인증도 한다.
3. 편집 기능: 지정된 번호의 발언을 편집할 수 있습니다.여기도 비밀번호 인증을 합니다.
이번에는 1.목표는 투고 기능을 실현하는 것이다.

1단계 입력 창 만들기


이름, 주석, 비밀번호 입력란을 만들고 다음touko를 만듭니다.1. php에 POST를 보냅니다.
keijiban.php
<html>
<body>
<form action="toukou_1.php" method="post"> <!--ファイルmethodの指定-->
  <table border="1">
    <tr>
      <td>名前</td>
      <td><input type="text" name="name" required></td> <!--名前の入力フォーム作成-->
    <td>コメント</td>
      <td><input type="text" name="comment" required></td> <!--コメント入力フォーム作成-->
      <td>パスワード設定
      <td><input type="text" name="pass" required></td> <!--パスワード入力フォーム作成-->
      <td colspan="2" align="center">
        <input type="submit" value="送信"> <!--送信ボタン作成-->
    </tr>
  </table>
</form>
</body>
</html>

2단계 입력 데이터 저장


toukou_1. POST에서 받은 문자열을 txt에 저장합니다.{암호}<>{번호}<><>{주석}<>{발언시간}의 형식으로 저장합니다.
toukou_1.php
<?php
    $name = $_POST['name'];
    $comment = $_POST['comment'];
    $date = date("Y/m/d H:i:s");
    $pass = $_POST['pass'];

    $filename = 'toukou_1.txt'; /*保存先にファイル名を$filenameに代入*/

    $fp = fopen($filename,'a'); /*ファイルを追記モードで開く*/

    fwrite($fp,$pass.' <> '.$name.' <> '.$comment.' <> '.$date."\n"); /*情報をファイルに書き込む*/

    fclose($fp); /*ファイルを閉じる*/
?>

<?php
    unlink('toukou_2.txt'); /*ここでtoukou_2.txtを削除するコードを入れておく。理由は後ほど。*/
    ?>

<?php
    header('Location:toukou_2.php'); /*次の処理を行うファイルへ移動させる*/
    ?>

3단계에서 실제로 표시되는 발언 내용 작성


지금1. txt에도 비밀번호를 입력한 상태여서 다른 파일touko2. txt에서 비밀번호를 삭제하고 발언 번호를 추가하여 브라우저에 실제 표시된 내용을 포럼으로 저장합니다.
toukou_2.php
<?php

$data = file_get_contents('toukou_1.txt'); /*toukou_1.txtを読み込む*/
$element = explode( "\n",$data);/*toukou_1.txtを各行で分割する。file関数でも良い?*/
$cnt = count( $element ); /*分割した要素の数(行数)をカウントする*/

    for( $i=0;$i<$cnt;$i++ ){ /*行末までループする*/

    $fp = fopen("toukou_2.txt","a"); /*追記モードで開く*/
    $num = count( file('toukou_2.txt')); /*ファイルのデータの行数をかぞえて$numに代入*/
    $num++; /*投稿番号の取得*/
        $youso = explode(" <> ",$element[$i]); /*各1行を <> で分割する。*/
    fwrite($fp,$num.' <> '.$youso[1].' <> '.$youso[2].' <> '.$youso[3]."\n"); /*パスワード($youso[0])以外の情報をファイルに書き込む*/
    fclose($fp);
    }
?>

<?php
    header('Location:toukou_3.php'); /*次の処理を行うファイルへ移動する*/
    ?>

4단계 발송 완료 확인 및 발언 내용 표시


사용자의 편의성을 고려해 기고 후 발언이 완료된 정보를 표시한다.또 투고 형식의 투고 내용을 보여준다.
toukou_3.php
<?php
echo "名前とコメントを送信しました";
?>

<html>
<body>
<form>
<input type="button" onClick="location.href='keijiban.php'" value="簡易掲示板に戻る">
</form>
</body>
</html>
<!--掲示板に移動するボタンを作成する-->
표를 만드는 키지반.php 가touko2. txt 내용을 표시하는 프로그램을 설치합니다.
keijiban.php
<html>
<head><title>簡易掲示板</title></head>
<body>
簡易掲示板<br /><br />

<?PHP
    $file_name = "toukou_2.txt"; /*読込ファイルの指定*/
    $ret_array = file( $file_name ); /*ファイルを全て配列に入れる*/
    for( $i = 0; $i < count($ret_array); ++$i ) { /*行末までループする*/

        echo( $ret_array[$i] . "<br />\n" ); /*配列を順番に表示する*/

    }
    ?>

<!--これより下は手順1で作成したもの-->

<form action="toukou_1.php" method="post"> 
  <table border="1">
    <tr>
      <td>名前</td>
      <td><input type="text" name="name" required></td> 
    <td>コメント
      <td><input type="text" name="comment" required></td> 
      <td>パスワード設定
      <td><input type="text" name="pass" required></td>
      <td colspan="2" align="center">
        <input type="submit" value="送信"> 
    </tr>
  </table>
</form>
</body>
</html>
브라우저에 다음과 같이 표시됩니다.

좋은 웹페이지 즐겨찾기