質問編集履歴

1

記入漏れなので、accountSetting.phpソースとエラーメッセージ表示部分を修正しました。

2020/06/08 12:12

投稿

dashu_sena
dashu_sena

スコア2

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  アカウント設定画面にて使用者IDの更新処理を行いたい。
6
6
 
7
+ 会員管理TBに会員IDを更新後、関連あるお問い合わせ履歴TBは会員管理TBを参照して、会員IDを更新処理を行います。
8
+
7
9
 
8
10
 
9
11
  使用者IDの更新な機能を実装中に以下のエラーメッセージが発生しました。
@@ -12,7 +14,11 @@
12
14
 
13
15
  ```
14
16
 
15
- Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\PHP\pleiades\xampp\htdocs\test_mailform\PHPsouce\accountSetting.php on line 53
17
+ Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\PHP\pleiades\xampp\htdocs\test_mailform\PHPsouce\accountSetting.php on line 63
18
+
19
+
20
+
21
+ Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\PHP\pleiades\xampp\htdocs\test_mailform\PHPsouce\accountSetting.php on line 73
16
22
 
17
23
  ```
18
24
 
@@ -252,9 +258,11 @@
252
258
 
253
259
 
254
260
 
261
+ //現在使用者ID、または現在のパスワード
262
+
255
- //使用者IDが入力された場合
263
+ //現在使用者IDが入力された場合
256
-
264
+
257
- if (!empty($_POST['before_id']) || !empty($_POST['after_id']) || !empty($_POST['check_id'])){
265
+ if (!empty($_POST['before_id'])){
258
266
 
259
267
 
260
268
 
@@ -262,17 +270,19 @@
262
270
 
263
271
  //使用者ID
264
272
 
265
- $input_BeforeID = mysqli_real_escape_string($db, $_POST['before_id']); //現在の使用者ID
273
+ $input_BeforeID = mysqli_real_escape_string($db, $_POST['before_id']);
266
-
274
+
267
- $input_AfterID = mysqli_real_escape_string($db, $_POST['after_id']); //新しい使用者ID
275
+ $input_AfterID = mysqli_real_escape_string($db, $_POST['after_id']);
268
-
276
+
269
- $input_CheckID = mysqli_real_escape_string($db, $_POST['check_id']); //新しい使用者ID(確認用)
277
+ $input_CheckID = mysqli_real_escape_string($db, $_POST['check_id']);
278
+
279
+
270
280
 
271
281
 
272
282
 
273
283
  //入力チェック
274
284
 
275
- //現在使用者IDとログイン中使用者IDの一致チェック
285
+ //現在使用者IDとログイン中使用者IDの一致チェック
276
286
 
277
287
  if ($row1['input_id'] != $_POST['before_id']){
278
288
 
@@ -282,92 +292,202 @@
282
292
 
283
293
 
284
294
 
295
+ //新しい使用者IDが入力された場合
296
+
297
+ if ($_POST['after_id'] != '') {
298
+
299
+
300
+
285
- //重複登録チェック
301
+ //重複登録チェック
286
-
302
+
287
- $sql01 = sprintf('SELECT count(*) as cnt FROM m_member WHERE member_id = "%s"',$input_AfterID);
303
+ $sql01 = sprintf('SELECT count(*) as cnt FROM m_member WHERE member_id = "%s"',$input_AfterID);
288
-
304
+
289
- $query01 = mysqli_query($db, $sql01) or die(mysqli_errno($db));
305
+ $query01 = mysqli_query($db, $sql01);
290
-
306
+
291
- $row01 = mysqli_fetch_assoc($query01);
307
+ $row01 = mysqli_fetch_assoc($query01);
292
-
293
-
294
-
308
+
309
+
310
+
295
- if ( $row01 == 1) {
311
+ if ( $row01 == 1) {
296
-
312
+
297
- $error ['after_id'] = 'double';
313
+ $error ['after_id'] = 'double';
314
+
315
+ }
316
+
317
+ if ( $_POST['after_id'] != $_POST['check_id']) {
318
+
319
+ $error['check_id'] = 'false';
320
+
321
+ }
298
322
 
299
323
  }
300
324
 
301
- if ( $_POST['after_id'] != $_POST['check_id']) {
302
-
303
- $error['check_id'] = 'false';
325
+
326
+
327
+ //エラーがなかった場合、使用者IDの更新を行う
328
+
329
+ if (empty($error['before_id']) && empty($error['check_id']) && empty($error['after_id'])) {
330
+
331
+
332
+
333
+ //更新用変数
334
+
335
+ $UPdate_BeforeID =$input_BeforeID;
336
+
337
+ $UPdate_AfterID =$input_AfterID;
338
+
339
+
340
+
341
+ //会員情報Tbを更新
342
+
343
+ //使用者IDの更新SQL文を用意
344
+
345
+ $sql2 = sprintf('UPDATE m_member SET member_id = "%s" WHERE member_id = "%s"', $UPdate_BeforeID,$UPdate_AfterID);
346
+
347
+
348
+
349
+ //SQL文を実行処理に代入
350
+
351
+ $query2 = mysqli_query($db, $sql2);
352
+
353
+
354
+
355
+ //実行した結果をセット
356
+
357
+ $row2 = mysqli_fetch_assoc($query2);
358
+
359
+
360
+
361
+ //申込履歴TB更新
362
+
363
+ //申込履歴一覧更新SQL文を用意
364
+
365
+ $sql4 = sprintf('UPDATE h_form h SET h.member_id = ( SELECT member_id FROM m_member m where m.member_id = "%s") WHERE EXISTS ( SELECT 1 FROM m_member mm WHERE mm.member_name = h.member_nm )',$input_AfterID);
366
+
367
+
368
+
369
+ //SQL文を実行処理に代入
370
+
371
+ $query4 = mysqli_query($db, $sql4);
372
+
373
+
374
+
375
+ //実行した結果をセット
376
+
377
+ $row4 = mysqli_fetch_assoc($query4);
378
+
379
+
380
+
381
+ }
382
+
383
+ }
384
+
385
+
386
+
387
+ //現在のパスワードが入力された場合
388
+
389
+ if (!empty($_POST['before_password'])) {
390
+
391
+
392
+
393
+ //会員IDを変数に格納
394
+
395
+ $updatePass_memberID = mysqli_real_escape_string($db,$_SESSION['member_id']);
396
+
397
+
398
+
399
+ //入力したパスワードを変数に格納
400
+
401
+ $input_BeforePass = mysqli_real_escape_string($db, sha1($_POST['before_password']));
402
+
403
+
404
+
405
+
406
+
407
+ //パスワード桁数用
408
+
409
+ $input_AfterPassLen = strlen($_POST['after_password']);
410
+
411
+ $input_CheckPassLen = strlen($_POST['check_password']);
412
+
413
+
414
+
415
+ //登録された現在パスワードと一致するかを確認
416
+
417
+ if ($input_BeforePass != $row1['password']) {
418
+
419
+ $error['before_password'] = 'false';
420
+
421
+ }
422
+
423
+
424
+
425
+ //新しいパスワードと新しいパスワード(確認用)の桁数チェック
426
+
427
+ if ($input_AfterPassLen <4){
428
+
429
+ $error['after_password'] = 'length';
430
+
431
+ }
432
+
433
+ if ($input_CheckPassLen<4){
434
+
435
+ $error['check_password'] = 'length';
436
+
437
+ }
438
+
439
+
440
+
441
+ //新しいパスワードと新しいパスワード(確認用)一致チェック
442
+
443
+ if ($_POST['after_password'] != $_POST['check_password']) {
444
+
445
+ $error['check_password'] = 'false';
446
+
447
+ }
448
+
449
+
450
+
451
+ //エラーがなかった場合、パスワードの更新処理を行う
452
+
453
+ if ((empty($error['before_password'])) && (empty($error['after_password'])) && (empty($error['check_password']))) {
454
+
455
+
456
+
457
+ //更新用暗号化パスワード
458
+
459
+ $input_AfterPassMask = mysqli_real_escape_string($db, sha1($_POST['after_password']));
460
+
461
+
462
+
463
+ //パスワードの更新SQL文を用意する
464
+
465
+ $sql3 = sprintf('UPDATE m_member SET member_pass = "%s" WHERE member_id = "%s"',$input_AfterPassMask,$updatePass_memberID);
466
+
467
+
468
+
469
+ //SQL文を実行処理に代入
470
+
471
+ $query3 = mysqli_query($db, $sql3) or die (mysqli_error($db));
472
+
473
+
474
+
475
+ //実行した結果をセット
476
+
477
+ $row3 = mysqli_fetch_assoc($query3);
478
+
479
+
480
+
481
+
482
+
483
+ //アカウント設定変更完了画面へ遷移
484
+
485
+ header('Location: complete.php');
486
+
487
+ exit;
304
488
 
305
489
  }
306
490
 
307
-
308
-
309
- //エラーがなかった場合、使用者IDの更新を行う
310
-
311
- if (empty($error['before_id']) && empty($error['check_id']) && empty($error['after_id'])) {
312
-
313
-
314
-
315
- //会員情報Tbを更新
316
-
317
- //使用者IDの更新SQL文を用意
318
-
319
- $sql2 = sprintf('UPDATE m_member SET member_id = "%s" WHERE id = "%d" and member_id = "%s"',$input_AfterID , $_SESSION['id'], $input_BeforeID);
320
-
321
-
322
-
323
- //SQL文を実行処理に代入
324
-
325
- $query2 = mysqli_query($db, $sql2) or die(mysqli_errno($db));
326
-
327
-
328
-
329
- //実行した結果をセット
330
-
331
- $row2 = mysqli_fetch_assoc($query2);
332
-
333
-
334
-
335
- //会員情報TBを更新成功した場合、履歴更新を行う
336
-
337
- if(!empty($row2['member_id'])){
338
-
339
-
340
-
341
- //申込履歴TB更新
342
-
343
- //申込履歴一覧更新SQL文を用意
344
-
345
- $sql4 = sprintf('UPDATE h_form h SET h.member_id = ( SELECT member_id FROM m_member m where m.member_id = "%s") WHERE EXISTS ( SELECT 1 FROM m_member mm WHERE mm.member_name = h.member_nm )',$input_AfterID);
346
-
347
-
348
-
349
- //SQL文を実行処理に代入
350
-
351
- $query4 = mysqli_query($db, $sql4);
352
-
353
-
354
-
355
- //実行した結果をセット
356
-
357
- $row4 = mysqli_fetch_assoc($query4);
358
-
359
-
360
-
361
- //アカウント設定変更完了画面へ遷移
362
-
363
- header('Location: complete.php');
364
-
365
- exit;
366
-
367
- }
368
-
369
- }
370
-
371
491
  }
372
492
 
373
493
  }