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
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
Demikian Penjelasan untuk pengambilan data absen. Silakan Berikan komentar jika ada pertanyaan. Terima Kasih
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";
}
?>
//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;
}
?>
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
gan, klau mau ganti PIN jadi NIP karyawan apa yg harus diganti?
ReplyDeletebisa pakai relasi databasenya aja mas
DeletePIN itu tergantung ID ketika di daftarkan di mesin absen.
ReplyDeletejika 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?
caranya gmana ya supaya bisa buat jam masuk dan jam keluarnya. terima kasih
ReplyDeleteBuat variabel untuk waktu masuk & waktu keluar.
DeleteWaktu di mesin absen type data datetime. Jika waktu masuk hanya diambil jam & menit Saja, maka waktu di mesin absen Di sesuaikan juga.
belum ngerti saya admin, boleh minta contoh nya ga. querynya gmn mksh
Deleteitu apakah data yang di ambil $soap_request harus semua data yang di finger ya ?
ReplyDeletegak bisa di filter ?
sehingga tidak membebani hardware fingerprint itu sendiri...
Soalnya saya coba finger print nya malah nge hank (BLANK)
Mohon Jawabannya... terima kasih
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?
DeleteKalau mesinnya lebih dr 1 bagaimana dan koneksinya lewat internet.
ReplyDeletejika lebih dari 1. perlu di setting dari IP untuk masing" mesin Finger Print untuk mengkoneksikan
Deletedi 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?
Deletekalau beda jaringan begini solusinya pake androuino di satu jaringan, tugasnya mengambil data dari mesin dan mengirim ke server (via ip public)
Deleteada coding untuk sinkron waktu mesin absen dengan PHP
ReplyDeletetime di abil dari mesin FingerPrint.
Deletemaaf.. 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. )
ReplyDeleteport: 80 ini port FP atau port DB? trus $Key:0 ini key password FP ato bukan?
Deletekalau time out, ini seperti'a block dari firewall.
Deletecoba 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
maksudnya itu di taro di mana kak.. boleh minta script yang dengan variable $sesuatuxml=? .
Deletekalaus secara realtime ada contohnya teh?
ReplyDelete".$Key."
ReplyDeleteAll
";
$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
mba Aprilianti, boleh minta kontaknya gak?
DeleteKe email saja ya : tjokroaprilianti@gmail.com
Deleteteh, boleh minta kontak kamu? aku mau belajar lebih jauh. email ke pajarrifai95@gmail.com ya,hatur nuhun sebelumnya
ReplyDeleteKe email saja ya : tjokroaprilianti@gmail.com
Deleteteh, mesin fingerprint yg support soap apa tu teh? boleh kasih rekom
ReplyDeleteKemarin saya coba dengan x-100 c.
Deletenanya script php nya pada saat konek ke alat finger print apa saja hardware yang dibutuhkan....
ReplyDeleteterus apakah butuh plugin tambahan seperti soap..atau
seperti ini
- ZKlibrary
- PHP Soap Extension
- PHP Socket Extension
bisa contohkan lebih panjang lagi...
tidak ada tambahan library. hanya dengan koneksi ke IP finger print
Deleteuntuk menganti IP LOCAL ke IP PUBLIC kek mana ya bang?
Deleteteh.. saya coba kok terinput cuma 0 saja
ReplyDeleteapakah sudah terkoneksi dengan finger print? pastikan data di fingerprint ada dan IP sesuai
DeleteFatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\absensi\index.php on line 27
ReplyDeletemuncul seperti ini, knp ya?
pada php.ini di xampp/php
Deletekemudian 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)
mantap berhasil, tapi kok yang masuk DB hanya satu records 0 dan datetimenya juga 0000-00-00 00:00:00 yaaa...
Deleteada rekomendasi mesin absensi yg support soap?
ReplyDeletekemarin saya pakai c-x 100
Deleteselain x-100c ada lagi kak?
Deletemaaf kenapa keluar error Parse error syntax error, unexpected "0" (T_LNUMBER) in C:\xampp\htdocs\tarikdatagawedewe\index.php online 4
ReplyDeleteudah ketemu, ternyata kurang tanda " pada ip nya
Deletetetapi 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
udah bisa ternyata portnya harus port mesin absen,
Deletekemudian eksekusi berhasil, tetapi kenapa datanya 0 ya..padahal jelas-jelas sudah konek dan dimesin datanya ada, mohon bantuannya..
coba di print dulu mas, baru di simpan di DB. khawatir ada salah panggil IP mungkin, atau case yg lain
Deletemohon solusi, bagaimana caranya agar tarik datanya realtime dan mesin absensinya lebih dari 1???
ReplyDeletekalau 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.
Deletebagai mana untuk menampilkan Namanya
ReplyDeletehmmm... Nama'a perlu di definisikan di DB sendiri kak.
Deletejadi, 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'"
gmanaa kak
Deletekalau kirim ke database postgresql gimana Teh?
ReplyDeletesama saja kak, koneksi'a saja yang berbeda.
DeleteSaya 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)
ReplyDeletehahaha.. Mantul Gan
Deletesaya keluar nya kok kosong ya ?
ReplyDeletecode nya sudah mengikuti
di pastikan fingerprint support SOAP dan sudah terkoneksi dengan IP fingerprint
Deleteini kalo di pakek di mysqli bisa ngak ya ?
ReplyDeletebisa sih seharusnya, kan mysql cuma untuk update ke DB saja
DeleteIni merek mesinnya apa? Pakai fingerspot bisa kah?
ReplyDeletekemarin saya pakai c-x 100
Deletemohon solusinya, saya sudah melakukan konfigurasi sesperti yang diatas.
ReplyDeleteketika 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..
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
Deletemungkin seperti itu
IP-nya tidak satu jalur. coba di test PING IP untuk memastikan jaringan sudah terkoneksi
Deleteyang aku mau tanyakan cara Komputer kita nangkap IP address fingerprintnya gimana? apakah pakai wireless atau pakai kabel? atau gimana? mohon penjelasannya
ReplyDeletepakai kabel
Deletebisa pakai kabel atau wireless, di cek PING IP untuk menge-tes terkoneksi atau tidak
Deletega support dengan device solution x105 ya ka ?
ReplyDeletecoba di cek deh, device-nya support untuk SOAP atau tidak
DeleteApakah support untuk semua merek FP??
ReplyDeleteyg support untuk SOAP. tidak semuanya support
Deleteada yang bisa share untuk ambil data hanya tanggal tertentu..terimakasih sebelumnya
ReplyDeleteFatal 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
ReplyDeletekenapa di saya eror begitu ya
mungkin pakai mysqli_query() beda versi php-nya bisa jadi
DeleteThis comment has been removed by the author.
ReplyDeleteFatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\htdocs\dashboard\absen\index.php on line 27
ReplyDeleteapakah tidak perlu username/password untuk masuk finger printnya?
itu buka dengan Ip-nya aja sih
Deletebagimana cara memisahkan tabel waktu dan jam agar berbeda tabel
ReplyDelete$datetime=Parse_Data($data,"","");
Deletedipisahkan menjadi =>
$date = substr(Parse_Data($data,"",""),0,10) ;
$time = substr(Parse_Data($data,"",""),11,8) ;
maksudnya kak, bagian
Delete$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
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 ??
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteTeh mau nanya, kalo Saya hanya ingin ambil untuk data januari Saja, apakah bisa di filter pada bagian ini?
ReplyDeleteKarena pada proses ini yang menurut saya terlalu lama loadingnya.
$soap_request="
".$Key."
All
";
Terima kasih
hanya misal untuk data perbulan saja
DeleteUntuk passwordnya? password yg mana ya gan?
ReplyDeletepassword ada untuk ke DB. ada untuk ke mesin finger
DeleteData sudah masuk, akan di buat menjadi, bagaimana caranya ya.
ReplyDeleteData 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
Bagaimana caranya kalo mau menambah user dimesin dari php apakah menggunakan soap juga ?
ReplyDeleteini pake xampp versi berapa yah
ReplyDeleteteh gmn caranya ambil serial number finger printnya
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteka ini kenapa ya,line 9 error
ReplyDeleteC:\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
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 :
ReplyDeleteFitur :
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)
Semoga makin sukses
Deletemba kalo $Connectnya itu TRUE tapi datanya kosong kaga ada data yang terambil atau muncul itu masalahnya apa ya mba ?
ReplyDeletebtw aku pakai x-606 itu support SOAP belum ya ?
Deletedan juga aku pakai wifi yang satu jaringan dengan fingerprint apakah itu bisa atau harus pakai RJ45 ?
coba pastikan Php-nya support atau tidak dengan SOAP ya
Deleteselamat pagi mbak, saya ada kirim email boleh dicek mbak terima kasih
ReplyDeleteselmat 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.
ReplyDeleteCoba bisa akses di https://apriliantiputri.blogspot.com/2021/02/tes-mesin-presensi-dengan-zklib.html?m=1
Deleteterima kasih, alhamdulillah scriptnya bisa saya pakai, semoga sehat dan sukses selalu :)
ReplyDeletedilocal bisa ke tarik, cuman ketika sistem di hosting kenapa tidak bisa ketarik ya?
ReplyDeleteuntuk menganti IP LOCAL ke IP PUBLIC kek mana ya bang?
ReplyDeleteini pake xampp versi brp kak bisa berjalan
ReplyDelete