teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

更新内容:該当コードの追加

2021/02/17 12:12

投稿

yuuu752
yuuu752

スコア18

title CHANGED
File without changes
body CHANGED
@@ -18,6 +18,58 @@
18
18
 
19
19
  login_check.php
20
20
  ```php
21
+ <?php
22
+
23
+ require_once '../db_connect/db_connect.php';
24
+ require_once '../common/common.php';
25
+
26
+ $reg_str = "/\A[a-z\d]{6,50}+\z/i";
27
+
28
+ if ($_POST['email'] == '') {
29
+ $err['email'] = 'メールアドレスが入力されていません。';
30
+ } elseif (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
31
+ $err['email'] = 'メールアドレスを正しい形式で入力してください。';
32
+ } else {
33
+ $user_email = $_POST['email'];
34
+ }
35
+
36
+ if ($_POST['pass'] == '') {
37
+ $err['pass'] = 'パスワードが入力されていません。';
38
+ } elseif (!preg_match($reg_str, $_POST['pass'])) {
39
+ $err['pass'] = 'パスワードは半角英数字6~50文字で入力してください。';
40
+ } else {
41
+ $user_pass = $_POST['pass'];
42
+ }
43
+
44
+ try
45
+ {
46
+ $sql = 'SELECT * FROM users WHERE email = ?';
47
+ $stmt = connect()->prepare($sql);
48
+ $data[] = $user_email;
49
+ $stmt->execute($data);
50
+ $dbh = null;
51
+ $rec = $stmt->fetch(PDO::FETCH_ASSOC);
52
+
53
+ if (isset($rec['password'])) {
54
+ if (password_verify($user_pass, $rec['password'])) {
55
+ session_start();
56
+ $_SESSION['login'] = 1;
57
+ $_SESSION['user_email'] = $user_email;
58
+ $_SESSION['user_pass'] = $user_pass;
59
+ $_SESSION['user_name'] = $rec['name'];
60
+ header('Location:../public/list.php');
61
+ exit();
62
+ } else {
63
+ $err['mis'] = 'パスワードが違います。';
64
+ }
65
+ } else {
66
+ $err['mis'] = 'メールアドレス又はパスワードが違います。';
67
+ }
68
+
69
+ } catch (Exception $e) {
70
+ err_common($e, $smarty);
71
+ }
72
+
21
73
  $smarty->assign('title', "エラー");
22
74
  $smarty->display('../smarty/templates/head.tpl');
23
75
  $smarty->assign('err', $err);
@@ -44,7 +96,9 @@
44
96
  {include file="head.tpl" title=$title}
45
97
 
46
98
  <body>
99
+ {if isset($err['mis'])}
47
- //エラーメッセージ表示
100
+ {$err['mis']}
101
+ {/if}
48
102
  </body>
49
103
  </html>
50
104
  ```