質問編集履歴

2

脱字

2020/11/27 12:06

投稿

kqosu19
kqosu19

スコア0

test CHANGED
File without changes
test CHANGED
@@ -26,14 +26,18 @@
26
26
 
27
27
 
28
28
 
29
-
30
-
31
29
  <?php
32
30
 
33
31
  session_start();
34
32
 
35
33
 
36
34
 
35
+ ini_set( 'display_errors', 1);
36
+
37
+ ini_set( 'error_reporting', E_ALL );
38
+
39
+
40
+
37
41
  require_once '../classes/UserLogic.php';
38
42
 
39
43
 
@@ -62,13 +66,625 @@
62
66
 
63
67
 
64
68
 
69
+ <!DOCTYPE html>
70
+
71
+ <html lang="en">
72
+
73
+ <head>
74
+
75
+ <meta charset="UTF-8">
76
+
77
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
78
+
79
+ <title>ログイン画面</title>
80
+
81
+ </head>
82
+
83
+ <body>
84
+
85
+ <div>
86
+
87
+ <img src="../img00/travel.jpg">
88
+
89
+ <h2>ログインフォーム</h2>
90
+
91
+ <?php if (isset($err['msg'])) : ?>
92
+
93
+ <p><?php echo $err['msg']; ?></p>
94
+
95
+ <?php endif; ?>
96
+
97
+ <form action="../upload/upload_form.php" method="POST">
98
+
99
+ <div class="email">
100
+
101
+ <p>
102
+
103
+ <label for="email">メールアドレス:</label>
104
+
105
+ <input type="email" name ="email">
106
+
107
+ <?php if (isset($err['email'])) : ?>
108
+
109
+ <p><?php echo $err['email']; ?></p>
110
+
111
+ <?php endif; ?>
112
+
113
+ </p>
114
+
115
+ </div>
116
+
117
+ <p>
118
+
119
+ <label for="username">パスワード:</label>
120
+
121
+ <input type="text" name ="password">
122
+
123
+ <?php if (isset($err['password'])) : ?>
124
+
125
+ <p><?php echo $err['password']; ?></p>
126
+
127
+ <?php endif; ?>
128
+
129
+ </p>
130
+
131
+ <p>
132
+
133
+ <input type="submit" value="ログイン">
134
+
135
+ </p>
136
+
137
+ </form>
138
+
139
+ <a href="signup_form.php">新規登録はこちら</a>
140
+
141
+ <p></p>
142
+
143
+ </div>
144
+
145
+ <style>
146
+
147
+ img {margin-top: 10px;}
148
+
149
+ div {text-align: center;}
150
+
151
+ .email {margin-right: 37px;}
152
+
153
+ body {background-color: #CCFFFF;}
154
+
155
+ h2, label, input {margin-top: 20px;}
156
+
157
+ </style>
158
+
159
+ </body>
160
+
161
+ </html>
162
+
163
+
164
+
165
+ upload_form.php
166
+
167
+
168
+
169
+ <?php
170
+
171
+ ini_set( 'display_errors', 1);
172
+
173
+ ini_set( 'error_reporting', E_ALL );
174
+
175
+
176
+
177
+
178
+
179
+ session_start();
180
+
181
+ // フォーム
182
+
183
+
184
+
185
+ require_once '../classes/UserLogic.php';
186
+
187
+ require_once '../dbc/dbc.php';
188
+
189
+ require_once "dbc.php";
190
+
191
+ $files = getAllFile();
192
+
193
+
194
+
195
+ //エラーメッセージ
196
+
197
+ $err = [];
198
+
199
+
200
+
201
+ //バリデーション
202
+
203
+ if(!$email = filter_input(INPUT_POST, 'email')) {
204
+
205
+ $err['email'] = 'メールアドレスを記入してください。';
206
+
207
+ }
208
+
209
+ if(!$password = filter_input(INPUT_POST, 'password')
210
+
211
+ ) {
212
+
213
+ $err['password'] = 'パスワードを記入してください。';
214
+
215
+ }
216
+
217
+
218
+
219
+ if (count($err) > 0) {
220
+
221
+ // エラーがあった場合は戻す
222
+
223
+ $_SESSION = $err;
224
+
225
+ header('Location: ../public/login_form.php');
226
+
227
+ return;
228
+
229
+ }
230
+
231
+ //ログイン成功時の処理
232
+
233
+ $result = UserLogic::login($email, $password);
234
+
235
+ //ログイン失敗時の処理
236
+
237
+ if (!$result) {
238
+
239
+ header('Location: ../public/login_form.php');
240
+
241
+ return;
242
+
243
+ }
244
+
245
+
246
+
247
+ ?>
248
+
249
+
250
+
251
+
252
+
253
+ <!-- ①フォームの説明 -->
254
+
255
+ <!-- ②$_FILEの確認 -->
256
+
257
+ <!-- ③バリデーション -->
258
+
259
+ <!DOCTYPE html>
260
+
261
+ <html lang="ja">
262
+
263
+ <head>
264
+
265
+ <meta charset="UTF-8" />
266
+
267
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
268
+
269
+ <title>アップロードフォーム</title>
270
+
271
+ </head>
272
+
273
+ <style>
274
+
275
+ body {
276
+
277
+ padding: 30px;
278
+
279
+ margin: 0 auto;
280
+
281
+ width: 50%;
282
+
283
+ background-color: #CCFFFF;
284
+
285
+ }
286
+
287
+ textarea {
288
+
289
+ width: 98%;
290
+
291
+ height: 60px;
292
+
293
+ }
294
+
295
+ .file-up {
296
+
297
+ margin-bottom: 10px;
298
+
299
+ }
300
+
301
+ .submit {
302
+
303
+ text-align: right;
304
+
305
+ }
306
+
307
+ .btn {
308
+
309
+ display: inline-block;
310
+
311
+ border-radius: 3px;
312
+
313
+ font-size: 18px;
314
+
315
+ background: #67c5ff;
316
+
317
+ border: 2px solid #67c5ff;
318
+
319
+ padding: 5px 10px;
320
+
321
+ color: #fff;
322
+
323
+ cursor: pointer;
324
+
325
+ }
326
+
327
+ </style>
328
+
329
+
330
+
331
+ <body>
332
+
333
+ <form enctype="multipart/form-data" action="./file_upload.php" method="POST">
334
+
335
+ <div class="file-up">
336
+
337
+ <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
338
+
339
+ <input name="img" type="file" accept="image/*" />
340
+
341
+ <a href="../public/mypage.php">マイページへ</a>
342
+
343
+ </div>
344
+
345
+
346
+
347
+ <div>
348
+
349
+ <textarea
350
+
351
+ name="caption"
352
+
353
+ placeholder="キャプション(140文字以下)"
354
+
355
+ id="caption"
356
+
357
+ ></textarea>
358
+
359
+ </div>
360
+
361
+
362
+
363
+ <div class="submit">
364
+
365
+ <input type="submit" value="送信" class="btn" />
366
+
367
+ </div>
368
+
369
+ </form>
370
+
371
+ <div>
372
+
373
+ <?php foreach($files as $file): ?>
374
+
375
+ <img src=<?php echo "{$file['file_path']}"; ?> alt="">
376
+
377
+ <p><?php echo h("{$file['description']}"); ?></p>
378
+
379
+ <?php endforeach; ?>
380
+
381
+ </div>
382
+
383
+ </body>
384
+
385
+ </html>
386
+
387
+
388
+
389
+ file_upload.php
390
+
391
+
392
+
393
+
394
+
395
+ <?php
396
+
397
+ ini_set( 'display_errors', 1);
398
+
399
+ ini_set( 'error_reporting', E_ALL );
400
+
401
+
402
+
403
+ session_start();
404
+
405
+
406
+
407
+ // require_once '../classes/UserLogic.php';
408
+
409
+
410
+
411
+
412
+
413
+ //①ファイルの保存
414
+
415
+ //②DB接続
416
+
417
+ //③DBへの保存
418
+
419
+ require_once "../upload/dbc.php";
420
+
421
+
422
+
423
+ // ファイル関連の取得
424
+
425
+ $file = $_FILES['img'];
426
+
427
+ $filename = basename($file['name']);
428
+
429
+ $tmp_path = $file['tmp_name'];
430
+
431
+ $file_err = $file['error'];
432
+
433
+ $filesize = $file['size'];
434
+
435
+ $upload_dir = 'images/';
436
+
437
+ $save_filename = date('YmdHis') . $filename;
438
+
439
+ $err_msgs = array();
440
+
441
+ $save_path = $upload_dir. $save_filename;
442
+
443
+
444
+
445
+ // キャプションを取得
446
+
447
+ $caption = filter_input(INPUT_POST, 'caption',
448
+
449
+ FILTER_SANITIZE_SPECIAL_CHARS);
450
+
451
+
452
+
453
+ //キャプションのバリデーション
454
+
455
+ //未入力
456
+
457
+ if(empty($caption)) {
458
+
459
+ array_push($err_msgs, 'キャプションを入力してください。');
460
+
461
+ echo '<br>';
462
+
463
+ }
464
+
465
+ //140文字か
466
+
467
+ if(strlen($caption) > 140) {
468
+
469
+ echo 'キャプションは140文字以内にしてください。';
470
+
471
+ echo '<br>';
472
+
473
+ }
474
+
475
+
476
+
477
+ //ファイルのバリデーション
478
+
479
+ // ファイルサイズが1MB未満か
480
+
481
+ if($filesize > 1048576 || $file_err == 2) {
482
+
483
+ echo 'ファイルサイズは1MB未満にしてください。';
484
+
485
+ echo '<br>';
486
+
487
+ }
488
+
489
+
490
+
491
+ //拡張は画像形式か
492
+
493
+ $allow_ext = array('jpg', 'jpeg', 'png');
494
+
495
+ $file_ext = pathinfo($filename, PATHINFO_EXTENSION);
496
+
497
+
498
+
499
+ if(!in_array(strtolower($file_ext), $allow_ext)) {
500
+
501
+ array_push($err_msgs, '画像ファイルを添付してください。');
502
+
503
+ echo '<br>';
504
+
505
+ }
506
+
507
+
508
+
509
+ if (count($err_msgs) === 0) {
510
+
511
+ //ファイルはあるかどうか?
512
+
513
+ if (is_uploaded_file($tmp_path)) {
514
+
515
+ if (move_uploaded_file($tmp_path, $save_path)) {
516
+
517
+ echo $filename . 'を'. $upload_dir. 'アップしました。';
518
+
519
+ // DBに保存(ファイル名、ファイルパス、キャプション)
520
+
521
+ $result = fileSave($filename, $save_path, $caption);
522
+
523
+
524
+
525
+ if ($result) {
526
+
527
+ echo'データベースに保存しました!';
528
+
529
+ } else {
530
+
531
+ echo 'データベースへの保存に失敗しました!';
532
+
533
+ }
534
+
535
+ } else {
536
+
537
+ echo 'ファイルが保存できませんでした。';
538
+
539
+ }
540
+
541
+ } else {
542
+
543
+ echo 'ファイルが選択されていません。';
544
+
545
+ echo '<br>';
546
+
547
+ }
548
+
549
+ } else {
550
+
551
+ foreach($err_msgs as $msg) {
552
+
553
+ echo $msg;
554
+
555
+ echo '<br>';
556
+
557
+ }
558
+
559
+
560
+
561
+ /// 更新日時順で並び替える関数
562
+
563
+ $sort_by_lastmod = function($a, $b) {
564
+
565
+ return filemtime($b) - filemtime($a);
566
+
567
+ };
568
+
569
+
570
+
571
+ /// 並び替えして出力
572
+
573
+ $files = glob( 'path/to/files/*.*' );
574
+
575
+ usort( $files, $sort_by_lastmod );
576
+
577
+ foreach( $files as $file ) {
578
+
579
+ $timestamp = date('Y-m-d H:i:s', filemtime( $file ) );
580
+
581
+ echo basename( $file ) . ' : ' . $timestamp . '<br>';
582
+
583
+ }
584
+
585
+
586
+
587
+ }
588
+
589
+ ?>
590
+
591
+ <a href= "upload_form.php">次ページ</a>
592
+
593
+
594
+
595
+
596
+
597
+ <style>
598
+
599
+ body {
600
+
601
+ background-color: #CCFFFF;
602
+
603
+ }
604
+
605
+ </style>
606
+
607
+
608
+
65
609
 
66
610
 
67
611
  UserLogic.php
68
612
 
69
613
 
70
614
 
615
+
616
+
617
+ <?php
618
+
619
+ ini_set( 'display_errors', 1);
620
+
621
+ ini_set( 'error_reporting', E_ALL );
622
+
623
+
624
+
625
+ require_once '../dbconnect.php';
626
+
627
+
628
+
629
+ class UserLogic
630
+
631
+ {
632
+
71
- /**
633
+ /**
634
+
635
+ * ユーザーを登録する
636
+
637
+ * @param array $userData
638
+
639
+ * @return array|bool $result|false
640
+
641
+ */
642
+
643
+ public static function createUser($userData)
644
+
645
+ {
646
+
647
+ $result = false;
648
+
649
+
650
+
651
+ $sql = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)';
652
+
653
+
654
+
655
+ //ユーザーデータを配列に入れる
656
+
657
+ $arr = [];
658
+
659
+ $arr[] = $userData['username'];
660
+
661
+ $arr[] = $userData['email'];
662
+
663
+ $arr[] = password_hash($userData['password'],
664
+
665
+ PASSWORD_DEFAULT);
666
+
667
+
668
+
669
+ try {
670
+
671
+ $stmt = connect()->prepare($sql);
672
+
673
+ $result = $stmt->execute($arr);
674
+
675
+ return $result;
676
+
677
+ } catch(\Exception $e) {
678
+
679
+ return $result;
680
+
681
+ }
682
+
683
+ }
684
+
685
+
686
+
687
+ /**
72
688
 
73
689
  * ログイン処理
74
690
 
@@ -218,7 +834,25 @@
218
834
 
219
835
 
220
836
 
221
-
837
+ /**
838
+
839
+ * ログアウト処理
840
+
841
+ */
842
+
843
+ public static function logout()
844
+
845
+ {
846
+
847
+ $_SESSION = array();
848
+
849
+ session_destroy();
850
+
851
+ }
852
+
853
+
854
+
855
+ }
222
856
 
223
857
  ```ここに言語名を入力
224
858
 

1

脱字

2020/11/27 12:06

投稿

kqosu19
kqosu19

スコア0

test CHANGED
File without changes
test CHANGED
@@ -222,7 +222,7 @@
222
222
 
223
223
  ```ここに言語名を入力
224
224
 
225
- php html css
225
+ php html css MAMP
226
226
 
227
227
  ```
228
228