ウチイダ的ジョブチェンジ.log

独自Webサービスの開発を担当することになった、SE未経験者のたたかいの記録である!

IA日誌② - ユーザー入力データを攻略せよ!

どーも、ウチイダです。

 

引き続き、インターネットアカデミー様でもりもりとphpを学習中です。
前回までは、XAMPP環境とか文法とかの説明で終わってしまったので若干物足りないなと思っていました。←

 

今週はformとPOSTを中心としたユーザー入力の処理を勉強しました!
コーディングする内容も増えてきたのでやりごたえもあります。

 

今週も、学んだ内容を記録しておきます。

 

 

formタグと入力要素の種類

formタグの要素やらinputタグの種類とかセレクトボックスとか。phpというよりはhtmlタグの説明です。

 

ユーザー入力データの処理

主に文字コード変換とhtml特殊文字変換、改行コードの処理についてでした。

セキュリティ上大事なことなので、きちんと項目を作って説明してあるのは素晴らしいですね。

 

改行コードの処理はstr_replace()を練習のため使わせたいということなのでしょうけど、せっかく標準で<br>挿入の関数nl2br()があるのでそっちを使えばいいのでは。。。

 

ところで、nl2brの「nl」って何の略なんでしょうねw

 

共通ファイル(.tmpl)とデータ(.dat)の読み込み

phpの講座なので、データベースなんて甘えたものは使いません!

すべてファイルをfopenしてストリームに乗せて処理します。POSTされたデータもfwriteでファイルに追記。

 

中学生くらいのころに触ってたCGIプログラムを思い出しますねー。
 

問い合わせフォームの作成

ここまでの内容を踏まえて、ユーザーから入力された内容をサーバー側のテキストファイルに保存するプログラムを作成しました。

 

作成と言っても、素材として作例があって、その内容を解説するという形です。

ここまでやってきたことがたくさん出てくるので、よい復習になると同時に、

関数と条件分岐を組み合わせて望む動作・機能を作るというプログラミングの基本的な発想を実感することができました。

 

応用編として、お問い合わせフォームに投稿があったことをメールで通知するという機能を追加するという課題もあります。

既存のコードに機能を追加するのも大事ですので、そういう練習ができるのはいいですね。

 

掲示板機能(来訪ノート)の作成

続いて、問い合わせフォームを発展させた機能として、掲示板機能を作成しました。

問い合わせフォームではユーザーが入力した内容を画面上に表示する機能がありませんでしたが、掲示板ではその機能が新しく追加になります。

 

実践編では画像を投稿する処理も追加したり、「プログラミングしている感覚」を得られるので面白いです。

 

ざっくり感想

今週はとりあえず作例コードの手コピをひたすらやりました。

トータル1000行弱くらいでしょうか。手コピでこれだと遅いですね…

 

最近、お仕事のほうではjs/jQueryばかり触っていたので、phpの文法が手になじまない!!

変数宣言でvarつけちゃったり、逆に$付け忘れたりとか。w

phpをこんなにたくさん触ったのは久しぶりだったので、なかなか手が慣れません。

 

また、自分以外の人が書いたコードをじっくり読み解く機会ってあまり経験したことがなかったので、その点もよい勉強になっています。

 

課題のコードはcssで見栄えを整えているわけでもないですし、すごく高度なものを作っているという感じではありません。

扱っているプログラムの全体像が分かるようにあえてそういう内容にしているようです。

 

未経験の方にとってはもちろんのこと、僕のように少しかじったことのあるレベルの方にも、コード全体を読んで理解して、動作を把握する練習になります。

全体像を把握することで、どういう志向をもってコーディングされているのかを感じ取ることができるからです。

 

自分とは違う発想や順序で記述されるコードを読んで、書き換えて、デバッグするのって結構面白いですね。

 

ただし、今週もひとこと言いたい

そんな感じで楽しく学んでいるのですが、やっぱりこまごま気になるところはあるもので…

つまづいたり悩んだりした部分の記録として残しておきます。

 

①メール送信機能について

応用の課題として、フォームデータを処理してメールを送信するというコードを紹介してます。

 

phpの記述としてmb_send_mail()で送信できるのはその通りなのですが、、、smtpの設定とかSPFとかを考慮していないので、実際の動作確認はできないのです。

 

その辺を扱い始めると範囲も膨大になるしphp講座の範疇を外れてしまうのはわかるのですが、実際に機能として提供するためには他にも考慮すべき点があるということをテキストに書いておいてほしいです。

 

②ファイルポインタの概念の説明がほぼない

datファイルの内容に対してfgets()を行う処理がたくさん出てくるのですが、ポインタについての説明がきちんとされていません。

rewind()ってなに?先頭に戻すってなにを?( ゚д゚) となってしまう人が少なくないのでは…。

 

あと、わかりやすさ優先でファイル処理をfopen()に統一しているのだと思いますが、ファイル全文を変数格納するだけならfile_get_contents()でいいのでは…と思ったり。

 

③応用の課題として配布しているコードに記述ミスがある

文字列内の変数展開に{}を付けたり付けなかったり、比較演算子(===)と代入(=)を間違えていたり…

 

前者はともかく、後者はバグの種になりそうなので直してほしいですね…

ちなみにテキストに掲載されているコードはちゃんと比較演算子になっていました。

 

動画講義を視聴しながら、その内容に沿って記述を変更するという範囲での学習なら不満はとくにありません。

受講する方の大半はプログラミング未経験でしょうから、それ以上のことまでチャレンジする方は多くないでしょう。

 

でも、実践的な力が身につく、ということを謳っているスクールさんなのですから、細かいところまできちんとしていてほしいなあ…と思ってしまうのです。

 

上記の3つは、インストラクターさんに確認・質問したらきちんと回答をしてくれました。

 

こんな面倒な質問しても、ちゃんと対応してくれるのですから、インストラクターさんたちは人間出来てるなあ…と思います。

 

まとめ:だいぶリハビリができてきました

この前から引き続き、phpのコーディングにも慣れてきました。

 

来週はもう少しペースを上げて、テキストの内容をざっと一周してみようと思います。

別に転職するわけではないのでポートフォリオを制作する必要はないのですが、せっかくなので自分で何か作ってみたい気持ちになってきました。

 

いまのところなにもアイデアがありません。テキストの内容を進めていきながらひらめき待ちです。

 

なにか面白いものが作れますように~

 

それでは、これにて!

 

最後までお読みいただきありがとうございました(/・ω・)/