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

質問編集履歴

2

整形

2019/03/28 07:33

投稿

Roo
Roo

スコア55

title CHANGED
@@ -1,1 +1,1 @@
1
- ログイン日時をセッションに格納したい
1
+ ログイン日時をセッションに格納したい
body CHANGED
@@ -12,12 +12,12 @@
12
12
  ### 該当のソースコード
13
13
 
14
14
  ```php
15
- <?php
15
+ <?php
16
16
  session_start();
17
17
 
18
18
  if (isset($_SESSION["NAME"])) {
19
- header("Location: my.php");
19
+ header("Location: my.php");
20
- exit;
20
+ exit;
21
21
  }
22
22
 
23
23
  $db['host'] = "hoge";
@@ -31,69 +31,69 @@
31
31
 
32
32
  require_once 'hasu_test.php';
33
33
 
34
- if (isset($_POST["login"])) {
34
+ if (isset($_POST["login"])) {
35
- if (empty($_POST["mail"])) {
35
+ if (empty($_POST["mail"])) {
36
- $errorMessage = '※空やでやで';
36
+ $errorMessage = '※空やでやで';
37
- } else if (empty($_POST["password"])) {
37
+ } else if (empty($_POST["password"])) {
38
- $errorMessage_2 = '※空やで。';
38
+ $errorMessage_2 = '※空やで。';
39
- } else if (!preg_match('/^[!-~]+@[!-~]+$/', $_POST["mail"])){
39
+ } else if (!preg_match('/^[!-~]+@[!-~]+$/', $_POST["mail"])){
40
- $errorMessage = '※正規表現外mail';
40
+ $errorMessage = '※正規表現外mail';
41
- } else if (!preg_match("/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}+\z/i", $_POST["password"])){
41
+ } else if (!preg_match("/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}+\z/i", $_POST["password"])){
42
- $errorMessage_2 = '※正規表現外pass';
42
+ $errorMessage_2 = '※正規表現外pass';
43
- } else if (!preg_match("/^.{4,32}$/",$_POST["mail"])){
43
+ } else if (!preg_match("/^.{4,32}$/",$_POST["mail"])){
44
- $errorMessage = '※桁数上mail';
44
+ $errorMessage = '※桁数上mail';
45
- } else if (!preg_match("/^.{4,32}$/",$_POST["password"])){
45
+ } else if (!preg_match("/^.{4,32}$/",$_POST["password"])){
46
- $errorMessage_2 = '※桁数上pass';
46
+ $errorMessage_2 = '※桁数上pass';
47
47
 
48
- }else{
48
+ }else{
49
49
 
50
- if (!empty($_POST["mail"]) && !empty($_POST["password"])) {
50
+ if (!empty($_POST["mail"]) && !empty($_POST["password"])) {
51
- $mail = $_POST["mail"];
51
+ $mail = $_POST["mail"];
52
-
53
- $dsn = sprintf('mysql:host=%s; dbname=%s; charset=utf8;unix_socket=/tmp/mysql.sock', $db['host'], $db['dbname']);
54
-
55
- try {
56
- $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
57
- $stmt = $pdo->prepare('SELECT * FROM member WHERE mail = ?');
58
- $stmt->execute(array($mail));
59
- $password = $_POST["password"];
60
52
 
61
- if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
62
- if (password_verify($password, $row['password'])) {
63
- session_regenerate_id(true);
64
-
65
- $id = $row['id'];
66
- $sql = "SELECT * FROM member WHERE id = $id"; //入力したIDからユーザー名を取得
67
- $stmt = $pdo->query($sql);
68
- foreach ($stmt as $row) {
69
- $row['mail'];
70
- }
71
-
72
-     $stmt = $pdo->prepare('SELECT * FROM member WHERE sdate = ?');
73
-      $stmt->execute(array($date));
74
-     $sql = "UPDATE member SET sdate='$date' WHERE id='$id'";
53
+ $dsn = sprintf('mysql:host=%s; dbname=%s; charset=utf8;unix_socket=/tmp/mysql.sock', $db['host'], $db['dbname']);
75
-       $result = $pdo->query($sql);
76
-   
77
-
78
-
79
- $_SESSION["sdate"] = $row['sdate'];
80
- $_SESSION["mail"] = $row['mail'];
81
- header("location: my.php");
82
- exit();
83
-
84
-
85
- } else {
86
- $errorMessage = '※mailまたはPasswordが間違っています。';
87
- }
88
- } else {
89
- $errorMessage = '※該当データなしmailまたはPasswordが間違っています。';
90
- }
91
- } catch (PDOException $e) {
92
- $errorMessage = header("Location: 500.php");
93
- }
94
- }
95
- }
96
- }
97
54
 
55
+ try {
56
+ $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
57
+ $stmt = $pdo->prepare('SELECT * FROM member WHERE mail = ?');
58
+ $stmt->execute(array($mail));
59
+ $password = $_POST["password"];
60
+
61
+ if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
62
+ if (password_verify($password, $row['password'])) {
63
+ session_regenerate_id(true);
64
+
65
+ $id = $row['id'];
66
+ $sql = "SELECT * FROM member WHERE id = $id"; //入力したIDからユーザー名を取得
67
+ $stmt = $pdo->query($sql);
68
+ foreach ($stmt as $row) {
69
+ $row['mail'];
70
+ }
71
+
72
+ $stmt = $pdo->prepare('SELECT * FROM member WHERE sdate = ?');
73
+ $stmt->execute(array($date));
74
+ $sql = "UPDATE member SET sdate='$date' WHERE id='$id'";
75
+ $result = $pdo->query($sql);
76
+
77
+
78
+
79
+ $_SESSION["sdate"] = $row['sdate'];
80
+ $_SESSION["mail"] = $row['mail'];
81
+ header("location: my.php");
82
+ exit();
83
+
84
+
85
+ } else {
86
+ $errorMessage = '※mailまたはPasswordが間違っています。';
87
+ }
88
+ } else {
89
+ $errorMessage = '※該当データなしmailまたはPasswordが間違っています。';
90
+ }
91
+ } catch (PDOException $e) {
92
+ $errorMessage = header("Location: 500.php");
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
98
  ?>
99
99
  ```

1

コード修正

2019/03/28 07:33

投稿

Roo
Roo

スコア55

title CHANGED
@@ -1,1 +1,1 @@
1
- ログイン日時をセッションに格納したい
1
+ ログイン日時をセッションに格納したい
body CHANGED
@@ -12,40 +12,88 @@
12
12
  ### 該当のソースコード
13
13
 
14
14
  ```php
15
+ <?php
16
+ session_start();
17
+
18
+ if (isset($_SESSION["NAME"])) {
19
+ header("Location: my.php");
20
+ exit;
21
+ }
22
+
23
+ $db['host'] = "hoge";
24
+ $db['user'] = "hoge";
25
+ $db['pass'] = "hoge";
26
+ $db['dbname'] = "hoge";
27
+ $date = date('Y-m-d H:i:s');
28
+
29
+ $errorMessage = "";
30
+ $errorMessage_2 = "";
31
+
32
+ require_once 'hasu_test.php';
33
+
34
+ if (isset($_POST["login"])) {
35
+ if (empty($_POST["mail"])) {
36
+ $errorMessage = '※空やでやで';
37
+ } else if (empty($_POST["password"])) {
38
+ $errorMessage_2 = '※空やで。';
39
+ } else if (!preg_match('/^[!-~]+@[!-~]+$/', $_POST["mail"])){
40
+ $errorMessage = '※正規表現外mail';
41
+ } else if (!preg_match("/\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}+\z/i", $_POST["password"])){
42
+ $errorMessage_2 = '※正規表現外pass';
43
+ } else if (!preg_match("/^.{4,32}$/",$_POST["mail"])){
44
+ $errorMessage = '※桁数上mail';
45
+ } else if (!preg_match("/^.{4,32}$/",$_POST["password"])){
46
+ $errorMessage_2 = '※桁数上pass';
47
+
48
+ }else{
49
+
50
+ if (!empty($_POST["mail"]) && !empty($_POST["password"])) {
51
+ $mail = $_POST["mail"];
52
+
15
- $dsn = sprintf('mysql:host=%s; dbname=%s; charset=utf8;unix_socket=/tmp/mysql.sock', $db['host'], $db['dbname']);
53
+ $dsn = sprintf('mysql:host=%s; dbname=%s; charset=utf8;unix_socket=/tmp/mysql.sock', $db['host'], $db['dbname']);
16
54
 
17
55
  try {
18
56
  $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
19
-
20
57
  $stmt = $pdo->prepare('SELECT * FROM member WHERE mail = ?');
21
58
  $stmt->execute(array($mail));
59
+ $password = $_POST["password"];
22
60
 
23
- $password = $_POST["password"];
24
-        
25
61
  if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
26
62
  if (password_verify($password, $row['password'])) {
27
- session_regenerate_id(true);
63
+ session_regenerate_id(true);
64
+
65
+ $id = $row['id'];
66
+ $sql = "SELECT * FROM member WHERE id = $id"; //入力したIDからユーザー名を取得
67
+ $stmt = $pdo->query($sql);
68
+ foreach ($stmt as $row) {
69
+ $row['mail'];
70
+ }
71
+
72
+     $stmt = $pdo->prepare('SELECT * FROM member WHERE sdate = ?');
73
+      $stmt->execute(array($date));
74
+     $sql = "UPDATE member SET sdate='$date' WHERE id='$id'";
75
+       $result = $pdo->query($sql);
76
+   
28
77
 
29
-
30
-
31
-
78
+
32
- // 入力したIDのmialを取得
79
+ $_SESSION["sdate"] = $row['sdate'];
33
- $id = $row['id'];
80
+ $_SESSION["mail"] = $row['mail'];
34
- $sql = "SELECT * FROM member WHERE id = $id"; //入力したIDからユーザー名取得
35
- $stmt = $pdo->query($sql);
36
- foreach ($stmt as $row) {
37
- $row['mail']; // メール
38
- }
39
-       //アップデートを実行完了した後に、セッションにログイン日時を格納したい
40
- $stmt = $pdo->prepare('SELECT * FROM member WHERE sdate = ?');
41
- $stmt->execute(array($date));
81
+ header("location: my.php");
42
- $sql = "UPDATE member SET sdate='$date' WHERE id='$id'";
43
-        $result = $pdo->query($sql);
82
+ exit();
44
-
45
83
 
46
84
 
47
- $_SESSION["sdate"] = $row['sdate'];
85
+ } else {
48
- $_SESSION["mail"] = $row['mail'];
86
+ $errorMessage = 'mailまたはPasswordが間違っています。';
87
+ }
88
+ } else {
89
+ $errorMessage = '※該当データなしmailまたはPasswordが間違っています。';
90
+ }
91
+ } catch (PDOException $e) {
49
- header("location: my.php");
92
+ $errorMessage = header("Location: 500.php");
93
+ }
94
+ }
95
+ }
96
+ }
97
+
50
- exit(); // 処理終了
98
+ ?>
51
99
  ```