$ mysql -u root -pパスワード mysql
mysql> create database timerecorder;
mysql> GRANT ALL PRIVILEGES ON timerecorder.* TO timemgr@localhost identified by 'パスワード';
mysql> FLUSH PRIVILEGES;
mysql> quit;
<?phpheader('Expires: Fri, 1 Jab 2010 00:00:00 GMT');header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');header('Cache-Control: no-store, no-cache, must-revalidate');header('Cache-Control: post-check=0, pre-check=0',false);header('Pragma: no-cache');$json_string=file_get_contents('php://input');$data=json_decode($json_string);if(json_last_error()!=JSON_ERROR_NONE){echo"不正です";exit;}$nid=$data->nid;$dsn='mysql:dbname=timerecorder;host=localhost;charset=utf8mb4';$user='timemgr';//MySQL用timemgrアカウント$password='パスワード';//MySQL用timemgrアカウントのパスワード$conn=newPDO($dsn,$user,$password);//$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);$sql="select * from card where nid = '".$nid."' and stdate < NOW() and endate > NOW() and flag = 1;";$stmt=$conn->query($sql);$results=$stmt->fetchall();if(empty($results)){$sql="insert into junk (nid) value ('".$nid."');";$conn->exec($sql);$msg="みとうろくカードです";}else{foreach($resultsas$row){$uid=$row['uid'];}$sql="SELECT * FROM user where id = '".$uid."' and stdate < NOW() and endate > NOW() and flag = 1;";$stmta=$conn->query($sql);$resultsa=$stmta->fetchall();if(empty($resultsa)){$msg="ユーザーみとうろく";}else{//以下有効カードの場合の処理foreach($resultsaas$rowa){$uname=$rowa['uname'];$uruby=$rowa['uruby'];}//タイムログ処理//nidの最終記録を確認$sql="select * from timelog where nid = '".$nid."' and dtime < NOW() and flag = 1 order by dtime desc limit 1;";$stmta=$conn->query($sql);$resultsa=$stmta->fetchall();if(empty($resultsa)){$finout=1;//記録が無ければ出勤=1から$dtime='2000/01/01 00:00:00';$msg=$uruby."さん、しゅっきん。";}else{foreach($resultsaas$rowa){$lid=$rowa['id'];$dtime=$rowa['dtime'];$finout=$rowa['finout'];//bitカラムの値の扱い要注意}if($finout==1){//直前の有効レコードが出勤$finout=0;//前回の記録が出勤 日付をまたいでいたら警告if(mktime(0,0,0)>strtotime($dtime)){$msg=$uruby."さん、たいきん。しゅっきんがきのうです。かくにんしてください。";}else{$msg=$uruby."さん、たいきん";}}else{//直前の有効レコードが退勤$finout=1;//前回の記録が退勤 それが本日なら警告if(strtotime($dtime)>strtotime(date("Y/m/d 00:00:00"))){$msg=$uruby."さん、しゅっきん。ぜんかいのたいきんがほんじつです。かくにんして下さい。";}else{$msg=$uruby."さん、しゅっきん。";}}}//最終記録が30秒以内の場合は最終を取り消し// さらに今回分も無効レコードとして登録(とにかく記録はする)if((time()-strtotime($dtime))<30){$sql="update timelog set flag = 0 where id = $lid;";$conn->exec($sql);$sql="insert into timelog (nid, finout, flag) value ('".$nid."', ".$finout.", 0);";$conn->exec($sql);if($finout=0){$sfinout="しゅっきん";}else{$sfinout="たいきん";}$msg=$uruby."さん、30秒いないの".$sfinout."、とりけし";}else{//記録を付ける$sql="insert into timelog (nid, finout) value ('".$nid."', ".$finout.");";$conn->exec($sql);}}}unset($conn);echo$msg;?>