Tarik Data Absensi X100C Dengan PHP Soap - Rumah IT

Baru

recent

Tarik Data Absensi X100C Dengan PHP Soap

Tarik Data Absensi X100C Dengan PHP Soap

Solution X100C adalah mesin absensi dengan teknologi finger print yang banyak digunakan di kalangan industri maupun perkantoran. Mesin absen solution X100C ini dapat bekerja dengan standalone, dalam arti tidak perlu terhubung dengan PC atau komputer. Absensi ini juga memiliki interface ethernet yang memungkinkan untuk beroperasi menggunakan jaringan LAN. Tujuan dari koneksi ke jaringan adalah untuk memudahkan dalam penarikan data absensi.


Sebenarnya dalam paket bawaan mesin absensi ini sudah disediakan software Zktime untuk manajemen absensi dan pengolahan data. Namun jika kita mempunyai aplikasi sendiri kita bisa menarik data absensi mesin x100c ini salah satunya dengan menggunakan PHP. Mesin ini mendukung protokol SOAP untuk komunikasi data dengan aplikasi pihak ketiga. Berikut saya jelaskan bagaimana cara menarik data absensi x100c menggunakan PHP.

Tahap Persiapan

Pastikan mesin absensi x100c terhubung ke jaringan via LAN dan sudah mendapatkan IP. Komputer yang akan kita gunakan untuk menarik data dari mesin ini harus dalam satu segmen jaringan yang sama. Kemudian pastikan anda mengetahui COM key atau communication key pada mesin absensi. Secara default mesin absensi X100C mempunyai com key 0. Namun tidak selamanya mesin tersebut memiliki com key 0, bisa juga angka yang lain. Untuk memastikannya silahkan lihat COM key di menu pengaturan pada mesin ini.

Tarik Data Absensi X100C Dengan PHP Soap

Kita juga bisa melakukan penarikan data lebih dari satu mesin absensi sekaligus selama mesin-mesin tersebut terhubung pada jaringan yang sama. Dan pastikan mesin absensi tersebut memiliki data atau log absensi karyawan. Jika belum silahkan tambahkan dulu sampel karyawan didalam mesin dan coba digunakan untuk absen supaya mesin tersebut memiliki riwayat absensi.

Dalam contoh ini saya akan menampilkan data dari 3 mesin absensi sekaligus dengan parameter tiap-tiap mesin absensi sebagai berikut :

No Mesin Absen IP COM key
1 Head Office 192.168.101.135 0
2 Gudang 192.168.101.133 0
3 Produksi 192.168.101.145 0

Membuat Kode PHP Untuk Menampilkan Data Absensi

Sebelumnya anda harus mengaktifkan 2 ekstensi pada php.ini yaitu soap dan socket. Cara mengaktifkan ekstensi pada PHP bisa kalian baca pada artikel dibawah ini .

Baca Juga : 
Cara Mengaktifkan Ekstensi PHP di Hosting
10 Ekstensi PHP Yang Sering Digunakan, Fungsi dan Cara Mengaktifkan

Setelah itu jalankan XAMPP dan buat folder dengan nama absensi di htdocs, didalamnya kalian buat file bernama tarikdata.php sehingga foldernya akan seperti ini htdocs/absensi/tarikdata.php . Kemudian isi dengan kode berikut, sesuaikan dengan IP dan COM key pada mesin absensi kalian.

<!DOCTYPE html>
<html>
<head>
    <title>Tes Tarik Data Mesin Absensi</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="card shadow-sm radius-10 border-0 mb-3">
    <div class="card-body">
        <form action="" method="GET">
            <select name="finger" id="" class="form-select" onchange="form.submit()">
                <option value="0">Pilih Mesin</option>
                <option value="192.168.101.135">Mesin Finger 1</option>
                <option value="192.168.101.133">Mesin Finger 2</option>
                <option value="192.168.101.145">Mesin Finger 3</option>
            </select>
        </form>
        <hr>
        <?php
        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;
        }

        if (isset($_GET['finger'])) {
            $IP = $_GET['finger'];
        } else {
            $IP = '';
        }
        
        $Key = "0";
        ?>

        <?php
        if ($IP != "") { ?>
            <table>
                <thead>
                    <tr align="center">
                        <th><B>UserID</B></th>
                        <th width="200"><B>Tanggal & Jam</th>
                        <th><B>Verifikasi</B></th>
                        <th><B>Status</B></th>
                    </tr>
                </thead>
                <tbody>
                <?php
                $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 = 1; $a < count($buffer) - 1; $a++) {
                    $data = Parse_Data($buffer[$a], "<Row>", "</Row>");
                    $PIN = Parse_Data($data, "<PIN>", "</PIN>");
                    $Name = Parse_Data($data, "<Name>", "</Name>");
                    $DateTime = Parse_Data($data, "<DateTime>", "</DateTime>");
                    $Verified = Parse_Data($data, "<Verified>", "</Verified>");
                    $Status = Parse_Data($data, "<Status>", "</Status>");
                ?> 
                    <tr align="center">
                        <td><?php echo $PIN ?></td>
                        <td><?= $DateTime ?></td>
                        <td><?= $Verified ?></td>
                        <td><?= $Status ?></td>
                    </tr>
                    <?php } ?>
                </tbody>
            </table>
        <?php } ?>
    </div>
</div>
</body>
</html>

Jalankan menggunakan browser dengan URL localhost/absensi/tarikdata.php maka akan tampil seperti gambar dibawah ini. Silahkan pilih mesin absensi untuk menampilkan data pada tiap-tiap mesin.

Tarik Data Absensi X100C Dengan PHP Soap

Membuat Kode PHP Untuk Menghapus Data Absensi

Selain menampilkan data, kita juga bisa menghapus riwayat absensi pada mesin menggunakan PHP. Buat file hapusdata.php di folder yang sama dengan langkah diatas, lalu isikan kode berikut :

<!DOCTYPE html>
<html>
<head>
    <title>Tes Hapus Data Mesin Absensi</title>
</head>
<body>
<div class="card shadow-sm radius-10 border-0 mb-3">
    <div class="card-body">
        <form action="" method="GET">
            <select name="finger" id="" class="form-select" onchange="form.submit()">
                <option value="0">Pilih Mesin</option>
                <option value="192.168.101.135">Mesin Finger 1</option>
                <option value="192.168.101.133">Mesin Finger 2</option>
                <option value="192.168.101.145">Mesin Finger 3</option>
            </select>
        </form>
        <hr>
        <?php
        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;
        }

        if (isset($_GET['finger'])) {
            $IP = $_GET['finger'];
        } else {
            $IP = '';
        }
        
        $Key = "0";
        ?>
        <?php
        if ($IP != "") { ?>
            <table>
                <thead>
                    <tr align="center">
                        <th><B>UserID</B></th>
                        <th width="200"><B>Tanggal & Jam</th>
                        <th><B>Verifikasi</B></th>
                        <th><B>Status</B></th>
                    </tr>
                </thead>
                <tbody>
                <?php
                $Connect = fsockopen($IP, "80", $errno, $errstr, 1);
                if ($Connect) {
                    $soap_request = "<ClearData><ArgComKey xsi:type=\"xsd:integer\">".$Key."</ArgComKey><Arg><Value xsi:type=\"xsd:integer\">3</Value></Arg></ClearData>";
                    $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"; ?>

                    <tr align="center">
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                    </tr>
                    <?php } ?>
                </tbody>
            </table>
    </div>
</div>
</body>
</html>

Jalankan menggunakan browser dengan URL localhost/absensi/hapusdata.php kemudian pilih mesin absensi yang akan dihapus datanya. Ingat ! Penghapusan ini bersifat mengosongkan semua data absensi dan tidak dapat dipulihkan kembali
All Rights Reserved by Rumah IT - Rumah Teknologi Informasi © 2013 - 2022
Powered By Blogger

Contact Form

Name

Email *

Message *

Powered by Blogger.