PHP-从磁卡读取数据

PHP-从磁卡读取数据,php,device,magnetic-cards,Php,Device,Magnetic Cards,我必须提出一个应用程序,其中读卡器将连接到系统,我必须读取磁卡读卡器数据,如果有人交换卡上的读卡器连接 磁卡基本上保存用户注册的详细信息。所以用户在接待时会给卡。接待员将交换卡,系统将从卡中读取数据,并在我的派对管理应用程序中注册该用户 不,我不知道怎么做?用Php可以吗 请分享如何做到这一点。使用条形码阅读器构建了一个模块化系统——一种方法是使用VB或c#等语言构建一个简单的web浏览器(c#有一个组件供您在大约5分钟内完成)。然后,C#可以与浏览器交互,将数据发送到站点?在unix系统上,我

我必须提出一个应用程序,其中读卡器将连接到系统,我必须读取磁卡读卡器数据,如果有人交换卡上的读卡器连接

磁卡基本上保存用户注册的详细信息。所以用户在接待时会给卡。接待员将交换卡,系统将从卡中读取数据,并在我的派对管理应用程序中注册该用户

不,我不知道怎么做?用Php可以吗


请分享如何做到这一点。

使用条形码阅读器构建了一个模块化系统——一种方法是使用VB或c#等语言构建一个简单的web浏览器(c#有一个组件供您在大约5分钟内完成)。然后,C#可以与浏览器交互,将数据发送到站点?

在unix系统上,我会使用命名管道,并让类似python的东西来处理磁卡。我使用的是RS232,python可以很好地处理它。然后可以通过管道连接到PHP。PHP还可以将信息发送回该管道,例如请求重新读取等

我必须提出一个应用程序,其中读卡器将连接到系统,我必须读取磁卡读卡器数据,如果有人交换卡上的读卡器连接

由于您希望在PHP中执行此操作,因此我假设这是一个web应用程序,并且在运行浏览器的客户机上刷卡

您可能有一个键盘模拟swiper(您通常会得到一个文本,如“123456”),在这种情况下,您需要截取键盘/焦点,并将数据作为表单字段或AJAX上传。如果字段或浏览器失去焦点,这可能很棘手,您需要在“kiosk模式”下运行浏览器

或者您可以使用其他技术,例如串行(RS232[C]),我认为这已经过时,或者自定义接口(通常意味着一个USB swiper和一组API)。如果是这样的话,这完全取决于实现了什么API;有些设备附带ActiveX小程序,这将迫使您在Windows平台上使用Internet Explorer技术。有些人使用Java小程序,您必须将它们集成到Web页面中

最后,他们中的一些人拥有一个完全定制的应用程序,它可以通过多种方式与系统接口(案例“定制库”是相同的,只是您还必须自己开发定制应用程序!):

  • 通过向可编程服务器发送自定义HTTP查询。如果是这样的话,你是幸运的;您可以为每个终端编程查询,例如。“http://yourserver/gotcard?terminal=LODGE&card=$$代码$$”。自定义应用程序将潜伏在后台,抓取被刷过的代码,将其发送到服务器;您应轮询服务器,以了解每个终端何时收到代码。您需要处理伪代码和重复代码。这类应用程序附带多个“占位符”,如$$CODE$$,$$TIMESTAMP$$,有时还有$$SWIPEDIRECTION$$;它们用于人员时间跟踪(进入工作时从左向右滑动,回家时从右向左滑动)
  • 通过将代码上传到MySQL或SQL Server,同样使用可编程占位符。在这里,您可能会被迫使用VPN/SSH连接来拦截查询,并且提供的DB驱动程序可能会限制您的体系结构选择
  • 通过使用常用占位符运行自定义应用程序或脚本。在这种情况下,最好的选择是,IMHO,编写一个调用
    lynx
    (Linux或Windows)的脚本,并与案例1“自定义HTTP查询”相衔接
不幸的是,不同的供应商倾向于“黑客”一方(即,他们向您提供硬件和最低限度的软件、库和示例MFC应用程序或源代码,而您自己)或“一切都包括在内且不可协商”一方(也就是说,你可以通过一个完全配置好的POS或employee timelogger应用程序来获取你的阅读器,而不需要用它来做任何其他事情)

如果您正在运行服务器端
,即PHP脚本(不是它的HTML/文本输出)和badge reader在同一台机器上,那么这同样取决于您提供的软件。对于服务器,键盘模拟要么是最好的(如果您有一个无头服务器,没有理由连接键盘),要么是自找麻烦(如果磁性读卡器和真正的键盘处于竞争中)。RS232[C]也很容易使用,在Linux中,你可以
ttytail
或者甚至
tail-f
在日志文件中对设备进行轮询。你可能会有隐私问题“以纯文本记录所有客户的信用卡号”)。或者您可以使用PHP将设备连接到
fopen()
,没有问题

自定义API库可能很棘手。您可能需要使用创建套接字或命名管道“服务器”的技巧,通过
fsockopen()
,打开设备并使其结果可供PHP使用。需要Unix套接字和客户端/服务器编程知识

更新

我在评论中看到你有条形码阅读器库。我仍然假设你在一个web应用场景中(比如,三个带阅读器的POS,一个服务器)

这样做的一种方法可以是:

// PHP "server" application running as CLI on POS #1
// (will read some data from an INI file)

* application initialization

for(;;)
{
    /* Hypothesis 1: blocking library */
    $code = read_barcode();

    /* Hypothesis 2: nonblocking, but buffering library */
    if (!barcode_available())
    {
        sleep(1);
        continue;
    }
    /* Hypothesis 3 is left as an exercise ;-) - remember to reinit the buffer */


    if (!checks_if_valid_barcode($code))
       continue;

    // Unless there's some reason of using cURL, we keep it simple
    // We might want to use mcrypt() function to encrypt the code, though.
    $response = file_get_contents(
         $CONFIG['server_url'].'?terminal='.$CONFIG['terminal']
         .'&code='.$code
    );
    // Do something with the response - maybe just an OK or an ERROR
    // (e.g. play a sound, just for kicks).
    // The server, which generates the error, knows all about the error itself
    // and the webapp will poll details from the server, not from this app.
}
web应用程序将每隔一段时间查询服务器;我们有两个并行工作流:

  • (1) AJAX检查刷卡
  • (2) CLI侦听刷卡
  • (1) 服务器响应“还没有”
  • (2) CLI应用程序发送刷卡
  • (1) AJAX检查刷卡
  • (1) 服务器响应“还没有”
  • (2) 服务器验证刷卡
  • (1) AJAX检查刷卡
  • (1) 服务器响应“我知道了”
  • (2) 回到倾听
  • (1) 客户端显示表单并开始处理

这当然是可能的,但从您提供的信息中,我们只能告诉您这些