Bath-managementの振り返り


前置き

初学者がなんか作っているだけなので優しい目で見ていただけると幸いです。

リポジトリはこちらからどうぞ。

経緯

blogを見たらわかるかも。

プログラムの解説

 このプログラムはPHPで書かれています。index、input、judge、update、reset、success、showの7つのファイルからなります。

(詳しくはリポジトリのREADMEを見たらわかるかも。)

うまくいけば 1回目のアクセス時は index -> input -> judge -> index -> update -> success ( -> show) の順、
2回目以降のアクセス時は index -> update -> success ( -> show) の順で処理が進みます。

 一般的な出席管理システムのような、 データベースのクライアントは固定された電子機器1つではなく 各々のスマホでどこでもアクセスでき、洗面所に電子機器を常設しなくてもいいようになっているというのは建前で、 本当はお金と場所を使いたくなかっただけです。

使った学んだ技術やツール

  • PHP

    主な言語

  • セッション

    「サーバ内に情報を保存し、複数ページ間で共有する」仕組みらしい

  • MySQL8

    データベース

  • MySQLAdmin

    データベースを見れるツール的な

  • Linux系のコマンド

    cd、ls、sudo su - など...

  • ssh

    リモートコンピュータと通信するためのなにか

  • Apache2

    Webサーバソフトウェア

  • ネットワークのちょっとした知識

  • などなど...

ハマったこと

MySQLサーバーに接続できない!

Web-serverからMySQLに接続しようとしたら以下のエラーが出てくる。

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.202:3306' (111)

確認したけど関係なかったこと

  • port確認

  • MySQLのユーザー設定

解決方法は以下の通り。

MySQLの設定ファイルを設定する。
「/etc/mysql/mysql.conf.d/mysqld.cnf」ファイルのbind-addressも確認しましょう。
デフォルトでは「127.0.0.1」(ループバックアドレスなので同じホスト内のみ接続可能)となっているので、
接続したいホストに応じてに変更、コメントアウトする。
例えば「0.0.0.0」に設定すれば全てのホストからの接続を許可できる。

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
...
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
...

エラー内容にそう書いてくれ!! ٩(๑`^´๑)۶

振り返り、改善点

classを使ってコードを書いてみたかったが、いまいちよくわからなかったので、
動けばいいや精神でfunctionを使って書いてしまった。
classを使って書いた方がその後の拡張性が高いらしいので、classを使って書く。

環境変数を使ってデータベース名やユーザー名、パスワードを隠したかったが、うまくいかなかった。
Composerを使ってどうだこうだする方法をやりたかったけどエラーしか出なかったのであきらめて
conf.phpに関数を書いて.gitignoreで隠すといういい感じに代用した。はたしてこれでいいのかは分からない?
気が向いたらもう一度チャレンジしてみたい。

また、今回はCookieの一部である「セッション」を使ってログイン機能を実装したが、
iPhoneのSafariは防犯意識が非常に高くCookieがオフになっていることがあるらしい。
なんてこった!対処法は「Cookieを使わないログイン機能」を実装することらしい。気が向いたらやってみたい。