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

回答編集履歴

3

見直し

2021/07/09 02:56

投稿

退会済みユーザー
answer CHANGED
@@ -6,6 +6,24 @@
6
6
  ログインして打刻アクションしたら確実に記録を残さなきゃいけない、
7
7
  出勤や退勤のアクションで、都度データベースに永続的な記録を残す必要があるはずだけど。
8
8
 
9
+ ```php
10
+ ini_set('display_errors', 1);
11
+ error_reporting(E_ALL);
12
+ session_start();
13
+ if(isset($_POST['begin'])){
14
+ $_SESSION['begin'] = $_POST['begin'];
15
+ header('Location: begin.php');
16
+ }if(isset($_POST['finish'])){
17
+ $_SESSION['finish'] = $_POST['finish'];
18
+ header('Location: finish.php');
19
+ }
20
+ ```
21
+ この、リダイレクトされた先のbegin.phpやfinish.phpでやってる処理(コード)をみてないので、
22
+ さっぱりわからんです。
23
+ そっちにデータベースへの格納処理がある?
24
+ わざわざリダイレクトさせなくてもこのフォームの受信処理でやってしまえば良さそうだけど、
25
+ リダイレクトさせなきゃいけない、(私にわからない)何らかの事情があるんでしょうか。
26
+
9
27
  出勤や退勤をどのようにデータベースに保持して、
10
28
  それをどういうふうに集計して使うのかまで、
11
29
  先々を見据えた設計をしてからコードを書きましょうよ。

2

加筆

2021/07/09 02:56

投稿

退会済みユーザー
answer CHANGED
@@ -19,4 +19,15 @@
19
19
  システム崩壊しますので。
20
20
  phpで作る必要もなく、
21
21
  データベースに記録する際にSQL上でNOW()とか使って
22
- データベース上で現在日時を生成すればいいので。
22
+ データベース上で現在日時を生成すればいいので。
23
+
24
+ ---
25
+
26
+ 本当にデータベースに記録できているかどうか確かめる方法としては、
27
+ SQLで確認しましょうよ。
28
+ 百歩譲ってmysql/mariadbならphpMyAdminとか、
29
+ postgresqlならpgAdmin4とかいうデータベース管理ソフト越しに
30
+ データベースを観察することは出来るはずです。
31
+ そういうのを仕込んでいなければ、
32
+ 例えばWindowsならHeidiSQLとかA5:SQL mk-IIとか
33
+ データベース管理・開発支援ツールを使って観察したりすることも出来るわけで。

1

見直し

2021/07/09 02:39

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,22 @@
1
1
  セッション情報にのみ残すのって、webサーバー止めたら記録に残らないけどいいのか?
2
+ キャッシュのクリアやクッキーのクリアなどwebブラウザ側をいじることでもセッション情報って壊れるけれど。
3
+
4
+ 勤怠管理システムって言うなら、
5
+ サーバーを止めるようなことがあっても記録は残っていなきゃいけないし、
6
+ ログインして打刻アクションしたら確実に記録を残さなきゃいけない、
2
7
  出勤や退勤のアクションで、都度データベースに永続的な記録を残す必要があるはずだけど。
3
8
 
4
9
  出勤や退勤をどのようにデータベースに保持して、
5
10
  それをどういうふうに集計して使うのかまで、
6
11
  先々を見据えた設計をしてからコードを書きましょうよ。
7
12
  場当たり的な、目先の機能だけ作るやり方は、
8
- どこかの国のオリンピックみたいになりますよ。
13
+ どこかの国のオリンピックみたいになりますよ。
14
+
15
+ 老婆心ながら、
16
+ 打刻時刻に関して、webブラウザ側で作ることは止めましょうね、
17
+ フォーム送信データは、わかっている人ならいくらでも細工できてしまうので、
18
+ 定時を過ぎている時刻なのにフォームに含まれる日時情報を細工して送信できたら、
19
+ システム崩壊しますので。
20
+ phpで作る必要もなく、
21
+ データベースに記録する際にSQL上でNOW()とか使って
22
+ データベース上で現在日時を生成すればいいので。