質問編集履歴

2

コード変更

2022/03/25 00:33

投稿

ulluegg
ulluegg

スコア8

test CHANGED
File without changes
test CHANGED
@@ -13,25 +13,21 @@
13
13
  $clean[$key] = htmlspecialchars( $value, ENT_QUOTES);
14
14
  }
15
15
  /*-------------------------------------サニタライズ(終)------------------------------------------*/
16
- //空白チェック
16
+
17
17
  mb_convert_kana("$clean", "n");
18
18
  //print_r($clean);
19
19
  $user_name =$clean['user_name'];
20
20
  $password =$clean['password'];
21
- $errors = array(); // バリデーションのエラーメッセージ
21
+ $errors = array();
22
-
23
- // バリデーション
24
-
25
- if ($user_name == '') // もしemailが空だったら
22
+ if ($user_name == '')
26
23
  {
27
24
  $errors['$user_name'] = '※ メールアドレスが未入力です';
28
25
  }
29
- if ($password == '') // もしpassが空だったら
26
+ if ($password == '')
30
27
  {
31
28
  $errors['$password'] = '※ パスワードが未入力です';
32
29
  }
33
- // バリデーション突破後
34
- if (empty($errors)) // $errorsが空だったら(=エラーが無かったら)
30
+ if (empty($errors))
35
31
  {
36
32
  $pdo = new PDO(dsn,user,password);
37
33
  $sql = "SELECT * FROM user_list WHERE (user_name = '$user_name') AND (user_password = '$password')";

1

コードの変更

2022/03/25 00:29

投稿

ulluegg
ulluegg

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,81 @@
1
1
  お世話になります。現在ログイン機能を持つプログラムを作成しておりますがタイトルの問題が発生しドはまりしております。
2
- 一応問題となる部分だけコードを記載させていただきます。
2
+
3
- ```PHP
3
+ ```login
4
4
  <?php
5
5
  session_start();
6
+ ?>
6
7
 
8
+ <?php include("../common_function.php"); ?>
9
+ <?php
10
+ if(!empty($_POST)){
11
+ /*-------------------------------------サニタライズ(始)------------------------------------------*/
12
+ foreach( $_POST as $key => $value ) {
13
+ $clean[$key] = htmlspecialchars( $value, ENT_QUOTES);
14
+ }
15
+ /*-------------------------------------サニタライズ(終)------------------------------------------*/
16
+ //空白チェック
17
+ mb_convert_kana("$clean", "n");
18
+ //print_r($clean);
19
+ $user_name =$clean['user_name'];
20
+ $password =$clean['password'];
21
+ $errors = array(); // バリデーションのエラーメッセージ
22
+
23
+ // バリデーション
24
+
25
+ if ($user_name == '') // もしemailが空だったら
26
+ {
27
+ $errors['$user_name'] = '※ メールアドレスが未入力です';
28
+ }
29
+ if ($password == '') // もしpassが空だったら
30
+ {
31
+ $errors['$password'] = '※ パスワードが未入力です';
32
+ }
33
+ // バリデーション突破後
34
+ if (empty($errors)) // $errorsが空だったら(=エラーが無かったら)
35
+ {
36
+ $pdo = new PDO(dsn,user,password);
37
+ $sql = "SELECT * FROM user_list WHERE (user_name = '$user_name') AND (user_password = '$password')";
38
+ $statement = $pdo->prepare($sql);
39
+ $statement->execute();
40
+
41
+ $row = $statement->fetch(); // レコードの取り出し
42
+
43
+ //print_r($row);
44
+
45
+ if ($row) // 該当レコードがあったら
46
+ {
7
- $_SESSION['name'] = $row['user_name'];
47
+ $_SESSION['name'] = $row['user_name'];
8
- print_r($_SESSION);
48
+ //print_r($_SESSION);
49
+ // index.phpに飛ばす
9
- header('Location:/index.php' );// index.phpに飛ばす
50
+ header('Location:/index.php');
10
- exit;
51
+ exit();
52
+ }
53
+ else // もし該当レコードがなかったら
54
+ {
55
+ $errors['fales'] = '※ メールアドレスかパスワードが間違っています';
56
+ }
57
+
58
+ }
59
+
60
+ }
11
61
  ?>
62
+ ```
63
+
64
+ ```index
65
+ <?php
66
+ session_start();
67
+ ?>
68
+ <?php include("common_function.php"); ?>
69
+
70
+ <?php include("$webroot/src/head.php"); ?>
71
+
72
+ <!--ヘッダー-->
73
+ <?php include_once("$webroot/common_parts/header.php")?>
74
+ <!--/ヘッダー-->
75
+
76
+ <main class="container mb-5">
77
+ <div class="mb-5">
78
+ <?php print_r($_SESSION) ;?> //ここでセッションを確認してる
12
79
  ```
13
80
 
14
81
  一応「header(Location)」前でsessionに値が持てていることは確認できています。問題はリダイレクト時に値が空になっていることです。色んなサイトで似た状態の記事をたくさん読み、改善を試みましたが全部外れています。