DB操作 newsfeed制作3
ログインページ追加
newsfeedにログインページを設置する。
仕様
ログイン画面からユーザID,passwordを入力、成功すればnewsfeedのindex.phpが表示される。今回はログインページ用のindex.phpを別フォルダに作り、そのテスト用ファイルlogin.phpを作る。
手順
- newsfeedのフォルダ下にフォルダ名loginを作る。
- index.php,logoin.phpを作る。
- newsfeedのフォルダからinit.phpをコピーアンドペースト、ROOT_URLのパスを修正。
- DB:newsfeedの下にtable:news_loginを3カラムで作る。
- 各カラムの設定は下記のとおり。
index.phpコード記述
ログインページはとりあえずフォームだけ記述。
<form action="login.php" method="POST"> <p><label for="loginid">Login ID</label><input type="text" name="loginid" id="loginid"></p> <p><label for="loginpassword">Password</label><input type="text" name="loginpassword" id="loginpassword"></p> <input type="submit" value="submit"> </form>
login.phpコード記述(前半)
$news_pwにindex.phpから受け取ったpasswordを格納するまでの記述。前回news.phpとほぼ同様のコードとなる。
require_once dirname(__FILE__).'/init.php'; if(!isset($_POST['loginid'])||!isset($_POST['loginpassword'])){ header(ROOT_URL.'index.php'); exit; } $news_login_id=$_POST['loginid']; $news_login_password=$_POST['loginpassword']; $news_pw=password_hash($news_login_password,PASSWORD_DEFAULT);
login.phpコード記述(後半)
DBから値を取り出し、テスト用に表示させるまでを記述。こちらも前回news.phpとほぼ同様のコードとなる。
$dbh=""; try{ $dbh=new PDO(DB_CONNECT,DB_USER,DB_PASS); }catch(Exception $e){ //echo $e->getMessage();エラーメッセージを捕まえて表示させる exit('ランタイムエラーが発生しました'); } $sql="SELECT news_login_pw FROM news_login WHERE news_login_id=:news_login_id;"; $stmt=$dbh->prepare($sql); $stmt->bindParam(':news_login_id',$news_login_id); $stmt->execute(); $row=$stmt->fetch(PDO::FETCH_ASSOC); if(false===$row){ header('ROOT_URL.index.php'); exit; } $news_login_pw=$row['news_login_pw']; ***password_verify password_verifyにより入力値とDBに格納されていた値を比較できる。php5.5以降の機能であり、実装にはサーバ仕様を確認すること。 $result=password_verify($news_login_password,$news_login_pw); echo$result;
今回はここまで。