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

質問編集履歴

2

事態の進捗

2020/11/29 03:24

投稿

lnavi.bex810vh
lnavi.bex810vh

スコア12

title CHANGED
@@ -1,1 +1,1 @@
1
- ブール型配列の値として処理されてしまう
1
+ $_POST配列が変数に代入できない
body CHANGED
@@ -1,9 +1,21 @@
1
1
  php7.4、mysql8にてユーザ認証を実現したいのですが、
2
- $member_mail=$rec['member_mail'];  (B箇所)
3
- のところで、登録しているメールアドレスを入力した場合は正常に動作するのですが、登録していないメールアドレスの場合、以下のように動作してしまいます。いろいろ調べて、取得した配列がブールの場合に発生することが多いNoticeということ、またはphp7.4に上がると頻発するという事までは分かりましたが、同様のことを行うほかのスクリプトではNoticeは発生しません。どうしてこうなるのかわからず困っております。PDO::PARAM_STRで直接指定しても動作は変わりませんでした。
2
+ 進捗があったので書き換えいたします。$recがbool(false)になる前の行でvar_dump($_POST['user_mail']);を実行するとnullが返ってくることがわかりました。psyshでデバッグすると以下ようになります。簡単に言うと変数に$_POSTの値がどういうわけか代入できないのです。
4
3
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
4
+ c:\xampp\htdocs>psysh asobi/mem_login_check.php
5
+ Psy Shell v0.10.4 (PHP 7.4.11 — cli) by Justin Hileman
6
+ <!DOCTYPE html>
7
+ <html>
8
+ <head><meta charset=UTF-8>
9
+ <title>ログインチェック</title>
10
+ </head>
11
+ <body>
12
+ array(0) {
13
+ }
14
+ PHP Notice: Undefined index: user_mail in C:/xampp/htdocs/asobi/mem_login_check.php on line 9
15
+ PHP Notice: Undefined index: user_pass in C:/xampp/htdocs/asobi/mem_login_check.php on line 10
5
- Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\asobi\mem_login_check.php on line 32
16
+ PHP Notice: Trying to access array offset on value of type bool in C:/xampp/htdocs/asobi/mem_login_check.php on line 33
6
- メールアドレスが見つかりせん
17
+ メールアドレスが一致しした</body>
18
+ </html>>>>
7
19
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
8
20
  ```
9
21
  <!DOCTYPE html>
@@ -13,14 +25,13 @@
13
25
  </head>
14
26
  <body>
15
27
  <?php
28
+ var_dump($_POST);
16
- include_once('../common/common.php');
29
+ $user_mail=$_POST['user_mail'];
30
+ $user_pass=$_POST['user_pass'];
17
31
 
18
- $post=sanitize($_POST);
32
+ //var_dump($_POST['user_mail']);
33
+ //var_dump($_POST['user_pass']);
19
34
 
20
- $user_mail=$post['user_mail'];
21
- $user_pass=$post['user_pass'];
22
-
23
-
24
35
  $user='root';
25
36
  $password='';
26
37
 
@@ -32,13 +43,15 @@
32
43
  {
33
44
  $sql='SELECT member_mail FROM mst_userdb WHERE member_mail=?';
34
45
  $stmh=$dbh->prepare($sql);
35
- //$stmh->bindValue(':member_mail',$_POST['user_mail'],PDO::PARAM_STR);
36
46
  $data[]=$user_mail;
37
47
  $stmh->execute($data);
48
+
38
49
  $rec=$stmh->fetch(PDO::FETCH_ASSOC);
39
50
 
40
- **$member_mail=$rec['member_mail'];**
51
+ //var_dump($rec);//<=DBオブジェクトの結果
41
52
 
53
+ $member_mail=$rec['member_mail'];
54
+
42
55
  if($user_mail==$member_mail)
43
56
  {
44
57
  print 'メールアドレスが一致しました。';

1

誤字

2020/11/29 03:24

投稿

lnavi.bex810vh
lnavi.bex810vh

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  php7.4、mysql8にてユーザ認証を実現したいのですが、
2
2
  $member_mail=$rec['member_mail'];  (Bの箇所)
3
- のところで、登録していないメールアドレスを入力した場合は正常に動作するのですが、登録していないメールアドレスの場合、以下のように動作してしまいます。いろいろ調べて、取得した配列がブールの場合に発生することが多いNoticeということ、またはphp7.4に上がると頻発するという事までは分かりましたが、同様のことを行うほかのスクリプトではNoticeは発生しません。どうしてこうなるのかわからず困っております。PDO::PARAM_STRで直接指定しても動作は変わりませんでした。
3
+ のところで、登録していメールアドレスを入力した場合は正常に動作するのですが、登録していないメールアドレスの場合、以下のように動作してしまいます。いろいろ調べて、取得した配列がブールの場合に発生することが多いNoticeということ、またはphp7.4に上がると頻発するという事までは分かりましたが、同様のことを行うほかのスクリプトではNoticeは発生しません。どうしてこうなるのかわからず困っております。PDO::PARAM_STRで直接指定しても動作は変わりませんでした。
4
4
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
5
5
  Notice: Trying to access array offset on value of type bool in C:\xampp\htdocs\asobi\mem_login_check.php on line 32
6
6
  メールアドレスが見つかりません。