Garugarion

【意識低い系】PHPでログイン画面を作る。エンジニアになったばかりなのに。

こんにちは。このブログのはじめに「こんにちは、〇〇です」って始める書き方、もうみるの飽きましたし、書くほうも疲れましたね?
僕が誰だろうとそんなことは一切どうでもいい。自分のポートフォリオサイトを使ってゴミ記事を量産してるような人間のプロフィール知りたいですか?僕は知りたくないです。おまたせしましたgarugarionです。

プロフィールはこちら

ここまで読んでこれを書いているやつは頭がおかしいのではないか? 自分でみたくもないと言っておきながらプロフィールのリンクを貼ってるのは、もはや一般的な常識を持ち合わせる大人がとる行動ではないのではないか? と言う疑問には概ね同意です。そう感じたならばこの記事を開いているウインドウをそっと閉じてください。だいたいこんな感じのテンションで進みます。

そしてゴリゴリの技術系の系の記事を期待して訪れていただいたエンジニアの方、先に深くお詫びを申し上げます。ゴリゴリの技術系の記事をご希望でしたら、すぐに目を閉じてください。閉じるにせよ閉じないにせよ間も無く目の前に暗闇が広がります。

こんな記事でも見出しをつければ記事っぽく見えるから困る

見出しってすごいな?そしてこの見出しは本文とは全く関係ありません

インターネット触りたての大人みたいな戯れをしましたが以下本題に。

私が、エンジニアに転職してはじめに開発に携わった案件が、社内向けシステムのログイン画面を作ると言うものでした。
その一年後、僕の後に会社にはいってきた同い年のイケメン(Mくん)と開発案件を進めることになって、彼にPHPでのログイン画面の実装をお願いしました。

が、いっこうに進捗の連絡がこない。そんなMくんはこちら↓(イケメンバルス)

(※Mくんは基本的に全裸です。英語で言うとこう Mr.M is ZENRA always.)
今までPHPどころかプログラミング言語にがっつり触って来なかったんだよな、わかる。var_dump();して確認してとか言われても、ヴァーダン…? え? なんですか? ってなるよな。わかる。誰でも初めてはある。わからないことを調べながらだから当然の如く時間がかかるのも重々承知している。めっちゃわかる。あげぽよ。よく自分のことを棚にあげて、部下を急かしまくる上司がいるが、本当になんなのだろうか。そんなとき、自分も初心者だったことを思い出してみてはいかがだろうか? 時には初心に帰って新人の気持ちに歩み寄ってみてはどうかなどと考える。君の気持ちわよーーーーくわかる。ヤングでナウい言葉をあえて使うとするならば、わかりみがふかい。ふかみがやばい。

オレはこの星に残る!!勝利への最後の願い

日頃から「わかるー」を多用し、わかりみの権化と化し、ドラゴン的なボールを集める日常を送ってますオッスおらgarugarion。

もう2週間ぐれーたつんだけど?進んでる様子が全く見えねっぞ。お、クライアントさんからメールが来たぞ。
「いいだろう。今度は木っ端みじんにしてやる。あの地球人のように」
あの地球人?、Mくんがはnjhhじゃbきっっっっっぃksdfgh

(※僕は普段服を着てます I am on Huku)
このままだと、プロジェクト的にもあれなので、この個人ブログでこっそりとヒントを出しておきましょう。本人にはみられたくないので、絶対にシェアしたりしないでください。プロジェクトが終わった後に、こっそりヒントを出してたことを伝えます。

問題を解決するための抜本的ソリューションの登場

なるべくコードを書きたくない、楽したい。そんな社会人の鏡みたいなことを考えた僕は圧倒的な楽をすることで短時間でとりあえず的なものを完成させました。僕がこの作業をした時は1日で主な機能は完成しました(その後のソースレビューでボコボコにされました)

なるべくソースを書きたくなかった僕のログイン画面実装法としてのおすすめを以下に記します。

1 ドットインストールのプレミアム会員に登録する。
2 レッスン一覧 > PHPでログイン機能を実装しよう > #08 ログイン画面を作っていこう をやる

以上の工程でログイン画面の実装はほとんど終わります。
「やる」と言っても、もうソースコードコピーするだけでいいです。

ここ押せば出ます。動画は再生されません。

そして、ソースをコピーしただけではおそらく画面にエラーが出るので、そのエラーを一つづつ潰していけばいいのです。

簡単でしたね?

3日後

ここまで読んでいただきありがとうございます。

前提として、phpの開発環境が整っていることを想定しています。
また、社内向けCMSのログイン画面で、外部ネットワークからはログインできないので、phpでのセキュリティはガバガバです。

システムを作る際にまずコピペってのもいいと思うのですが、それだと各処理がどんな動きをしているのか理解しにくいので全体像を考えます。
まずは抽象的に考えていきます。

1 全体像を考える

ログイン画面がどんなことをするか大まかに考えましょう。

  • サイトにアクセスするとログイン画面が表示
  • IDとパスワードを入力する
  • ログインするためのボタンを押すと次のページに遷移する

こんな感じでしょうか

2 ちょっと具体化する

  • サイトにアクセスするとログイン画面が表示
    • login.php と言うファイルを作る
  • IDとパスワードを入力する
    • htmlで入力フォームを作る
  • ログインするためのボタンを押すと次のページに遷移する
    • IDとパスワードが正しいのか判断する
    • htmlでIDとパスワードをPOSTするボタンを作る

おっけーなんかできそうな気がする。とりあえずyoutubeみながらお菓子食べたい。あと今日はもう仕事したくない。ここまで構成ができてるならあとは書くだけだから余裕。モンハンもやりたいし、睡眠もとりたい。

ちょっと待って、進んでない理由ってまさしく↑じゃ…

と言う感じで大まかに考えたものをちょっとづつ具体化していきます。

デザイナーさんがデザインをするときもクライアントとお話をする時、大まかに考えられてるものを具体化していくあれとほとんど同じです。ターゲットは男性で→20代の男性→20代で一人暮らしをしていて、アパレル系に勤務する彼女がいて流行に敏感で洋服に気を使いつつ休日はインスタ映えする写真を取りに渋谷とか行っちゃう系男子。的なそんな感じです。

意識が低いので気が向いたら続き書きます。

ありがとうございました

1週間後

login.php作ってIDとPASS入力する場所作ったし、ログインボタンもできた。。。

See the Pen ppGyee by garugarion (@garugarion) on CodePen.

IDとPASSを入れてログインボタンを押すとIDとPASSがPOSTされるので、var_dump($_POST);で値を出力してみましょう。
そしたらそのIDとPASSを使ってデータベースに接続して整合性を確かめて、整合性がとれていたら飛ばしたい画面に飛ばしちゃいましょう。整合性がとれてなかったらエラーメッセージを出しましょう。

うん、なに言ってるかわかりませんね? コードでかくとこんな感じです。

See the Pen KZJzxv by garugarion (@garugarion) on CodePen.

コードペンに無理やり書いたので動くかどうかわかりません。。。これをソースレビューすると

var_dumpとかは実装するときは消してください。ダサいです。後$_POSTのあたいは変数に入れてあげてください。そのまま使うのはやめてください。理由はググってください。$_SESSTIONにポストされた値を入れていますが、セッションスタート();を書いてないので保存されないと思います。クラスとかクラス内の関数を呼んでますが、中身書いてないので動きませんね。外側だけ書きましたね。$msgにメッセージ入れてますが、HTMLで出力してないので意味ありません。出力してください。システムで処理する部分とHTMLは分けてください。変数名が機能名を表していません。考え直してください。パスを書くなら定数に入れてくだあsxdcfvgbhんjmk、l。・

ツッコミどころしかねえ。泣きそう。自分で書いたのに自分で泣きそう。

そして1週間かかってここまで書いても中身書くのにもう少し時間かかる。

結論

結局時間かかる

こちらからは以上です。

コメントのこす

メールアドレスが公開されることはありません。

php, 意識低い