Senin, 02 Mei 2011

PHP MySQL Tarik Data Absensi Dari Mesin Absen (Finger Print)

I'm back..Udah lama pengen share kaya gini tapi baru punya niat share ini lewat tulisan..biasanya sih kalo ada yang nanya saya kasih tau by email atau pas kopdar :D

Sebenarnya code php ini sudah lama dan banyak dipakai mudah-mudahan bisa berguna bagi teman - teman sekalian

Teman - teman pernah dapat project absensi karyawan atau yang lebih besar lagi sampai project penggajian mungkin? tidak bisa di pisahkan di project tersebut pasti ada modul yang namanya kehadiran karyawan.. trus darimana data kehadiran karyawannya?

Ada yang diinput manual, ada yg import dari excel dan sekarang tidak bisa di pungkiri ambil data langsung dari mesin absen. Nah lho gimana cara nya ambil data dari mesin absen?paling saya lakukan manual save data dari software bawaan mesin absensi ke excel terus baru deh saya import excel tersebut. Kalau cara seperti itu sih bukan ambil data langsung namanya..hehehe..

Saya share ini langsung ke main codingnya y..

saya anggap untuk koneksi db dan lain - lain teman - teman sudah mastah deh dan finger printnya sudah ada web service dengan kata lain mesin itu bisa konek dengan php (biasanya sih finger print sekarang sudah punya web service, saya pake finger print yg type lama jadi harus minta install dulu ke suppliernya)

// begin tag php
<?php
if($IP=="") $IP="xxx.xxx.xxx.xxx";  // ip mesin absen / finger print
if($Key=="") $Key="0";


    $Connect = fsockopen($IP, "80", $errno, $errstr, 1);
    if($Connect){
      $soap_request="<GetAttLog><ArgComKey xsi:type=\"xsd:integer\">".$Key."</ArgComKey><Arg><PIN xsi:type=\"xsd:integer\">All</PIN></Arg></GetAttLog>";
$newLine="\r\n";
fputs($Connect, "POST /iWsService HTTP/1.0".$newLine);
fputs($Connect, "Content-Type: text/xml".$newLine);
fputs($Connect, "Content-Length: ".strlen($soap_request).$newLine.$newLine);
fputs($Connect, $soap_request.$newLine);
$buffer="";
while($Response=fgets($Connect, 1024)){
$buffer=$buffer.$Response;
}

$buffer=Parse_Data($buffer,"<GetAttLogResponse>","</GetAttLogResponse>");
$buffer=explode("\r\n",$buffer);
for($a=0;$a<count($buffer);$a++){
$data=Parse_Data($buffer[$a],"<Row>","</Row>");
$PIN=Parse_Data($data,"<PIN>","</PIN>");
$DateTime= explode(" ",Parse_Data($data,"<DateTime>","</DateTime>"));
$Date = $DateTime[0];
$Time = $DateTime[1];
$Verified=Parse_Data($data,"<Verified>","</Verified>");
$Status=Parse_Data($data,"<Status>","</Status>");
if($Status=='0'){ $stat = "IN"; } else if($Status=='1'){ $stat = "OUT";};
$insertlogabsen = query("INSERT INTO log_absen VALUES('', '$PIN', '$Date', '$Time', '$stat','0','1')");
}
    }else {
          echo "Koneksi Gagal";
}
    
    
?>

// end tag php


Mungkin itu yang bisa saya share..

Semoga membantu.

9 komentar:

  1. muncul Fatal error: Call to undefined function Parse_Data() in C:\xampp\htdocs\fingerprint\index.php on line 19 artinya apa ya

    BalasHapus
  2. @Meifianto Prajitno, itu karena fungsi Parse_data() belum pernah didefinisikan atau kalau fungsi tsb dibuat di file terpisah, Parse_data() belum di-include..

    BalasHapus
  3. bias saya lihat atau saya bias copy function parse_data() nya mas ano ?

    BalasHapus
  4. function Parse_Data($data,$p1,$p2){

    $data=" ".$data;

    $hasil="";

    $awal=strpos($data,$p1);

    if($awal!=""){

    $akhir=strpos(strstr($data,$p1),$p2);

    if($akhir!=""){

    $hasil=substr($data,$awal+strlen($p1),$akhir-strlen($p1));

    }

    }

    return $hasil;

    }

    BalasHapus
  5. Mau tanya pak, kalau kita ambil datanya dibatasi tgl gimana ya pak??

    Terimaksih

    BalasHapus
  6. mau tanya ,apa bisa web langsung mengambil data dari fingerscannernya itu? caranya bagaimana?

    BalasHapus
  7. Saya punya program realtime tarik data absensi dengan fitur adms/cloud pada mesin. Kelebihannya adalah bisa dipasang di shared hosting maupun vps. Tidak membutuhkan soap dan scheduler (cron job) untuk tariknya, jadi bener2 realtime. Program saya memanfaatkan fitur ADMS/CLoud pada mesin absensinya seperti layaknya vendor-vendor mesin yang menyewakan cloud absensi dengan koneksi mesin ke server2 mereka. Program saya dari PHP dan MYSQL. Kelebihannya adalah bisa tarik realtime, upload sidik jari dari satu mesin ke mesin lainnya, upload user dan privilage user, hapus sidik jari, hapus transaksi, reboot, tarik informasi mesin dan lain2. Berminat?? hub 0813 48021 778 (WA)

    BalasHapus