前提・実現したいこと
大前提としてphp初心者です。
大学に入りphpを初めて学んでいます。
phpにて、ログイン機能を保持したwebサイトを開発しています。
ログイン機能がうまく動かず困っています。
psql環境で作成しています。
ログイン画面までは結果が移るのですが、ログインボタンを押しても画面遷移しません。
様々な方法を試しました。
発生している問題・エラーメッセージ
Notice: Undefined index: password in /home/logintest.php on line 49
該当のソースコード
<?php $user = "****"; $pass = "****"; $errorMessage = ""; $c = pg_connect("user={$user} password={$pass}"); $sql = "select userid, password from login"; $sqlpass = "select password from login"; $rs = pg_query($c,$sql); if (isset($_POST["login"])){ if(empty($_POST["userid"])){ $errorMessage = "ユーザーidが未入力"; }else if (empty($_POST["password"])){ $errorMessage = "パスワードが未入力です"; } if (!empty($_POST["userid"]) && !empty($_POST["password"])) { $c = pg_connect("user={$user} password={$pass}"); $sql = "select userid, password from login"; $rs = pg_query($c,$sql); }else{ echo('<p>データベースへの接続に失敗</p>'); exit(); } } $rs = pg_query($c,$sql); if (!$rs) { print('クエリーが失敗しました。'); pg_close($c); exit(); } while ($row = pg_fetch_assoc($rs)) { // パスワード(暗号化済み)の取り出し $db_hashed_pwd = $row['password']; } $pw = pg_query($c,$sql); //画面から入力されたパスワードとデータベースから取得したパスワードのハッシュを比較。 if ($_POST["password"] == $pw) { if (password_hash($_POST["password"], $db_hashed_pwd)) { //認証成功なら、セッションIDを新規に発行 session_regenerate_id(true); $_SESSION["USERID"] = $_POST["userid"]; header("Location: main.php"); exit; } else { // 認証失敗 $errorMessage = "ユーザIDあるいはパスワードに誤りがあります。"; } pg_close($c);} ?> <!doctype html> <html> <head> <meta charset="UTF-8"> <title>ログイン</title> <link rel="stylesheet" type="text/css" href="Studentshonan2.css" /> </head> <body> <h1 align="center" fontsize="18px">ログインしてください</h1> <form id="loginForm" name="loginForm" action="logintest.php" method="POST"></html><div align="center"> <fieldset align="center" width="100px" height="300px"> <legend>ログインフォーム</legend> <div><?php echo $errorMessage ?></div> <label for="userid">ユーザID</label><input type="text" id="userid" name="userid" value="" > <br> <label for="password">パスワード</label><input type="password" id="password" name="password" value=""> <br> <input type="submit" id="login" name="login" value="ログイン"> </fieldset> </div> </form> </body>
試したこと
パスワードを照合させるために、$pwを定義してみたりなどしました。
すみませんがかなりの初心者のため、かなり上から見下す方はスルーしてかまいません。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
環境
・windows8/10
・teraterm
・DB(MYSQLではない)
・terapad
・googlechrome
・Internetexplorer