###前提・実現したいこと
会員制掲示板の作成
新規登録機能を実装中に以下のエラーメッセージが発生しました。
###発生している問題・エラーメッセージ
エラーメッセージ
SQLSTATE[28000] [1045] Access denied for user 'yokkikki_1'@'localhost' (using password: YES)
###該当のソースコード
PHP
1<?php 2// セッション開始 3session_start(); 4//DB名など 5$db['host'] = "mysql1.webcrow-php.netowl.jp"; // DBサーバのurl 6$db['user'] = "実際は書いてます"; 7$db['pass'] = "実際は書いてます"; 8$db['dbname'] = "yokkikki_users"; 9// エラーメッセージ、登録完了メッセージの初期化 10$errorMessage = ""; 11$signUpMessage = ""; 12 13// ログインボタンが押された場合 14if (isset($_POST["signUp"])) { 15 // 1. ユーザIDの入力チェック 16 if (empty($_POST["username"])) { // 値が空のとき 17 $errorMessage = 'ユーザーIDが未入力です。'; 18 } else if (empty($_POST["password"])) { 19 $errorMessage = 'パスワードが未入力です。'; 20 } else if (empty($_POST["password2"])) { 21 $errorMessage = 'パスワードが未入力です。'; 22 } 23 24 if (!empty($_POST["username"]) && !empty($_POST["password"]) && !empty($_POST["password2"]) && $_POST["password"] === $_POST["password2"]) { 25 // 入力したユーザIDとパスワードを格納 26 $username = $_POST["username"]; 27 $password = $_POST["password"]; 28 29 // 2. ユーザIDとパスワードが入力されていたら認証する 30 $dsn = sprintf('mysql:mysql1.webcrow-php.netowl.jp; dbname=yokkikki_users; charset=utf8', $db['host'], $db['dbname']); 31 32 // 3. エラー処理 33 try { 34 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 35 36 $stmt = $pdo->prepare("INSERT INTO userData(name, password) VALUES (?, ?)"); 37 38 $stmt->execute(array($username, password_hash($password, PASSWORD_DEFAULT))); // パスワードのハッシュ化を行う(今回は文字列のみなのでbindValue(変数の内容が変わらない)を使用せず、直接excuteに渡しても問題ない) 39 $userid = $pdo->lastinsertid(); // 登録した(DB側でauto_incrementした)IDを$useridに入れる 40 41 $signUpMessage = '登録が完了しました。あなたの登録IDは '. $userid. ' です。パスワードは '. $password. ' です。'; // ログイン時に使用するIDとパスワード 42 } catch (PDOException $e) { 43 $errorMessage = 'データベースエラー'; 44//$e->getMessage() でエラー内容を参照可能(デバック時のみ表示) 45echo $e->getMessage(); 46 } 47 } else if($_POST["password"] != $_POST["password2"]) { 48 $errorMessage = 'パスワードに誤りがあります。'; 49 } 50} 51?> 52 53<!doctype html> 54<html> 55 <head> 56 <meta charset="UTF-8"> 57 <title>新規登録</title> 58 </head> 59 <body> 60 <h1>新規登録画面</h1> 61 <form id="loginForm" name="loginForm" action="" method="POST"> 62 <fieldset> 63 <legend>新規登録フォーム</legend> 64 <div><font color="#ff0000"><?php echo htmlspecialchars($errorMessage, ENT_QUOTES); ?></font></div> 65 <div><font color="#0000ff"><?php echo htmlspecialchars($signUpMessage, ENT_QUOTES); ?></font></div> 66 <label for="username">ユーザー名</label><input type="text" id="username" name="username" placeholder="ユーザー名を入力" value="<?php if (!empty($_POST["username"])) {echo htmlspecialchars($_POST["username"], ENT_QUOTES);} ?>"> 67 <br> 68 <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力"> 69 <br> 70 <label for="password2">パスワード(確認用)</label><input type="password" id="password2" name="password2" value="" placeholder="再度パスワードを入力"> 71 <br> 72 <input type="submit" id="signUp" name="signUp" value="新規登録"> 73 </fieldset> 74 </form> 75 <br> 76 <form action="Login.php"> 77 <input type="submit" value="戻る"> 78 </form> 79 </body> 80</html> 81
###試したこと
パスワード、ユーザー名、データベース名、
サーバーのURL確認
###補足情報(言語/FW/ツール等のバージョンなど)
ログイン画面は、正常に動きます。
同じパスワード、ユーザー名、データベース名サーバーのURL、で動いています。
パスワードは、ハッシュ化していません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/08 08:47
2017/03/08 08:56
2017/03/08 09:02
2017/03/08 09:20
2017/03/08 11:28
2017/03/08 12:22
2017/03/08 12:22
2017/03/08 13:49