"CHANGE" [the:world]

34才高卒男が開発エンジニアになるための記録

9/17 つまづいたところ

ところでメール認証機能だけど、一般的には

会員登録したらそのアドレスにメールを飛ばし、

リンクをクリックしてもらって晴れて会員登録、

というのが通常だと思うのだが、

今僕が作っているサイトにはまだそれができていない。

 

しかし、ローカル環境だけでも良いから28日までには完成させることを考えると、その機能は置いておいて、ひとまず先に進もうと思う。

パスワード可視化機能も同様。

 

付加機能はあとで実装すれば良いので、

納期内に仕上げることを考える

 

ということで、今日はログイン機能に着手

 

基本の流れはサインアップと変わらないので、

そんなにつまづかないとは思うがどうだろう

 

さて本題

機能つまづいたところ

■フラグ制御

PHPで初めてフラグ制御。

もっといいやり方はあるのだろうが

ググりながら手探りの実装。

(初心者がやりがちな動けば良い精神。

いいのさいいのさ、つど改善していけば)

 

下記がそのコード

--------------------

//メールアドレス重複チェック
$flag = 0;
$stmt = $dbh -> query("SELECT * FROM member");
while($item = $stmt->fetch()) {
if($item['mail'] == $member_mail) {
print'ご希望のメールアドレスは既に使用されています。<br/>';
 
$flag = 1;
}else{
$member_mail = $member_mail;
 
}
}
var_dump($flag);

--------------------

まずは$flagを0にして初期化し、データベースのmail内に、入力したメールアドレスと重複するものがあればエラーメッセージを吐き、$flagを1にする。

最後にVar_dumpで$flagの状態を可視化できるようにした。

---------------------------------

//入力に問題があった場合の処理
if($member_mail=='' || $member_name=='' || $member_pass='' || $member_pass!=$member_pass2
|| $spass < 8 || preg_match("/[^a-zA-Z0-9]+$/",$member_pass) || $flag == 1){
var_dump($flag);
print '<form>';
print '<input type="button" onclick="history.back()" value="戻る">';
print '</form>';

---------------------------------

上記コードがフォーム入力時にエラーがあった場合の処理コード。

このとき、前の処理まででvar_dumpが

0を吐き出していたのにも関わらず、

なぜかここの段階のVar_dumpで

1に置き換わってしまうという現象が起き、

結果的には

$falg == 1(比較演算子)

とすべきところを

$falg =1 として

代入してしまっていた。

これでエラーメッセージも吐かずにエラー画面に行ってしまう原因が究明できた。

 

単純な話だが比較演算子などの使い方にも慣れていない身分にとっては目から鱗だった。

 

データベース関連 PDOとか

そこらへんがまだいまいち理解しきれていない。

 

以下、引用

——————

●PDOとは?

PHP Data Objects」の略で、PHPを様々なデータベースに同じような方法で接続できる仕組み

 

PDOOObjectsの略。

つまり、いくつかのクラスから成り立っている

オブジェクト指向のデータベース接続方法なので、まずはインスタンスnewで作る必要がある

 

記述方法は以下に

変数 = new PDO(データソース、ユーザ名、パスワード);

——————

 

出典元のサイト様

 

https://uxmilk.jp/15001