Skip to main content

Mengambil data Fingerprint Absen dengan SOAP PHP

Kali ini akan membahas menarik absen dengan code PHP SOAP :

1. Buatlah database untuk menampung data di localhost phpmyadmin dengan fild sebagai berikut :




2. Buat Koneksi pada code php config.php

<?php
//variabel database
$nama_host="localhost";
$user_db="root";
$password_db="";
$nama_db="penggajian";

//koneksi database
$koneksi= mysql_connect($nama_host, $user_db, $password_db);

//bila terkoneksi
if($koneksi){
//pilih database
mysql_select_db($nama_db);
}else{
echo "Database tidak terkoneksi";
}
?>

3. Untuk mengambil data dari absen, IP di ubah terlebih dahulu sesuai dengan mesin. masukkan code berikut untuk mengambil data absen dan menyimpan kedalam database. Simpan file kedalam index.php

<?php
include("config.php");
$IP="192.168.1.2";
$Key="0";
if($IP=="") $IP="192.168.1.2";
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;
        }
    }else echo "Koneksi Gagal";
 
 
    $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=Parse_Data($data,"<DateTime>","</DateTime>");
        $status=Parse_Data($data,"<Status>","</Status>");

 
$cekdulu= "select * from absen where pin='$pin' and waktu='$datetime' ";
$prosescek= mysql_query($cekdulu);
if (mysql_num_rows($prosescek)>0) { //proses mengingatkan data sudah ada
// echo "<script>alert('Username Sudah Digunakan');history.go(-1) </script>";
}
else { //proses menambahkan data, tambahkan sesuai dengan yang kalian gunakan
$sql = "INSERT INTO absen (pin, waktu, status) values ('$pin','$datetime','$status')";
mysql_query($sql) or exit(mysql_error());
}
ini_set('max_execution_time', 300);
     
    }
echo "<script>alert('Sudah Selesai'); </script>";

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; 
}
?>

Demikian Penjelasan untuk pengambilan data absen. Silakan Berikan komentar jika ada pertanyaan. Terima Kasih

untuk kendala akses mesin, dapat mencoba panduan berikut : https://apriliantiputri.blogspot.com/2021/02/tes-mesin-presensi-dengan-zklib.html

Comments

  1. gan, klau mau ganti PIN jadi NIP karyawan apa yg harus diganti?

    ReplyDelete
  2. PIN itu tergantung ID ketika di daftarkan di mesin absen.
    jika akan dimasukkan NIP, maka ID diinput sesuai NIP.
    jika mau di input di Database, maka pada bagian
    $sql = "INSERT INTO absen (pin, waktu, status) values ('$pin','$datetime','$status')";
    $sql = "INSERT INTO absen (NIP, waktu, status) values ('$pin','$datetime','$status')";

    apakah terjawab?

    ReplyDelete
  3. caranya gmana ya supaya bisa buat jam masuk dan jam keluarnya. terima kasih

    ReplyDelete
    Replies
    1. Buat variabel untuk waktu masuk & waktu keluar.
      Waktu di mesin absen type data datetime. Jika waktu masuk hanya diambil jam & menit Saja, maka waktu di mesin absen Di sesuaikan juga.

      Delete
    2. belum ngerti saya admin, boleh minta contoh nya ga. querynya gmn mksh

      Delete
  4. itu apakah data yang di ambil $soap_request harus semua data yang di finger ya ?
    gak bisa di filter ?
    sehingga tidak membebani hardware fingerprint itu sendiri...

    Soalnya saya coba finger print nya malah nge hank (BLANK)

    Mohon Jawabannya... terima kasih

    ReplyDelete
    Replies
    1. belum pernah coba tuh gan kalau di filter dari ketika di download. yg di download kan bagian : pin (id pekerja), tanggal dan keterangan (masuk/keluar). data yang di download berapa tahun?

      Delete
  5. Kalau mesinnya lebih dr 1 bagaimana dan koneksinya lewat internet.

    ReplyDelete
    Replies
    1. jika lebih dari 1. perlu di setting dari IP untuk masing" mesin Finger Print untuk mengkoneksikan

      Delete
    2. di mesin nya kan bisa setting ip cloud server. kondisinya mesin absen ada bbrp dan letaknya beda jaringan LAN dengan server aplikasi ini. Server aplikasi memiliki IP Publik yang static, jadi IP mesin Absen yang kondisinya DHCP. Apakah source code di atas masih dapat digunakan (dgn tambahan modifikasi) di kondisi environment terserbut?

      Delete
    3. kalau beda jaringan begini solusinya pake androuino di satu jaringan, tugasnya mengambil data dari mesin dan mengirim ke server (via ip public)

      Delete
  6. ada coding untuk sinkron waktu mesin absen dengan PHP

    ReplyDelete
  7. maaf.. kok error terus ya.. mohon bvantuannya Warning: fsockopen(): unable to connect to xxx.xxx.xxx.xxx:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. )

    ReplyDelete
    Replies
    1. port: 80 ini port FP atau port DB? trus $Key:0 ini key password FP ato bukan?

      Delete
    2. kalau time out, ini seperti'a block dari firewall.
      coba lakukan $sesuatuxml = file_get_contents("http://xxx.xxx.xxx.xxx:80/path/to/file.xml"); keluaran akan tersimpan di variabel $sesuatuxml.

      80 merupakan port apache.$key:0 password dari FP'a

      Delete
    3. maksudnya itu di taro di mana kak.. boleh minta script yang dengan variable $sesuatuxml=? .

      Delete
  8. kalaus secara realtime ada contohnya teh?

    ReplyDelete
  9. ".$Key."
    All
    ";

    $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;
    }
    } else echo "Koneksi Gagal";

    $buffer = Parse_Data($buffer,"","");
    $buffer = explode("\r\n",$buffer);

    for ($a=0; $a","");

    $export[$a]['1'] = Parse_Data($data,"","");
    $export[$a]['2'] = Parse_Data($data,"","");
    $export[$a]['3'] = Parse_Data($data,"","");
    }
    echo '< pre>';
    print_r($export);

    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;
    }
    ?>
    Simpan dengan nama test.php Di file htdocs
    C://xampp/htdocs/file/test.php
    Run: localhost/file/test.php

    ReplyDelete
    Replies
    1. mba Aprilianti, boleh minta kontaknya gak?

      Delete
    2. Ke email saja ya : tjokroaprilianti@gmail.com

      Delete
  10. teh, boleh minta kontak kamu? aku mau belajar lebih jauh. email ke pajarrifai95@gmail.com ya,hatur nuhun sebelumnya

    ReplyDelete
  11. teh, mesin fingerprint yg support soap apa tu teh? boleh kasih rekom

    ReplyDelete
  12. nanya script php nya pada saat konek ke alat finger print apa saja hardware yang dibutuhkan....

    terus apakah butuh plugin tambahan seperti soap..atau
    seperti ini
    - ZKlibrary
    - PHP Soap Extension
    - PHP Socket Extension

    bisa contohkan lebih panjang lagi...

    ReplyDelete
    Replies
    1. tidak ada tambahan library. hanya dengan koneksi ke IP finger print

      Delete
    2. untuk menganti IP LOCAL ke IP PUBLIC kek mana ya bang?

      Delete
  13. teh.. saya coba kok terinput cuma 0 saja

    ReplyDelete
    Replies
    1. apakah sudah terkoneksi dengan finger print? pastikan data di fingerprint ada dan IP sesuai

      Delete
  14. Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\absensi\index.php on line 27


    muncul seperti ini, knp ya?

    ReplyDelete
    Replies
    1. pada php.ini di xampp/php

      kemudian ubah :
      max_execution_time = 360 ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
      max_input_time = 120 ; Maximum amount of time each script may spend parsing request data
      ;max_input_nesting_level = 64 ; Maximum input variable nesting level
      memory_limit = 128M ; Maximum amount of memory a script may consume (128MB by default)

      Delete
    2. mantap berhasil, tapi kok yang masuk DB hanya satu records 0 dan datetimenya juga 0000-00-00 00:00:00 yaaa...

      Delete
  15. ada rekomendasi mesin absensi yg support soap?

    ReplyDelete
  16. maaf kenapa keluar error Parse error syntax error, unexpected "0" (T_LNUMBER) in C:\xampp\htdocs\tarikdatagawedewe\index.php online 4

    ReplyDelete
    Replies
    1. udah ketemu, ternyata kurang tanda " pada ip nya
      tetapi masih ada error Warning: fsockopen(): unable to connect to xxx.xxx.xxx.xxx:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ) in C:\xampp\htdocs\tarikdatagawedewe\index.php on line 9 Koneksi Gagal

      Delete
    2. udah bisa ternyata portnya harus port mesin absen,
      kemudian eksekusi berhasil, tetapi kenapa datanya 0 ya..padahal jelas-jelas sudah konek dan dimesin datanya ada, mohon bantuannya..

      Delete
    3. coba di print dulu mas, baru di simpan di DB. khawatir ada salah panggil IP mungkin, atau case yg lain

      Delete
  17. mohon solusi, bagaimana caranya agar tarik datanya realtime dan mesin absensinya lebih dari 1???

    ReplyDelete
    Replies
    1. kalau lebih dari 1, masing" mesin diberikan IP yang sejalur dengan web'a mas. kalau mau realtime, bisa di reload untuk simpan data pada penyimpanan ke DB.

      Delete
  18. bagai mana untuk menampilkan Namanya

    ReplyDelete
    Replies
    1. hmmm... Nama'a perlu di definisikan di DB sendiri kak.
      jadi, kakak bikin DB untuk Nama dengan ID. Misal : 1=Andi;2=Lia.
      kemudian dari mesin kan dapat mengambil nilai ID, kemudian get nama dengan "SELECT name from table where id = '$PIN'"

      Delete
  19. kalau kirim ke database postgresql gimana Teh?

    ReplyDelete
  20. Saya punya program realtime tarik data absensi dengan fitur adms. Kelebihannya adalah bisa dipasang di shard hosting maupun vps. Tidak membutuhkan soap dan scheduler (cron job) untuk tariknya, jadi bener2 real. 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)

    ReplyDelete
  21. saya keluar nya kok kosong ya ?

    code nya sudah mengikuti

    ReplyDelete
    Replies
    1. di pastikan fingerprint support SOAP dan sudah terkoneksi dengan IP fingerprint

      Delete
  22. ini kalo di pakek di mysqli bisa ngak ya ?

    ReplyDelete
    Replies
    1. bisa sih seharusnya, kan mysql cuma untuk update ke DB saja

      Delete
  23. Ini merek mesinnya apa? Pakai fingerspot bisa kah?

    ReplyDelete
  24. mohon solusinya, saya sudah melakukan konfigurasi sesperti yang diatas.
    ketika saya menggunakan IP yang sama semisal

    kasus 1
    ================================
    IP komputer yang narik data finjer 192.168.2.15
    IP Mesin finjer 192.168.2.20
    data bisa terambil.

    kasus 2
    =================================
    IP komputer yang narik data finjer 192.168.2.15
    IP Mesin finjer 192.168.20.123
    terjadi eror
    Warning: fsockopen(): unable to connect to 168.192.2.20:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. )
    Koneksi Gagal

    mohon solusinya..

    ReplyDelete
    Replies
    1. jelas ga bisa.. karena itu beda kelas IP address. usahain yang beda cuman bit yang terakhirnya aja misalkan 192.168.1.100 bisa berhubungan dengan 192.168.1.1-254 tapi tidak bisa berhubungan dengan 192.168.2.1 - dst

      mungkin seperti itu

      Delete
    2. IP-nya tidak satu jalur. coba di test PING IP untuk memastikan jaringan sudah terkoneksi

      Delete
  25. yang aku mau tanyakan cara Komputer kita nangkap IP address fingerprintnya gimana? apakah pakai wireless atau pakai kabel? atau gimana? mohon penjelasannya

    ReplyDelete
    Replies
    1. bisa pakai kabel atau wireless, di cek PING IP untuk menge-tes terkoneksi atau tidak

      Delete
  26. ga support dengan device solution x105 ya ka ?

    ReplyDelete
    Replies
    1. coba di cek deh, device-nya support untuk SOAP atau tidak

      Delete
  27. Apakah support untuk semua merek FP??

    ReplyDelete
  28. ada yang bisa share untuk ambil data hanya tanggal tertentu..terimakasih sebelumnya

    ReplyDelete
  29. Fatal error: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\absen\index.php:42 Stack trace: #0 {main} thrown in C:\xampp\htdocs\absen\index.php on line 42

    kenapa di saya eror begitu ya

    ReplyDelete
    Replies
    1. mungkin pakai mysqli_query() beda versi php-nya bisa jadi

      Delete
  30. This comment has been removed by the author.

    ReplyDelete
  31. Fatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\htdocs\dashboard\absen\index.php on line 27

    apakah tidak perlu username/password untuk masuk finger printnya?

    ReplyDelete
  32. bagimana cara memisahkan tabel waktu dan jam agar berbeda tabel

    ReplyDelete
    Replies
    1. $datetime=Parse_Data($data,"","");
      dipisahkan menjadi =>
      $date = substr(Parse_Data($data,"",""),0,10) ;
      $time = substr(Parse_Data($data,"",""),11,8) ;

      Delete
    2. maksudnya kak, bagian
      $data=Parse_Data($buffer[$a],"","");

      $pin=Parse_Data($data,"","");
      $datetime=Parse_Data($data,"","");
      $status=Parse_Data($data,"","");
      Di ganti Dengan

      $data=Parse_Data($buffer[$a],"","");

      $pin=Parse_Data($data,"","");
      $status=Parse_Data($data,"","");
      $date = substr(Parse_Data($data,"",""),0,10) ;
      $time = substr(Parse_Data($data,"",""),11,8) ;

      Mohon pencerahannya kak, Thanks

      Delete
  33. Ka terimakasih artikel nya, klo kita mau ambil data dari satu pin, yang kita mau ambil data pertama(sebagai absen masuk) dan terakhir (sebagai absen pulang) pada hari itu query nya gmna ya ka ??

    ReplyDelete
  34. This comment has been removed by the author.

    ReplyDelete
  35. Teh mau nanya, kalo Saya hanya ingin ambil untuk data januari Saja, apakah bisa di filter pada bagian ini?

    Karena pada proses ini yang menurut saya terlalu lama loadingnya.

    $soap_request="
    ".$Key."
    All
    ";


    Terima kasih

    ReplyDelete
  36. Untuk passwordnya? password yg mana ya gan?

    ReplyDelete
    Replies
    1. password ada untuk ke DB. ada untuk ke mesin finger

      Delete
  37. Data sudah masuk, akan di buat menjadi, bagaimana caranya ya.
    Data Awal Menjadi :
    pin Tanggal id_port status Masuk Pulang Klr_istirahat Msk istirahat
    4 2020-01-30 06:33:13 1 0 pin Tanggal (status 0) (status 1) (status 2) (status 3 )
    4 2020-01-30 11:00:07 1 2 4 2020-01-30 06:33 15:00 11:00 11:08
    4 2020-01-30 11:08:52 1 3
    4 2020-01-30 15:00:47 1 1

    ReplyDelete
  38. Bagaimana caranya kalo mau menambah user dimesin dari php apakah menggunakan soap juga ?

    ReplyDelete
  39. ini pake xampp versi berapa yah

    ReplyDelete
  40. teh gmn caranya ambil serial number finger printnya

    ReplyDelete
  41. This comment has been removed by the author.

    ReplyDelete
  42. ka ini kenapa ya,line 9 error

    C:\xampp\htdocs\penggajian\config.php:9 Stack trace: #0 C:\xampp\htdocs\penggajian\index.php(2): include() #1 {main} thrown in C:\xampp\htdocs\penggajian\config.php on line 9

    ReplyDelete
  43. saya ada program untuk otomatis tarik data absensi tanpa perlu pakai schduler, operator atau aplikasi tamabhhan lainnya. Tidak menggunakan SOAP atau desktop aplikasi. Aplikasi yang saya buat berbasis web dengan bahasa pemoggraman PHP dan databasenya MYSQL. Selain bisa mendapatkan data absensi secara REALTIME, juga bisa mengkontrol mesin absensi. Ini Fitur Lengkapnya :
    Fitur :
    1. Realtime
    2. Support banyak merek mesin, dan satu server bisa menampung hingga puluhan mesin
    3. Upoload user ke mesin yang diinginkan
    4. Upoload template sidik jari ke mesin yang diinginkan
    5. Hapus Transaksi di mesin
    6. Hapus sidik jari di mesin
    7. Tarik informasi mesin (Jumlah transkasi, jumlah sidik jari dan settingan mesin)
    8. Dapat mengethaui status mesin online atau offline
    9. Reboot mesin
    10. Tarik manual data absensi dan sidik jari user
    11. Tarik otomatis id absen dan nama user di mesin
    12. Bisa upload dan download template finger nya dari mesin ke server atau pun sebaliknya
    Berminat dan demo bisa saya berikan selama anda memiliki mesin absensi yang bisa dibuat online dan memiliki fitur CLOUD SERVER dapat mengubungin saya di 081348021778 (WA Available)

    ReplyDelete
  44. mba kalo $Connectnya itu TRUE tapi datanya kosong kaga ada data yang terambil atau muncul itu masalahnya apa ya mba ?

    ReplyDelete
    Replies
    1. btw aku pakai x-606 itu support SOAP belum ya ?
      dan juga aku pakai wifi yang satu jaringan dengan fingerprint apakah itu bisa atau harus pakai RJ45 ?

      Delete
    2. coba pastikan Php-nya support atau tidak dengan SOAP ya

      Delete
  45. selamat pagi mbak, saya ada kirim email boleh dicek mbak terima kasih

    ReplyDelete
  46. selmat siang mbak, salam kenal saya ingin bertanya mba tau script untuk narik data user dari mesin fingerprint mbak? mohon bantuannya bila ada yang tau buat tugas kuliah terima kasih.

    ReplyDelete
    Replies
    1. Coba bisa akses di https://apriliantiputri.blogspot.com/2021/02/tes-mesin-presensi-dengan-zklib.html?m=1

      Delete
  47. terima kasih, alhamdulillah scriptnya bisa saya pakai, semoga sehat dan sukses selalu :)

    ReplyDelete
  48. dilocal bisa ke tarik, cuman ketika sistem di hosting kenapa tidak bisa ketarik ya?

    ReplyDelete
  49. untuk menganti IP LOCAL ke IP PUBLIC kek mana ya bang?

    ReplyDelete

Post a Comment

Popular posts from this blog

Text Area agar enter terbaca dengan PHP code

Pada kali ini, saya akan membahas pembuatan Text Area agar terbaca enter-nya. jadi output sesuai dengan input. Berikut code untuk index.php <form method="post" enctype="multipart/form-data"> <textarea name="description" id="description" class="form-control" rows="14" cols="40"></textarea> <input type="submit" class="btn-primary btn" value="Add" name="btnAdd" />&nbsp; </form> <?php if(isset($_POST['btnAdd'])){         $description = $_POST['description']; echo nl2br($description); //untuk sesuai dengan input text area                 echo "<br>"; echo "<br>";                 echo $description; } ?> Berikut hasil keluaran dari code di atas :

Tes Mesin Presensi dengan zklib

Berikut php code menggunakan zklib untuk memastikan data mesin finger dapat di tarik atau tidak. bisa di run di halaman C:/xampp/htdocs https://drive.google.com/drive/folders/1GR_dhKWOdAF5UclDKDW7mshO7PA4FKbx?usp=sharing atau bisa mengecek koneksi mesin menggunakan browser (jika mesin support untuk browser) dengan open :  ip mesin/csl/login contoh :  192.168.1.2/csl/login Bisa di pastikan juga PHP support dengan SOAP.