9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

怠惰な大学生が楽単サイト作ったら2万アクセスきた

Last updated at Posted at 2020-05-15

初投稿です。

#はじめに
大学生が求めがちな楽単。サークルや部活に所属しているとその情報は手に入れやすいですが、そういったところに所属していない人にはあまりその情報は回ってこないものです。さらに今年の新入生には例のあのウイルスの影響で授業の情報が入ってきません。この状況では学生によって不利が生まれると思ったので授業のクチコミサイトを作りました。
実際はプログラミング初心者が最初に作りがちな典型的な掲示板です。しかし、思いの外需要があり、 いや、本当は需要あるとわかってた。 2万アクセスを得ました。
これを観ている方の中で大学生の方がおりましたらコピペして作ってみてはいかがでしょうか。

#リンク
https://ishiike.matrix.jp

#開発環境
macOS Catalina (10.15.4)
Visual Studio Code (1.35.1)
PHP (7.3.16)

#サイトの構成
ishiike.png
※その他のページは夏期集中講義など

#各曜日のPHPのコード
index.htmlは割愛


<?php
//書き込まれたテキストの関数と何も書き込まれなかった場合のエラーメッセージの関数を最初に定義
$error_message1 = "";
$error_message2 = "";
$error_message3 = "";
$error_message4 = "";
$posted_message ="";
$class_name = ( isset( $_POST["class_name"] ) === true ) ?$_POST["class_name"]: "";
$timetable = ( isset( $_POST["timetable"] ) == true ) ?$_POST["timetable"]: "";
$teacher_name = ( isset( $_POST["teacher_name"] ) == true ) ?$_POST["teacher_name"]: "";
$comment  = ( isset( $_POST["comment"] )  === true ) ?  trim($_POST["comment"])  : "";

//改行を削除
//テキストデータを1行ずつ取得して表示するため改行不可(改善したい)
$comment = str_replace(array("\r\n", "\r", "\n"), '', $comment);

//すべての項目に書き込まれたか判定
//足りている場合テキストファイルに保存
//足りない場合エラーメッセージを代入
if (  isset($_POST["send"] ) ===  true ) {
    if ( $class_name   === "" ) $error_message1 = "授業の名前を入力してください"; 

    if ( $timetable === "" ) $error_message2 = "何時間目か入力してください";

    if ( $teacher_name === "" ) $error_message3 = "先生の名前を入力してください";
 
    if ( $comment  === "" )  $error_message4 = "コメントを入力してください";
 
    if( $error_message1 === "" && $error_message2 === "" && $error_message3 === "" && $error_message4 === "" ){
        $fp = fopen( "[曜日名].txt" ,"a" );
        fwrite( $fp ,  $class_name."\t".$timetable."\t".$teacher_name."\t".$comment."\n");
        $posted_message = "書き込みに成功しました。";
    }
 
}
 
//テキストファイルの読み込み
$fp = fopen("[曜日名].txt","r");
 
//テキストデータを1行ずつ取得し空白で分けて配列に
$dataArr = array();
while( $res = fgets( $fp)){
    $tmp = explode("\t",$res);
    $arr = array(
        "class_name"=>$tmp[0],
        "timetable"=>$tmp[1],
        "teacher_name"=>$tmp[2],
        "comment"=>$tmp[3]
    );
    $dataArr[]= $arr;
} 
 
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>石池|Ishiike [曜日名]</title>
        <link rel="icon" href="ishiike_logo.png" type="image/png">
    </head>
    <body>
        <header>
        <h1><a href="https://ishiike.matrix.jp"><img src="ishiike_logo.png" width="210px" height="100px"></a>【曜日名】</h1>
        </header>
        <?php echo $posted_message; ?>
        <form method="post" action="">
        授業名:<input type="text" name="class_name" value="<?php echo $class_name; ?>" style="font-size:1em;">
            <?php echo $error_message1; ?><br>
        時間:<input type="text" name="timetable" value="<?php echo $timetable; ?>" style="font-size:1em;">
            <?php echo $error_message2; ?><br>
        先生の名前:<input type="text" name="teacher_name" value="<?php echo $teacher_name; ?>" style="font-size:1em;">
            <?php echo $error_message3; ?><br>
        コメント:<textarea  name="comment" rows="4" cols="80" style="font-size:1em;"><?php echo $comment; ?></textarea>
            <?php echo $error_message4; ?><br>
<br>
          <input type="submit" name="send" value="投稿" rows="2" cols="4" style="font-size:2em;">
        </form>
        <dl>
         <!-- 配列をそれぞれ表示 -->
         <?php foreach( $dataArr as $data ):?>
         <p><span style="font-size:20px;"><?php echo htmlspecialchars($data["class_name"]); ?> : <?php echo htmlspecialchars($data["timetable"]); ?> : <?php echo htmlspecialchars($data["teacher_name"]); ?><br>
         <?php echo htmlspecialchars($data["comment"]); ?></span></p>
        <?php endforeach;?>
</dl>
<br>
        <a href="https://ishiike.matrix.jp/">ホーム</a>
    </body>
</html>

※サークルのページは[サークル名]と[コメント]の2項目

#最後に
開設当初は授業だけでしたがサークルのページを追加したらもっとアクセスが増えました。
実はこれを作ろうとしたときPHPにはそれまで触れたことはなく学びながら探り探りで作ったものです。
セキュリティ的にもたくさんの不安を抱えてるものとなっていると思います。
そういった点はご指摘いただけると幸いです。

##追記
github
https://github.com/basyakue/Ishiike

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?