質問編集履歴

3

情報を追加しました。

2020/05/27 13:55

投稿

potet
potet

スコア17

test CHANGED
File without changes
test CHANGED
@@ -314,6 +314,8 @@
314
314
 
315
315
  ```
316
316
 
317
+ dbconnect.php
318
+
317
319
  ```ここに言語を入力
318
320
 
319
321
  <!doctype html>
@@ -352,4 +354,170 @@
352
354
 
353
355
  ```
354
356
 
357
+ index.php-post¥join
358
+
359
+ ```ここに言語を入力
360
+
361
+ <!doctype html>
362
+
363
+ <html lang="ja">
364
+
365
+ <head>
366
+
367
+ <meta charset=utf8>
368
+
369
+ </head>
370
+
371
+ <body>
372
+
373
+ <?php
374
+
375
+ require('dbconnect.php');
376
+
377
+ session_start();
378
+
379
+
380
+
381
+ if(!empty($_COOKIE['email'])&&$_COOKIE['email'] != ''){
382
+
383
+ $_POST['email']=$_COOKIE['email'];
384
+
385
+ $_POST['email']=$_COOKIE['password'];
386
+
387
+ $_POST['save']='on';
388
+
389
+ }
390
+
391
+ var_dump($_POST);
392
+
393
+ if(!empty($_POST)){
394
+
395
+ //ログイン処理
396
+
397
+ if($_POST['email']!=''&&isset($_POST['password'])&&$_POST['password']!=''){
398
+
399
+ $login=$db->prepare('SELECT * FROM members WHERE email=? AND password=?');
400
+
401
+ $login->execute(array(
402
+
403
+ $_POST['email'],
404
+
405
+ sha1($_POST['password'])
406
+
407
+ ));
408
+
409
+ $member=$login->fetch();
410
+
411
+
412
+
413
+ if($member){
414
+
415
+ //ログイン成功
416
+
417
+ $_SESSION['id']=$member['id'];
418
+
419
+ $_SESSION['time']=time();
420
+
421
+
422
+
423
+ //ログイン情報を記録する
424
+
425
+ if($_POST['save']=='on'){
426
+
427
+ setcookie('email',$_POST['email'],time()+60*60*24*14);
428
+
429
+ setcookie('password',$_POST['password'],time()+60*60*24*14);
430
+
431
+ }
432
+
433
+
434
+
435
+
436
+
437
+ header('Location:index.php'); exit();
438
+
439
+ }else{
440
+
441
+ $error['login']='failed';
442
+
443
+ }
444
+
445
+ }else{
446
+
447
+ $error['login']='blank';
448
+
449
+ }
450
+
451
+ }
452
+
453
+ ?>
454
+
455
+ <div id="lead">
456
+
457
+ <p>メールアドレスとパスワードを記入してログインしてください。</p>
458
+
459
+ <p>入会手続きがまだの方はこちらからどうぞ。</p>
460
+
461
+ <p>&raquo;<a href="join/">入会手続きをする</a></p>
462
+
463
+ </div>
464
+
465
+ <form action="" method="post">
466
+
467
+ <dl>
468
+
469
+ <dt>メールアドレス</dt>
470
+
471
+ <dd>
472
+
473
+ <input type="text" name="email" size="35" maxlength="255" value="<?php if(!empty($_POST['email'])){ echo htmlspecialchars($_POST['email'],ENT_QUOTES);}?>"/>
474
+
475
+ <?php if(isset($error['login'])&&$error['login']=='blank'):?>
476
+
477
+ <p class="error">メールアドレスとパスワードをご記入ください。</p>
478
+
479
+ <?php endif;?>
480
+
481
+ <?php if(isset($error['login'])&&$error['login']=='failed'):?>
482
+
483
+ <p class="error">ログインに失敗しました。正しくご記入ください。</p>
484
+
485
+ <?php endif;?>
486
+
487
+ </dd>
488
+
489
+ <dt>パスワード</dt>
490
+
491
+ <dd>
492
+
493
+ <input type="password" name="password" size="35" maxlength="255" value="<?php if(!empty($_POST['password'])){echo htmlspecialchars($_POST['password'],ENT_QUOTES);}?>"/>
494
+
495
+ </dd>
496
+
497
+ <dt>ログイン情報の記録</dt>
498
+
499
+ <dd>
500
+
501
+ <input id="save" type="checkbox" name="save" value="on"><label for="save">次回からは自動的にログインする。</label>
502
+
503
+ </dd>
504
+
505
+ </dl>
506
+
507
+ <div><input type="submit" value="ログインする"/></div>
508
+
509
+ </body>
510
+
511
+ ```
512
+
513
+ ### 試したこと
514
+
515
+ var_dumpを使って変数の内容を見てみること
516
+
517
+ login.phpの16行目にvar_dump($_POST)を打ってみたらこんなのが出てきました。
518
+
519
+ array(3) { ["email"]=> string(8) "sakana51" ["password"]=> string(12) "ab@gmail.com" ["save"]=> string(2) "on" }
520
+
521
+ sakana51というのはパスワードのつもりでいれましたがemailに入っています。メールアドレスとパスワードが逆に入っているのではないかと思い、フォームの所を間違ってないか見てみたり、逆にメールアドレスとパスワードを入れてログインできるか試みたのですがログインできませんでした。でもlogin.phpの$_POSTの前で何かが起こっているはずなのでもう少し探してみます。
522
+
355
523
  開発環境はWindows10でxamppを使ってます。よろしくお願いします。

2

dbconnect.phpを追加しました。

2020/05/27 13:55

投稿

potet
potet

スコア17

test CHANGED
File without changes
test CHANGED
@@ -314,4 +314,42 @@
314
314
 
315
315
  ```
316
316
 
317
+ ```ここに言語を入力
318
+
319
+ <!doctype html>
320
+
321
+ <html lang ="ja">
322
+
323
+ <head>
324
+
325
+ <meta charset="utf-8">
326
+
327
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
328
+
329
+ <link rel ="stylesheet" href="css/style.css">
330
+
331
+ </head>
332
+
333
+ <body>
334
+
335
+ <?php
336
+
337
+ try{
338
+
339
+ $db=new PDO ('mysql:dbname=mini_bbs;host=127.0.0.1;charset=utf8','root','s@kana51');
340
+
341
+
342
+
343
+ }catch(PDOException $e){
344
+
345
+ echo 'DB接続エラー:'.$e->getMessage();
346
+
347
+
348
+
349
+ }
350
+
351
+ ?>
352
+
353
+ ```
354
+
317
355
  開発環境はWindows10でxamppを使ってます。よろしくお願いします。

1

情報を追加しました。

2020/05/27 12:44

投稿

potet
potet

スコア17

test CHANGED
@@ -1 +1 @@
1
- 本のコードを打ったら勉強しいたら作っていたサイトにログインできなくなりました。
1
+ 本のコードを打って作っていたTwitter風一言掲示板にログインできなくなりました。
test CHANGED
@@ -1,3 +1,5 @@
1
+ よく分かるphpの教科書という本で勉強中です。
2
+
1
3
  正しいパスワードとメールアドレスを入れてもログインできません。なぜでしょうか。仕組みを理解してコードを書いてない為訳が分からず困っています。
2
4
 
3
5
  login.php