我正在使用TAD类php连接到考勤机,但是我尝试了许多解决方案和代码,但是我失败了,有人可以帮助我吗。
这是针对使用php codeigniter的考勤管理系统的,现在我正在使用手动方法将考勤机从机器转移到MySql。每天清晨,我使用机器公司提供的软件从机器上下载所有出席者,然后该软件将所有出席者记录下载到MS Access数据库文件中,然后从该文件中读取出席者。但是现在我想要一个直接连接到机器。 这是我尝试使用TAD类尝试的一些代码,但与往常一样,我遇到了连接错误。
<?php
require 'vendor/autoload.php';
require 'lib/TADFactory.php';
require 'lib/TAD.php';
require 'lib/TADResponse.php';
require 'lib/Providers/TADSoap.php';
require 'lib/Providers/TADZKLib.php';
require 'lib/Exceptions/ConnectionError.php';
require 'lib/Exceptions/FilterArgumentError.php';
require 'lib/Exceptions/UnrecognizedArgument.php';
require 'lib/Exceptions/UnrecognizedCommand.php';
use TADPHP\TADFactory;
use TADPHP\TAD;
try {
$tad = (new TADFactory(['ip' =>
'192.168.2.200','com_key'=>0]))->get_instance();
if($tad->is_alive())
{
echo "done";exit();
//$tad->disable();
$att_logs = $tad->get_att_log();
// print_r($att_logs);exit();
$att_logs=$att_logs->filter_by_date(['start' => date('Y-m-d'),'end' =>
date('Y-m-d')]);
if ($att_logs->is_empty_response())
{
my_log('Does not have logs recorded');
//continue;
}
else
{
$array_att_logs = $att_logs->to_array();
$device_logs = array();
$counter=1;
if(!empty($array_att_logs))
foreach($array_att_logs as $key =>$val )
{
foreach($val as $log)
{
$device_logs[]= array(
'institutes_inst_id' => $row['inst_id'],
'employees_machine_user_id' => $log['PIN'],
'date' => date('Y-m-d',strtotime($log['DateTime'])),
'time' => date('H:i:s',strtotime($log['DateTime']))
);
$counter++;
}
}
add_att_logs($device_logs);
//$tad->enable();
my_log('Device in ' . $row['inst_name']. '['.$row['ip_address']. '] has ' .
$counter . ' records');
}
}
else
{
echo "not";exit();
my_log('Device in ' . $row['inst_name'] . ' is off-line');
continue;
}
}
catch(Exception $e)
{
my_log('Device in ' . $row['inst_name']. '['.$row['ip_address']. '] is
offline');
}
?>
答案 0 :(得分:0)
从“访问控制软件”中获取设备的“ ip”和“ comm_key”。也许您在此处提供的ip和comm_key
$tad = (new TADFactory(['ip' =>'192.168.2.200','com_key'=>0]))->get_instance();
是错误的。
此外,您还需要在php.ini文件中启用php_sockets.dll和php_soap.dll。
答案 1 :(得分:0)
TAD类对我不起作用,我尝试了zk库并将设备comm密钥设置为0,它起作用了,但是只能获取用户信息,其他功能(如出勤等)不起作用: 这是我的代码:
<?php
include "zklibrary.php";
$zk = new ZKLibrary('192.168.2.200', 4370);
$zk->connect();
// if ($check) {
// echo "connect";
// }
// else{
// echo "not";
// }
// echo($check);exit();
// $zk->disableDevice();
// $attendance = $zk->getAttendance();
// $size = $zk->getSizeUser();
// echo $size;
// $users = $zk->getUser();
// print_r($users);exit();
$test1 = $zk-> getVersion();
print_r($test1);
?>
<table width="100%" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
<thead>
<tr>
<td width="25">No</td>
<td>UID</td>
<td>ID</td>
<td>Name</td>
<td>Role</td>
<td>Password</td>
</tr>
</thead>
<tbody>
<?php
$no = 0;
foreach($users as $key=>$user)
{
$no++;
?>
<tr>
<td align="right"><?php echo $no;?></td>
<td><?php echo $key;?></td>
<td><?php echo $user[0];?></td>
<td><?php echo $user[1];?></td>
<td><?php echo $user[2];?></td>
<td><?php echo $user[3];?></td>
</tr>
<?php
}
?>
</tbody>
</table>
<?php
$zk->enableDevice();
$zk->disconnect();
?>