初心者なのですがチームラボさんのオンラインテキストで
勉強しているのですが、どうも正常に動きません。
テキストエディタでは
login.phpの
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
がおかしいと出てきますが
テキストをコピペしてみても同じようになってしまうので
どなたか改善方法を教えていただきたいです。
抽象的な質問ですいません。
よろしくお願いします。
チームラボオンラインテキスト
https://team-lab.github.io/skillup/2/2.html
php
1register.php 2<?php 3 4//セッション開始 5session_start(); 6 7$mysqli = new mysqli('localhost', 'thomas', 'Miyabi21', 'workspace'); 8 9$status = "none"; 10 11//セッションにセットされていたらログイン済み 12if(isset($_SESSION["username"])) 13 $status = "logged_in"; 14else if(!empty($_POST["username"]) && !empty($_POST["password"])){ 15 //ユーザ名が一致する行を探す 16 $stmt = $mysqli->prepare("SELECT password FROM users WHERE username = ?"); 17 $stmt->bind_param('s', $_POST["username"]); 18 $stmt->execute(); 19 20 //結果を保存 21 $stmt->store_result(); 22 //結果の行数が1だったら成功 23 if($stmt->num_rows == 1){ 24 $stmt->bind_result($pass); 25 while ($stmt->fetch()) { 26 if(password_verify($_POST["password"], $pass)){ 27 $status = "ok"; 28 //セッションにユーザ名を保存 29 $_SESSION["username"] = $_POST["username"]; 30 break; 31 }else{ 32 $status = "failed"; 33 break; 34 } 35 } 36 }else 37 $status = "failed"; 38} 39 40?> 41 42<!DOCTYPE html> 43<html> 44 <head> 45 <meta charset="UTF-8" /> 46 <title>ログイン</title> 47 </head> 48 <body> 49 <h1>ログイン</h1> 50 <?php if($status == "logged_in"): ?> 51 <p>ログイン済み</p> 52 <?php elseif($status == "ok"): ?> 53 <p>ログイン成功</p> 54 <?php elseif($status == "failed"): ?> 55 <p>ログイン失敗</p> 56 <?php else: ?> 57 <form method="POST" action="login.php"> 58 ユーザ名:<input type="text" name="username" /> 59 パスワード:<input type="password" name="password" /> 60 <input type="submit" value="ログイン" /> 61 </form> 62 <?php endif; ?> 63 </body> 64</html> 65
php
1 2 3login.php 4<?php 5 6 7$mysqli = new mysqli('localhost' , 'thomas', 'Miyabi21' , 'workspace'); 8 9//status default 10$status = "none"; 11 12 13if(!empty($_POST["username"]) && !empty($_POST["password"])){ 14 //パスワードをハッシュ化す 15 $password = password_hash($_POST["password"], PASSWORD_DEFAULT); 16 17 //ユーザー入力を使用するのでプリアデオステートメントを使用 18 $stmt = $mysqli->prepare("INSERT INTO users VALUES (?,?)"); 19 $stmt->bind_param('ss', $_POST["username"], $password); 20 21 if($stmt->execute()) 22 $status = "ok"; 23 else 24 //すでに存在するユーザ名だった場合INSERTに失敗する 25 $status ="failed"; 26} 27 28?> 29 30 31 32 33<!DOCTYPE html> 34<html lang="ja"> 35<head> 36 <meta charset="UTF-8"> 37 <title>新規登録</title> 38</head> 39 <h1>新規登録</h1> 40 <?php if($status == "ok"): ?> 41 <p>登録完了</p> 42 <a href="login.php">ログイン</a> 43 <?php elseif($status == "failed"): ?> 44 <p>エラー:すでに存在するユーザーです。</p> 45 <?php else: ?> 46 <form method="POST" action="register.php"> 47 ユーザー名:<input tyep="text" name="username"> 48 パスワード:<input tyep="password" name="password"> 49 <input type="submit" value="登録"> 50 </form> 51 <?php endif ?> 52<body> 53 54</body> 55</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/16 08:32
2017/03/16 08:39 編集
2017/03/16 08:45
退会済みユーザー
2017/03/16 08:47
退会済みユーザー
2017/03/16 08:50