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

質問編集履歴

1

問題点の変更

2021/01/18 21:51

投稿

higa_yomityu
higa_yomityu

スコア41

title CHANGED
File without changes
body CHANGED
@@ -1,36 +1,58 @@
1
1
  データベースからログイン情報をselect文で取り出したいです
2
2
  select文で取り出したログイン情報をSESSIONに保存し、次のページで使用する予定です
3
3
 
4
- しかし、現在記述しているコードだと $error記述のエラーが画面に表示されてしまいます。
5
- のため以下の質問させていただきます。
4
+ 現在、次ページに遷移ないため何が原因か調べています。
6
- ①select文正しい記述方法
5
+ form内容が送られてきてるのか怪しかったので、IF文にelseを記述しformの内容が送られてきているかチェックしました。結果、3つのelseの中の$error['login']='failed';によって出力されるエラー文が表示されます。
7
- ②なぜfetchを使うのか
8
6
 
9
- よろしくおねがいします。
7
+ 原因はどこにありますか?よろしくおねがいします。
10
8
 
11
9
 
12
- ```ここに言語を入力
10
+ ```php
13
11
  if($_POST){
14
- //formで送られたPOSTを代入
15
- $log=$_POST;
16
-
17
- if($_POST['name'] !==''&& $_POST['password' !=='']){
12
+ if($_POST['name'] !=='' && $_POST['password'] !==''){
18
- $login=$db->prepare('SELECT members FROM members WHERE name=:name,password=:password');
13
+ $login=$db->prepare('SELECT name,password FROM members WHERE name=:name AND password=:password');
19
14
 
20
15
  $login->bindParam(':name',$_POST['name'],PDO::PARAM_STR);
21
- $login->bindParam(':password',$_POST['pasword'],PDO::PARAM_STR);
16
+ $login->bindParam(':password',$_POST['password'],PDO::PARAM_STR);
22
17
 
23
18
  $login->execute();
24
19
 
25
20
  $member=$login->fetch();
21
+
22
+ if($member){
23
+ $_SESSION['id']=$member;
24
+ header('Location:check.php');
25
+ exit();
26
+ }else{
27
+ $error['login']='failed';
26
- }
28
+ }
27
-
28
- if($member){
29
- $_SESSION['id']=$member['id'];
30
- header('Location:check.php');
31
- exit();
32
29
  }else{
33
- $error['login']='failed';
30
+ echo "dame";
34
31
  }
32
+ }else{
33
+ echo "mada";
35
34
  }
35
+ ```
36
+
37
+ ```ここに言語を入力
38
+ <form action="" method="POST">
39
+ <P>お名前:</P>
40
+ <input type="text" name="name" value="<?php print(htmlspecialchars($_POST['name'],ENT_QUOTES)); ?>">
41
+
42
+ <p>パスワード:</p>
43
+ <input type="password" name="password" value="<?php print(htmlspecialchars($_POST['password'])); ?>">
44
+
45
+ <?php if($error['login']==='failed'):?>
46
+ <p class="error">ログインに失敗しました</p>
47
+ <?php endif;?>
48
+
49
+ <br>
50
+
51
+ <label>
52
+ <input type="checkbox" name="save" value="on">
53
+ 次回からログインを簡略化する
54
+ </label>
55
+
56
+ <input type="submit" value="ログイン">
57
+ </form>
36
58
  ```