質問編集履歴

3

Cookieに関して追記

2018/09/06 09:21

投稿

Dongrill
Dongrill

スコア19

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,18 @@
7
7
  またサーバー側のセッション期間はsession.gc_maxlifetime にて864000に設定しております。
8
8
 
9
9
  よろしくお願いします。
10
+
11
+
12
+
13
+ ---追記---
14
+
15
+ session_start()にて自動生成されるcookieであるPHPSESSIDの期限はデフォルトの1969-12-31でしたが、
16
+
17
+ setcookieで作成したcookieであるnameの期限は2018-10-06でした。
18
+
19
+ そのためsetcookie自体は正しく機能していたようです。
20
+
21
+ しかしそのSetcookieで生成したcookieがログイン時に使用されていないので自動ログインができてないようです。
10
22
 
11
23
 
12
24
 

2

ログイン機能周りの追記

2018/09/06 09:21

投稿

Dongrill
Dongrill

スコア19

test CHANGED
File without changes
test CHANGED
@@ -15,6 +15,8 @@
15
15
 
16
16
 
17
17
  ```php
18
+
19
+ ---index.php---
18
20
 
19
21
  <?php
20
22
 
@@ -38,6 +40,106 @@
38
40
 
39
41
  <head>
40
42
 
43
+ </head>
44
+
45
+
46
+
47
+ <body class="clearfix">
48
+
49
+
50
+
51
+ <div class="login"><a href="html/login_top.php">ログイン</a></div>
52
+
53
+ <div class="sign-up"><a href="html/signup_top.php">新規登録</a></div>
54
+
55
+
56
+
41
- ---以下略---
57
+ <footer>
58
+
59
+ </footer>
60
+
61
+
62
+
63
+ </body>
64
+
65
+ </html>
42
66
 
43
67
  ```
68
+
69
+
70
+
71
+ ```php
72
+
73
+ ---login_top.php---
74
+
75
+ <?php
76
+
77
+ setcookie("name", "value", time()+60*60*24*30);
78
+
79
+ session_start();
80
+
81
+ ?>
82
+
83
+ <?php
84
+
85
+ $pdo=new PDO('', '', '');
86
+
87
+ date_default_timezone_set('Asia/Tokyo');
88
+
89
+
90
+
91
+
92
+
93
+ unset($_SESSION['users']);
94
+
95
+ $sql=$pdo->prepare('select * from users where username=? and password=?');
96
+
97
+ $sql->execute([$_REQUEST['username'], $_REQUEST['password']]);
98
+
99
+ foreach ($sql as $row) {
100
+
101
+
102
+
103
+ $sql=$pdo->prepare('update users set update_date=? where user_id=?');
104
+
105
+ $sql->execute([date("Y/m/d H:i:s"), $row["user_id"]]);
106
+
107
+
108
+
109
+ $_SESSION['users']=[
110
+
111
+ 'user_id'=>$row['user_id'], 'username'=>$row['username'], 'email'=>$row['email'], 'password'=>$row['password']];
112
+
113
+ }
114
+
115
+ if (isset($_SESSION['users'])) {
116
+
117
+
118
+
119
+ $sql=$pdo->prepare('update users set update_date=? where user_id=?');
120
+
121
+ $sql->execute([date("Y/m/d H:i:s"), $row["user_id"]]);
122
+
123
+
124
+
125
+ $_SESSION['users']=[
126
+
127
+ 'user_id'=>$row['user_id'], 'username'=>$_REQUEST['username'], 'email'=>$_REQUEST['email'], 'password'=>$row['password']];
128
+
129
+ header("Location: ../index.php");
130
+
131
+ exit();
132
+
133
+ } else {
134
+
135
+ header("Location: login_top.php");
136
+
137
+ exit();
138
+
139
+ }
140
+
141
+ ?>
142
+
143
+
144
+
145
+ ```

1

var_dumpを追記しました。

2018/09/06 06:37

投稿

Dongrill
Dongrill

スコア19

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,14 @@
22
22
 
23
23
  session_start();
24
24
 
25
+
26
+
27
+ echo('<pre>');
28
+
29
+ var_dump($_COOKIE['name']);
30
+
31
+ echo('</pre>');
32
+
25
33
  ?>
26
34
 
27
35
  <!doctype html>