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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

3回答

11120閲覧

会員制サイト:メールアドレスでログイン

SoraSue

総合スコア30

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

3クリップ

投稿2016/12/19 13:29

###前提・実現したいこと
Qiita:PHPとMySQLで新規登録とログインを実装する(PDO使用)を参考に、PHPで会員制サイトを作っています。
このサイトで作れるものでは、ID(新規登録時に自動的に発行される番号)を使ってログインするのですが、これをメアドを使ってログインできるようにしたいです。
###発生している問題・エラーメッセージ
メールアドレスを入力する用のフォームとデータベース(phpMyAdmin)を作りました。新規登録でメールアドレスを登録することには成功しました。しかし、正しいメールアドレスとパスワードを入力してログインしようとしても、うまくいきません。

###該当のソースコード

PHP

1<?php 2require 'password.php'; // password_verfy()はphp 5.5.0以降の関数のため、バージョンが古くて使えない場合に使用 3// セッション開始 4session_start(); 5 6$db['host'] = "localhost"; // DBサーバのURL 7$db['user'] = "hogeUser"; // ユーザー名 8$db['pass'] = "hogehoge"; // ユーザー名のパスワード 9$db['dbname'] = "loginManagement"; // データベース名 10 11// エラーメッセージの初期化 12$errorMessage = ""; 13 14// ログインボタンが押された場合 15if (isset($_POST["login"])) { 16 // 1. ユーザIDの入力チェック 17 if (empty($_POST["userid"])) { // emptyは値が空のとき 18 $errorMessage = 'ユーザーIDが未入力です。'; 19 } else if (empty($_POST["password"])) { 20 $errorMessage = 'パスワードが未入力です。'; 21 } 22 23 if (!empty($_POST["userid"]) && !empty($_POST["password"])) { 24 // 入力したユーザIDを格納 25 $userid = $_POST["userid"]; 26 27 // 2. ユーザIDとパスワードが入力されていたら認証する 28 $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); 29 30 // 3. エラー処理 31 try { 32 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 33 34 $stmt = $pdo->prepare('SELECT * FROM userData WHERE id = ?'); 35 $stmt->execute(array($userid)); 36 37 $password = $_POST["password"]; 38 39 if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 40 if (password_verify($password, $row['password'])) { 41 session_regenerate_id(true); 42 43 // 入力したIDのユーザー名を取得 44 $sql = "SELECT * FROM userData WHERE id = $userid"; //入力した$useridのユーザー名を取得 45 $stmt = $pdo->query($sql); 46 foreach ($stmt as $row) { 47 $row['name']; // ユーザー名 48 } 49 $_SESSION["USERID"] = $row['name']; 50 header("Location: Main.php"); // メイン画面へ遷移 51 exit(); // 処理終了 52 } else { 53 // 認証失敗 54 $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; 55 } 56 } else { 57 // 4. 認証成功なら、セッションIDを新規に発行する 58 // 該当データなし 59 $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; 60 } 61 } catch (PDOException $e) { 62 $errorMessage = 'データベースエラー'; 63 //$errorMessage = $sql; 64 // $e->getMessage() でエラー内容を参照可能(デバック時のみ表示) 65 // echo $e->getMessage(); 66 } 67 } 68} 69?> 70 71<!doctype html> 72<html> 73 <head> 74 <meta charset="UTF-8"> 75 <title>ログイン</title> 76 </head> 77 <body> 78 <h1>ログイン画面</h1> 79 <!-- $_SERVER['PHP_SELF']はXSSの危険性があるので、actionは空にしておく --> 80 <!-- <form id="loginForm" name="loginForm" action="<?php print($_SERVER['PHP_SELF']) ?>" method="POST"> --> 81 <form id="loginForm" name="loginForm" action="" method="POST"> 82 <fieldset> 83 <legend>ログインフォーム</legend> 84 <div><font color="#ff0000"><?php echo $errorMessage ?></font></div> 85 <!--今回、入力フォームはメールアドレスではなくIDにしました。--> 86 <label for="userid">ユーザーID</label><input type="text" id="userid" name="userid" placeholder="ユーザーIDを入力" value="<?php if (!empty($_POST["userid"])) {echo htmlspecialchars($_POST["userid"], ENT_QUOTES);} ?>"> 87 <br> 88 <label for="password">パスワード</label><input type="password" id="password" name="password" value="" placeholder="パスワードを入力"> 89 <br> 90 <input type="submit" id="login" name="login" value="ログイン"> 91 </fieldset> 92 </form> 93 <br> 94 <form action="SignUp.php"> 95 <fieldset> 96 <legend>新規登録フォーム</legend> 97 <input type="submit" value="新規登録"> 98 </fieldset> 99 </form> 100 </body> 101</html>

HTML

1<label for="mailaddress">メールアドレス</label><input type="text" id="mailaddress" name="mailaddress" placeholder="メールアドレスを入力" value="<?php if (!empty($_POST["mailaddress"])) {echo htmlspecialchars($_POST["mailaddress"], ENT_QUOTES);} ?>">

というのを<legend>ログインフォーム</legend>の中に追加してみました。
(ただし、今は上記のように変更しています。)そして、上の<?php?>の中の"userid"を"mailaddress"に変えました。
しかし、「ユーザーIDあるいはパスワードに誤りがあります。」と出て、ログインがうまくいきませんでした。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/12/19 13:44

参考にしているソースコードにはセキュリティ上の脆弱性が含まれています。より良質なコードを参考にされる方がよろしいかと思います。
SoraSue

2016/12/19 14:03

セキュリティ上の脆弱性とは、具体的に言うと$_POSTに直接アクセスしていることでしょうか?
退会済みユーザー

退会済みユーザー

2016/12/19 14:12 編集

SQLインジェクションですね。SQLに変数をそのまま書いてしまっています。 あとは、CSRF脆弱性も
guest

回答3

0

ベストアンサー

セキュリティとかはできるだけ質問者さんのコードのままにしておきたいのでおいておいて、このようにすれば動くのではないでしょうか。

PHP

1<?php 2session_start(); 3 4$db['host'] = "localhost"; // DBサーバのURL 5$db['user'] = "root"; // ユーザー名 6$db['pass'] = "pass"; // ユーザー名のパスワード 7$db['dbname'] = "loginManagement"; // データベース名 8$errorMessage = ""; 9 10// ログインボタンが押された場合 11if (isset($_POST["login"])) { 12 // 1. ユーザIDの入力チェック 13 if (empty($_POST["mailaddress"])) { // emptyは値が空のとき 14 $errorMessage = 'ユーザーIDが未入力です。'; 15 } else if (empty($_POST["password"])) { 16 $errorMessage = 'パスワードが未入力です。'; 17 } 18 19 if (!empty($_POST["mailaddress"]) && !empty($_POST["password"])) { 20 // 入力したユーザIDを格納 21 $mailaddress = $_POST["mailaddress"]; 22 23 // 2. ユーザIDとパスワードが入力されていたら認証する 24 $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); 25 26 // 3. エラー処理 27 try { 28 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 29 30 $stmt = $pdo->prepare('SELECT * FROM userData WHERE mailaddress = :mailaddress'); 31 $stmt->execute(array(":mailaddress" => $mailaddress)); 32 33 $password = $_POST["password"]; 34 35 if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 36 if (password_verify($password, $row['password'])) { 37 session_regenerate_id(true); 38 39 $_SESSION["USERID"] = $row['mailaddress']; 40 header("Location: Main.php"); // メイン画面へ遷移 41 exit(); // 処理終了 42 } else { 43 // 認証失敗 44 $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; 45 } 46 } else { 47 // 4. 認証成功なら、セッションIDを新規に発行する 48 // 該当データなし 49 $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; 50 } 51 } catch (PDOException $e) { 52 $errorMessage = 'データベースエラー'; 53 //$errorMessage = $sql; 54 // $e->getMessage() でエラー内容を参照可能(デバック時のみ表示) 55 // echo $e->getMessage(); 56 } 57 } 58} 59?> 60 61<!doctype html> 62<html> 63<head> 64 <meta charset="UTF-8"> 65 <title>ログイン</title> 66</head> 67<body> 68<h1>ログイン画面</h1> 69<!-- $_SERVER['PHP_SELF']はXSSの危険性があるので、actionは空にしておく --> 70<!-- <form id="loginForm" name="loginForm" action="<?php print($_SERVER['PHP_SELF']) ?>" method="POST"> --> 71<form id="loginForm" name="loginForm" action="" method="POST"> 72 <fieldset> 73 <legend>ログインフォーム</legend> 74 <div><font color="#ff0000"><?php echo $errorMessage ?></font></div> 75 <label for="mailaddress">ユーザーID</label><input type="text" id="mailaddress" name="mailaddress" 76 placeholder="ユーザーIDを入力" 77 value="<?php if (!empty($_POST["userid"])) { 78 echo htmlspecialchars($_POST["userid"], ENT_QUOTES); 79 } ?>"> 80 <br> 81 <label for="password">パスワード</label><input type="password" id="password" name="password" value="" 82 placeholder="パスワードを入力"> 83 <br> 84 <input type="submit" id="login" name="login" value="ログイン"> 85 </fieldset> 86</form> 87<br> 88<form action="SignUp.php"> 89 <fieldset> 90 <legend>新規登録フォーム</legend> 91 <input type="submit" value="新規登録"> 92 </fieldset> 93</form> 94</body> 95</html>

ちなみに、メールアドレスでの登録ということは、新規登録のときにfilter_var関数などでユーザーが入力した文字列がメールアドレスの形式なのかチェックする必要があると思います。質問者さんはこちらもリンクしているページの新規登録を参考にしていると思うので、メールアドレスのチェックを加えたコードを以下に書いておきます。

PHP

1<?php 2session_start(); 3 4$db['host'] = "localhost"; // DBサーバのURL 5$db['user'] = "root"; // ユーザー名 6$db['pass'] = "pass"; // ユーザー名のパスワード 7$db['dbname'] = "loginManagement"; // データベース名 8 9// エラーメッセージ、登録完了メッセージの初期化 10$errorMessage = ""; 11$SignUpMessage = ""; 12 13// ログインボタンが押された場合 14if (isset($_POST["signUp"])) { 15 // 1. ユーザIDの入力チェック 16 if (empty($_POST["mailaddress"])) { // 値が空のとき 17 $errorMessage = 'mailaddressが未入力です。'; 18 } else if (empty($_POST["password"])) { 19 $errorMessage = 'パスワードが未入力です。'; 20 } else if (empty($_POST["password2"])) { 21 $errorMessage = 'パスワードが未入力です。'; 22 } 23 24 if (!empty($_POST["mailaddress"]) && !empty($_POST["password"]) && !empty($_POST["password2"]) && $_POST["password"] == $_POST["password2"] && filter_var($_POST['mailaddress'], FILTER_VALIDATE_EMAIL)) { 25 // 入力したユーザIDとパスワードを格納 26 $mailaddress = $_POST["mailaddress"]; 27 $password = $_POST["password"]; 28 29 // 2. ユーザIDとパスワードが入力されていたら認証する 30 $dsn = sprintf('mysql: host=%s; dbname=%s; 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(mailaddress, password) VALUES (?, ?)"); 37 38 $stmt->execute(array($mailaddress, 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() でエラー内容を参照可能(デバック時のみ表示) 45 // echo $e->getMessage(); 46 } 47 } elseif ($_POST["password"] != $_POST["password2"]) { 48 $errorMessage = 'パスワードに誤りがあります。'; 49 } elseif (filter_var($_POST['mailaddress'], FILTER_VALIDATE_EMAIL) == false) { 50 $errorMessage = 'メールアドレスの書式が間違っています。'; 51 } 52} 53?> 54 55<!doctype html> 56<html> 57<head> 58 <meta charset="UTF-8"> 59 <title>新規登録</title> 60</head> 61<body> 62<h1>新規登録画面</h1> 63<!-- $_SERVER['PHP_SELF']はXSSの危険性があるので、actionは空にしておく --> 64<!-- <form id="loginForm" name="loginForm" action="<?php print($_SERVER['PHP_SELF']) ?>" method="POST"> --> 65<form id="loginForm" name="loginForm" action="" method="POST"> 66 <fieldset> 67 <legend>新規登録フォーム</legend> 68 <div><font color="#ff0000"><?php echo $errorMessage ?></font></div> 69 <div><font color="#0000ff"><?php echo $SignUpMessage ?></font></div> 70 <label for="mailaddress">ユーザー名</label><input type="text" id="mailaddress" name="mailaddress" 71 placeholder="ユーザー名を入力" 72 value="<?php if (!empty($_POST["mailaddress"])) { 73 echo htmlspecialchars($_POST["mailaddress"], ENT_QUOTES); 74 } ?>"> 75 <br> 76 <label for="password">パスワード</label><input type="password" id="password" name="password" value="" 77 placeholder="パスワードを入力"> 78 <br> 79 <label for="password2">パスワード(確認用)</label><input type="password" id="password2" name="password2" value="" 80 placeholder="再度パスワードを入力"> 81 <br> 82 <input type="submit" id="signUp" name="signUp" value="新規登録"> 83 </fieldset> 84</form> 85<br> 86<form action="Login.php"> 87 <input type="submit" value="戻る"> 88</form> 89</body> 90</html>

投稿2016/12/20 13:42

編集2016/12/20 13:51
s8_chu

総合スコア14731

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

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

SoraSue

2016/12/23 10:09

期待通りのことができました!ありがとうございます!!
guest

0

HTML近辺に記載した"userid"を変更するだけでは修正が足りていません。

HTML近辺のphpタグ内にある、
$_POST["userid"]の箇所は"mailaddress"に変更したとのことですが、
PHPのコードを眺めてみると同じような記載が存在していますよね?

それも修正範囲となりますので、
同じような要領で直す必要があります。

今回のような場合だと、
テキストエディタのgrep検索とかが駆使できるようになると、
修正漏れを抑えやすくなります。

また、HTMLのinputタグと、
PHPのコード中に登場する**$_POSTや、$_GET**には強い関連性があるので、
ぜひ自身で調べてみて理解するようにしていって下さいね。

投稿2016/12/19 13:49

編集2016/12/19 14:01
Panzer_vor

総合スコア1636

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

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

SoraSue

2016/12/19 14:02

 一度、"userid"と書いてあるところを全て"mailaddress"に変えてみました。すると、「データーベースエラー」と表示されました。そこで、 $stmt = $pdo->prepare('SELECT * FROM userData WHERE id = ?');の"id"の部分だけそのままにしておくと、今度は「ユーザーIDあるいはパスワードに誤りがあります。」と表示されました。この部分でd引っかかっています。  inputタグや$_POST、$_GETなどについては、理解できているかわかりませんが調べてはみました。「inputタグはユーザーに入力してもらう部分を作るタグで、typeを使い入力形式を決められる。」「$_POST、$_GETはユーザーが入力した情報を取得するもの。$_GETはその情報がURLに表示されるので、ログイン機能などに利用するのは危険」この程度は理解していますが、正しいでしょうか。
Panzer_vor

2016/12/19 14:19

> SoraSueさん ざっくりとしたレベルではその認識で問題はなさそうです。 ただそのように理解しているのでしたら、 $_POSTで指定している項目名と拾いたい入力項目名が異なっているとまずいことは分かりますよね? 後データベースエラーの件ですが、 「id = ?」のidをmailaddressに変えたという認識で相違ないでしょうか? その場合だと今度はPHPとHTMLを離れ今度はデータベースのお話となります。 以下を確認して下さい。 ①userDataテーブルに検索条件に指定した列名が定義されているか(誤字脱字はないか) ②SELECT文をコピーし、?の箇所に任意の値を指定し、phpMyAdminなどから正常に実行できるか ③上記2つとも当てはまらない場合、$eの内容を画面に吐いてみてエラーメッセージ確認(var_dump($e)とか$e->getMessage()でエラー内容を取得・表示してみる)
Panzer_vor

2016/12/19 14:26

上の③の補足ですが、 エラーメッセージの確認が取ることができれば、 それをヒントに原因の切り分けが可能です。 なので、③の手順からいきなりやってもいいかもしれませんね。
SoraSue

2016/12/20 13:14

わかりました。①②③を試してみます。考え方の部分まで指導して頂きありがとうございました!
guest

0

元のソースコードをできるだけ生かした上で、修正してみました。

php

1<?php 2// デバッグのため 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6/** 7 * エスケープ 8 * @param type $string 9 * @return type 10 */ 11function h($string) 12{ 13 return htmlspecialchars($string, ENT_QUOTES, 'utf-8'); 14} 15 16/** 17 * トークンを生成する 18 */ 19function generate_token() 20{ 21 $token = hash('sha256', uniqid()); 22 $_SESSION['csrf_token'] = $token; 23} 24 25/** 26 * トークンチェック 27 * @param type $token 28 * @return boolean 29 * @throws Exception 30 */ 31function check_token($token) 32{ 33 if ($token === $_SESSION['csrf_token']) { 34 unset($_SESSION['csrf_token']); 35 return true; 36 } 37 38 throw new Exception('CSRFチェックエラー'); 39} 40 41$errorMessage = null; 42 43try { 44 45 // セッション開始 46 session_start(); 47 48 $db['host'] = "localhost"; // DBサーバのURL 49 $db['user'] = "hogeUser"; // ユーザー名 50 $db['pass'] = "hogehoge"; // ユーザー名のパスワード 51 $db['dbname'] = "loginManagement"; // データベース名 52 // ログインボタンが押された場合 53 if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') === 'POST') { 54 55 // CSRFチェック 56 $token = filter_input(INPUT_POST, 'csrf_token'); 57 check_token($token); 58 59 $userid = filter_input(INPUT_POST, 'userid'); 60 $password = filter_input(INPUT_POST, 'password'); 61 62 // 例外を使うことで、エラー時は throw で処理を中断し、catch節に飛ぶので、 63 // 以降の条件分岐など、ネストが深くならない 64 if (empty($userid)) { 65 throw new Exception('ユーザーIDが未入力です。'); 66 } else if (empty($password)) { 67 $errorMessage = ''; 68 throw new Exception('パスワードが未入力です。'); 69 } 70 71 $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); 72 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 73 74 $stmt = $pdo->prepare('SELECT * FROM userData WHERE id = ?'); 75 $stmt->execute(array($userid)); 76 $row = $stmt->fetch(PDO::FETCH_ASSOC); 77 78 if ($row && password_verify($password, $row['password'])) { 79 session_regenerate_id(true); 80 $_SESSION["USERID"] = $row['name']; 81 header("Location: Main.php"); 82 exit(); // 処理終了 83 } else { 84 throw new Exception('ユーザーIDあるいはパスワードに誤りがあります。'); 85 } 86 } 87} catch (PDOException $e) { 88 $errorMessage = 'データベースエラー'; 89} catch (Exception $e) { 90 $errorMessage = $e->getMessage(); 91} 92?> 93<!doctype html> 94<html> 95 <head> 96 <meta charset="UTF-8"> 97 <title>ログイン</title> 98 <style type="text/css"> 99 .error_message { 100 color:#ff0000; 101 } 102 </style> 103 </head> 104 <body> 105 <h1>ログイン画面</h1> 106 107 <form action="" method="POST"> 108 <fieldset> 109 <legend>ログインフォーム</legend> 110 111 <!-- <font> は非推奨 --> 112 <div> 113 <span class="error_message"><?= h($errorMessage) ?></span> 114 </div> 115 116 <label for="userid">ユーザーID</label> 117 <input type="text" id="userid" name="userid" placeholder="ユーザーIDを入力" value="<?= h($userid); ?>"> 118 <br> 119 120 <label for="password">パスワード</label> 121 <input type="password" id="password" name="password" value="" placeholder="パスワードを入力"> 122 <br> 123 124 <input type="submit" value="ログイン"> 125 126 <input type="hidden" name="csrf_token" value="<?= h(generate_token()); ?>" /> 127 </fieldset> 128 </form> 129 <br> 130 <form action="SignUp.php"> 131 <fieldset> 132 <legend>新規登録フォーム</legend> 133 <input type="submit" value="新規登録"> 134 </fieldset> 135 </form> 136 </body> 137</html>

投稿2016/12/19 20:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

SoraSue

2016/12/20 13:01

わざわざ修正までして頂きありがとうございました!! 早速コピーしてローカル開発環境で動かしてみたのですが、幾つか疑問点があります。 一つ目に、ログインのページを開くと、ユーザ−IDの入力フォームに<br /><b>Notice</b>: Undefined variable: userid in <b>phpのファイル名</b> on line <b>117</b><br />と表示されます。 二つ目に、正しいidとパスワードを入力しても必ずCSRFチェックエラーと表示されます。
退会済みユーザー

退会済みユーザー

2016/12/20 13:30

対象のファイルで目についた部分を修正したまで。動作確認まではやってません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問