Bayu Pinasthika

IT Consultant

System Integrator

Cyber Security Analyst

Bayu Pinasthika

IT Consultant

System Integrator

Cyber Security Analyst

Blog Post

Mengambil Data Absensi X100C Dengan PHP

Saat membantu teman saya mengambil data absen dari mesin absen X100C, saya mencari ke berbagai sumber. Berikut cara menarik data mesin absen X100C dengan PHP.

Tarik Data

Misal IP address yang di set pada mesin absen adalah 192.168.1.220 dan keynya adalah 0. Lalu buatlah script php dengan isi berikut.

$IP  = "192.168.1.220";
$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>");

  $export[$a]['pin'] = Parse_Data($data,"<PIN>","</PIN>");
  $export[$a]['waktu'] = Parse_Data($data,"<DateTime>","</DateTime>");
  $export[$a]['status'] = Parse_Data($data,"<Status>","</Status>");
}

echo '<pre>';
print_r($export);

Setelah itu sisipkan function Parse_Data() dengan script berikut.

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

Maka hasil dari data tersebut akan didapatkan dengan variable $export.

Hapus Data

Untuk melakukan hapus data log presensinya, Anda bisa menghapus dengan cara berikut:

$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";

Tags:
Related Posts
Membuat Script Backup Database di CodeIgniter

Pada saat saya ingin membuat aplikasi saya melakukan backup database secara otomatis, maka saya membuat sebuah script di CodeIgniter untuk…

Membuat Direct Printing Menggunakan PHP

Saat ini direct printing masih menjadi andalan dalam urusan cetak terlebih dalam urusan mencetak struk ataupun cetakan yang menggunakan dot…