質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2069閲覧

テキスト通りにやっているのですがうまく動作しません。

thomas21

総合スコア10

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/03/16 08:15

初心者なのですがチームラボさんのオンラインテキストで
勉強しているのですが、どうも正常に動きません。

テキストエディタでは
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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
でなく
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);

投稿2017/03/16 08:25

編集2017/03/16 08:25
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thomas21

2017/03/16 08:32

ありがとうございます。記載していただいたものに書き換えたところ正常に動き始めました。 上と下のコードの違いはどこなのでしょうか?教えていただけますか?
fromageblanc

2017/03/16 08:39 編集

自分も、「ん?同じじゃね?」って思って、エディタに貼っつけてみたら分かったw まずはやってみよう
thomas21

2017/03/16 08:45

ありがとうございます。 なんか微妙に違いましたね、、。 password_hashの後のスペースですね。 ありがとうございます。とりあえず、やってみる癖をつけます
退会済みユーザー

退会済みユーザー

2017/03/16 08:47

全角のカッコってすぐ気づかないと。
退会済みユーザー

退会済みユーザー

2017/03/16 08:50

使っているフォントが悪いのかも。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問