見出し画像

ハンドルネーム設定/解除の添削

noteにて筆をとるのは初めてになります。
ひさきさんに、パソコン知識や、プログラム勉強や、ゲーム作成を週1回くらいの頻度でお話させて頂いているKKです。

自己紹介(KK)

今年44歳になるベテランのシステムエンジニアです。ゲーム会社勤務しております。20歳からPG/SEとして働いていますので、23年間この世界に従事していることになります。あと、私はWEBサービスの作成は本業ではないので、間違った知識、古い知識が書かれていることがあれば、ご指摘くださるとありがたいです。

「ハンドルネーム設定/解除」の総評

ひさきさんが執筆した PHPでゲーム作成|ハンドルネーム設定/解除 では、今後に期待のできる完成度のプログラムができまして、この先が楽しみです。特にびっくりしたのは高い完成度のHTMLコーディングできていたことですね。レスポンシブを覚えたらとても強くなりそうです。

「ハンドルネーム設定/解除」の添削

添削とは「削ったり、加筆したりして、より良くすること」だそうです。
今回のプログラムを「より良くする」のは、

  • 現コードの効率化(プログラムソースや、変数=メモリ関連など)

  • 再利用できるようにする(関数化、クラス化)

  • PHPとHTMLとCSSを別ファイルにわける(担当の細分化時などに便利)

  • バグ解消

  • 脆弱性対応(セキュリティ関連)

になるかなと思います。これくらいちゃんとやっておけば、クライアントに怒られることもなく、そこそこちゃんと報酬もらえるレベルにはなっていると思います。

添削の詳細内容

現コードの効率化

まず、Cookieの名前などが、各ファイルに点在しているのは良くないので、統一したいですね。もし名前を変更したいときに、常に3個とか4個とかのファイルを修正することになり、効率が悪いからです。
init.php というファイルを1つ作成して、その中に名称や自作関数などを入れるようにしましょう。このファイル内で、画面上に表示する文言も全部管理すれば、日本語版|英語版などで展開をする際に便利なのですが、今回はそこまでするほうが作業コストが高くなりそうなので、「ページ名」くらいの管理としましょう。

再利用できるようにする

今回はCookieを少し使っているだけですが、Cookieのセッターとゲッターを作っておきましょうか。

PHPとHTMLとCSSの分割

今は「name_input.php」だけに適用されている素敵なデザインを、ほかのページにも楽に適用できる形にしたいですね。init.phpに、サイトヘッダーとサイトフッターのゲッターを作りましょう。

バグ解消

バグってほどじゃないですが、Cookieの値がない時に警告が出ているようなので、それが出ないようにCookieのゲッターに入れておきましょう。あとはjavascriptで、入力画面の送信時に、空文字だった場合にエラーを出しておきましょうか。javascriptをOFFにされていたりして動作していない場合を想定して、完了画面でも同様のチェックを入れましょう。あとはすでにCookieに値がある場合は、入力画面のハンドルネームのテキストボックスに初期値として表示するようにしましょう。

脆弱性対応

とりあえず、XSS(クロスサイトスクリプティング)対応をしましょう。XSS対応とは、ユーザーが入力した文字が原因で、サイトデータが壊れたり、サイトを表示する人を攻撃できる脆弱性です。ハンドルネームの内容を表示する際の対応が必要となります。
ハンドルネームも最大文字数を決めちゃいましょうか。16文字くらいにしておきましょうか。
フォーム情報でハンドルネームだけ送信できる状態のままだと、ほかの偽物フォームを作成されてハンドルネームを送信されても上書きされてしまうので、入力画面のフォームにトークンを仕込んで、送信後にトークンが一致した場合のみCookieを更新するようにしておきましょう。これでF5攻撃などの対応にも有効です。
今回の場合、Cookieにデータを保存するだけなので「なりすまし」を防ぐことは難しいので、やめときましょう。
SQLインジェクションも、ディレクトリリバーサルもないだろうし、こんなもんでしょう。

修正プログラムの掲載

プログラムソースを掲載しますが。このプログラムソースを有料コンテンツとさせて頂きます。

  • ひさきさんの活動の応援したい!

  • そこそこちゃんとしたプログラムソースに興味がある

  • 所詮ゲームエンジニアの書いたPHPなんて穴だらけだから指摘してやろう

という方は、ぜひ購入してください。

全部で6ファイルになりますが、すべて同じ階層に設置して下さい。動作環境としては、PHP7以上だなら動くと思います。あとはPHPのショートタグもONにしているので、ご容赦ください。(ショートタグ好きなんです)

ここから先は

5,907字

¥ 500

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?