挫折からの回帰

1度プログラミング学習から逃げた者がどこまでやれるかもう一度挑戦するブログ

モチベーション維持が今一番の課題

f:id:iolwloi:20191010233747p:plain



こんにちは。

文系出身でも・未経験でも・プロのプログラマーを目指すブログ 略して「プロプロ」

あんまん(@aaii0123)です。

 

今日は病院へ行ったり、なんやかんやであまり時間がとれず、

ここ最近で一番短い勉強時間となってしまいました。

 

実は最近モチベーションの低下で悩んでいます。

さぁやるぞ!と机には向かうのですが、コードを書き始めるまでに結構な決意というか労力を必要とするこの頃・・

 

バックエンドはHTMLやCSSのように

目に見えるわかりやすい成果がすぐにでないのが原因かなと思っています。

 

最初は、あまり焦らずにじっくり取り組もうと思っていたのですが、

自分の場合、あまりPHPに時間をかけると疲弊していきそうなので、

そろそろペースアップしてとりあえず一旦完成させたいかも。

 

もしかしたら、自分はバックエンドをゴリゴリやりたいタイプではないのかもという気持ちも出てきました(いかんいかん)

 

今までは、ツイッターで見かける他の初学者の方の進捗やアウトプットをみて

モチベーションを維持していたのですが、

自分のアウトプットの制作に時間がかかって、ちょっとうんざり(笑)している時って

他の皆さんどうやってモチベーションを維持されているでしょう・・

 

いかに自分の機嫌をとりつつ学習を続けるのかが今一番の課題と感じています。

 

さて、今日はあまり進んでいませんが今日の進捗です。

 取り組んだこと

今日はこんなことに取り組みました

・メモを作成しながらのパスワードリマインダー機能実装の写経

パスワード変更機能に続いて、パスワードリマインダーの機能に入りました。

セッションに認証キーや入力したメールアドレスなどの情報を渡して処理を行うので

セッションを使ういい練習になりそう。

 

実は最初、$_POSTと$_SESSIONの使いどころの違いがあまりわかっていなかったのですが(初心者にも程がある笑)

$_POSTはユーザーによって入力された情報

$_SESSIONはブラウザ側で保持している情報

ということが流石にわかってきました(笑)

 

そういうことがわかって小さな迷いが経るごとにコードを描くスピードも上がっていくなと感じます。

 

そんなことを考えつつ、パスワードリマインダーの機能も処理の流れをメモにまとめました。

作成したメモがこちら

パスワードリマインダー機能実装の流れ

 

Funcntion.php

sessionを1回だけ取得できる(一回取得したら消す)関数

 セッションが空でなければ変数にセッションを入れ、セッションを初期化する

 その後、セッションを入れた変数を返す

 

・認証キー生成関数

変数にabcdefghijklmnopqrstuvwxyzABCDEFGHIJLKMNOPQRSTUVWXYZ012345678961文字を格納

変数$strを定義し、For文で61文字の文字列をランダムで8文字並べる

8文字のランダムな文字列を返す

・固定長チェック関数

文字列の長さが8文字でなかったら、エラーメッセージを格納する

 

passRemindSend.php

共通変数・関数の読込み

POST送信があれば変数にPOST情報を格納

未入力チェック

エラーメッセージがなければメールの形式チェック・最大文字数チェック

再度エラーメッセージがなければDBに接続

 入力されたメールアドレスが一致し、デリートフラグが0のusersテーブルの絡むの数を取得

  クエリを実行し、クエリの結果の値を取得

 クエリ実行が成功し、かつクエリの結果の値が入っていればセッションにサクセスメッセージを格納

   認証キー生成関数を実行し変数に値を格納

   メールを送信する

      from変数に送信元メールアドレスを入れる

    to変数にユーザー情報のメールアドレスを入れる

  subject変数にメールタイトルを入れる

  comment変数にヒアドキュメントを使ってメール本文を入れる

   認証に必要な情報(認証キー・メールアドレス・認証の有効期限時間(現在時刻の30分後))をセッションにそれぞれ入れる

   認証キー入力ページへ

失敗していたらエラーメッセージを格納

 

PassRemindRecieve.php

共通関数・変数の読込み

セッションに認証キーが格納されているか確認し、なければ認証キー送信ページへ遷移させる

POST送信されていれば、変数に認証キーを格納

未入力チェック

エラーメッセージが空であれば認証キーの固定長・半角チェックを行う

再度エラーメッセージのチェック

 入力された認証キーとセッションの認証キーが異なっていたらエラーメッセージを格納

 現在時刻がセッションの有効期限時間を超えていたらエラーメッセージを格納

再度エラーメッセージがないか確認し、パスワードを生成

DBへ接続

クエリが成功していればメールを送信

セッションを1度削除し、セッションにサクセスメッセージを格納

ログインページへ遷移

失敗していたらエラーメッセージを格納

 

明日はこのメモを参考に、実際に自力でパスワードリマインダー機能の実装にチャレンジします。

そろそろ、メモの書き方というかまとめかたも

あとで自分で見返したときにもっとわかりやすいように工夫したいな。

 

まとめ

今日はちょっと愚痴っぽくなってしまいました・・汗

あとで読み返したときに、こんな時期もあったなと笑えるように今はなんとか辛抱したいところ

どうすれば自分のやる気スイッチがまた入るのか考えながらお風呂にでも浸かってゆっくりしたいと思います。