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

ウェブカツ‼︎でのプログラミング学習進捗を報告します

ちょっとペースダウン(ゆっくりコード写経デー)

f:id:iolwloi:20191008232250p:plain

こんにちは。

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

あんまん(@aaii0123)です。

 

昨日のエラー祭りで疲れが出たのか、今日はあまり気分が上がらず

コードを書くにもダラダラしてしまい、あまり進めませんでした(反省・・)

 

数日前まで、「我ながら成長を感じる!」なんて調子にのってたのに

あの勢いはどこへやら・・

 

実務にはいったら、こういうモチベーションの管理も仕事のうちですよね。

ダラダラモードは今日で終わらせて、明日にはシャキッと気持ちを新たにできるよう

今日は早めに寝る準備をしようと思います!

 

さて、今日の進捗です

 取り組んだこと

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

・プロフィール編集機能の実装の復習

・パスワード変更機能をメモを作成しながら写経

postfixの設定チャレンジ

 

プロフィール編集機能の実装の復習

今日ははじめに、昨日実装したプロフィール編集機能のコードを

復習でもう1度書きました!

 

もう1回書いたことで、昨日まで理解が曖昧だった書き方のところも

自分の中で再度整理されたような気がします。

 

正解コードと照らし合わせて、間違っている箇所もなくはありませんでしたが

処理の流れはだいぶ自分の中におちたので

ここに時間をかけすぎずに、先に進めることにしました!

 

パスワード変更機能をメモを作成しながら写経

続いて実装に挑戦するパスワード変更機能の正解コードを

メモをとりながら写経。

 

データベース接続のところなど、最初は複雑に感じていた処理にもだいぶ慣れてきたように思います。

作成したメモがこちら

パスワード変更機能の実装の流れ

Function.php

パスワードチェックの関数を追加

 半角英数字・最大文字数・最小文字数のチェックをまとめる

エラーメッセージチェックの関数を追加

メール送信関数を追加(引数に$from, $to ,$subject, $comment指定)

 送信先・タイトル・本文が空でない場合、文字化け回避設定をしてメール送信

 メールが送信できたかデバックで確認

 

passEdit関数

getUser関数を使って、DBからユーザー情報を取得

 

POSTされていれば変数にユーザー情報を入れる

バリデーションチェック

  未入力チェック

  エラーメッセージがなければパスワードのチェック

      古いパスワードとデータベースのパスワードが一致していなければエラーメッセージを格納

      新しいパスワードと古いパスワードが同じかどうかチェックして一致していればエラーメッセージを格納

  パスワードとパスワード再入力があっているかのバリデーションチェック

再度エラーメッセージがないかを確認してDBに接続

クエリが成功していたら、セッションにメッセージを格納

メール送信の準備

 Username変数にユーザー情報(ユーザー名)を格納 (ユーザー名が空欄なら「名無し」を入れる)

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

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

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

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

DB接続

レコード更新

パスワード変更メール送信

マイページへ遷移

 

明日はこのメモを見ながら、自力でコードを書く練習をしようと思います!

 

postfixの設定チャレンジ

そして、今回のパスワード変更機能にメール送信があるので、

postfixの設定を少しいじりました。

 

そもそも、postfixの設定をなぜする必要があるかよくわかっていなかったので

メモで自分なりにまとめました。

 

メールの送受信の流れ

(前提)一般的なメール送受信の流れ

ブラウザでメールの画面を表示

メール作成

メール送信

送信元メールサービスのSMTPサーバがメールを受信

送信元メールサービスのSMTPサーバが送信先メールサービスのDMTPサーバにメールを送信

送信先のメールサービスのSMTPサーバがメールを受信

送信先のメールサービスのSMTPサーバが該当のメールアドレス宛にメールを送信

該当のメールアドレスの持ち主がメールを受信

 

つまり、

メルアドからメルアドへ直接送っているわけではなく

使っているメールサービスのSMTPサーバを仲介してメールのやりとりが行われる

SMTPサーバをポストのような位置付けで考えるとわかりやすい)

 

PHPのサービスからメールを送信する仕組み

フォームの送信ボタンをクリック

PHPプログラムがメールを作成した上で、作成したメールを「メール送信プログラム」に渡す

「メール送信プログラム」がSMTPサーバーに接続し、メールを送信

メール送信完了

 

つまり、

PHPプログラムからいきなりSMTPサーバにメールを送りつけるのではなく

一度「メール送信プログラム」介してから、メールが送られる。

 

メール送信プログラムにはいくつか種類があるが、Mac OS Xには

postfix」という、名称のメール送信プログラムがインストールされている。

 

そこで、メールを送れるようになるには、

postfix」の設定をいじる必要がある。

 

設定の仕方は、http://adcomsoft.jp/acs_dev/2017/06/28/mac-mamp-%E3%81%8B%E3%82%89-%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1/

 

(用語)SMTPサーバーとは

メールを送り先に移動させる機能を持つコンピュータ

https://wa3.i-3-i.info/word1131.html

 

簡単なメモではありますが、こんな風に自分なりにまとめたことで、

PHPのプログラムで作成したメールは、いきなりSMTPサーバーに送られるのではなく

postfix」といったメール送信プログラムに送られるので、

postfix」の設定をしてあげる必要があるということがわかりました。

 

しかし、MAMPのメール送信設定などでいくつかサイトを調べたのですが

「 Permission denied」に苦しめられ、まだ設定完了までいっていません。

 

煮詰まった頭で考えてもしょうがないので、いったんpostfixのことは忘れて

先に機能の実装を済ませてから、再チャレンジしようと思います・・

ググったこと

phpのヒアドキュメント

長い文字列を変数に代入したり、出力する際に便利!!

↪︎使い方(例)

<?php

$変数 = <<<〇〇(終了合図の文字列)

文字列を記述

〇〇(終了合図);

?>

参考URL:PHPの基本構文「ヒアドキュメント」 - PHP入門 - Webkaru

 

mb_send_mail 関数

使い方:mb_send_mail(送信先, 題名, 本文, ヘッダ);

送信先には送信先のメールアドレスを文字列で指定する。

ヘッダにはメールヘッダに追加する文字列を指定。このメールヘッダに送信元のメールアドレスなどを指定する。メールヘッダーに指定できる文字列は以下の通り。

From: 送信元メールアドレス

Reply-to: 送信元メールアドレス

CC: CCで送信する送信アドレス

BCC: BCCで送信するアドレス

参考URL:PHPでメール送信を行う方法:mb_send_mail() | UX MILK

まとめ

今日は勉強ペースおち気味でしたが、明日は気持ちを切り替えて、

パスワード変更機能を無事実装してみせます!!