PHP ActiveX
PHP ActiveX
PC/SC Get Card UID
See more SCard Examples
Sends the APDU command to get a card's UID.Chilkat PHP ActiveX Downloads
<?php
$success = 0;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
$scard = new COM("Chilkat.SCard");
// First establish a context to the PC/SC Resource Manager
$success = $scard->EstablishContext('user');
if ($success == 0) {
print $scard->LastErrorText . "\n";
exit;
}
// Use your own smart card reader name here.
$success = $scard->Connect('ACS ACR122 0','shared','no_preference');
if ($success == 0) {
print $scard->LastErrorText . "\n";
exit;
}
print 'Connected reader: ' . $scard->ConnectedReader . "\n";
print 'Active protocol: ' . $scard->ActiveProtocol . "\n";
print 'ATR: ' . $scard->CardAtr . "\n";
print 'Reader Status: ' . $scard->ReaderStatus . "\n";
// Send the APDU command 0xFF, 0xCA, 0x00, 0x00, 0x00
$bdRecv = new COM("Chilkat.BinData");
$success = $scard->TransmitHex($scard->ActiveProtocol,'FFCA000000',$bdRecv,32);
if ($success == 1) {
print 'Received: ' . $bdRecv->getEncoded('hex') . "\n";
// The UID is the returned data without the final 2 bytes.
$numBytes = $bdRecv->NumBytes;
if ($numBytes > 2) {
print 'UID: ' . $bdRecv->getEncodedChunk(0,$numBytes - 2,'hex') . "\n";
}
}
else {
print $scard->LastErrorText . "\n";
}
// Disconnect from this reader.
$success = $scard->Disconnect('leave');
if ($success == 0) {
print $scard->LastErrorText . "\n";
}
// Applications should always release the context when finished.
$success = $scard->ReleaseContext();
if ($success == 0) {
print $scard->LastErrorText . "\n";
}
?>