PHP skripta za korištenje MAC Address Lookup API-a (XML verzija resursa).

U nastavku je mala PHP skripta za korištenje API-a koji omogućuje traženje proizvođača vezanog za pojedinu MAC adresu. Besplatan API koji koristim dostupan je na adresi: http://www.macvendorlookup.com/api. Prije početka rada morate se registrirati na toj stranici kako biste dobili svoj API key. U kodu sam izostavio moj API key, pa morate unijeti svoj kako bi kod radio (linija označena žuto u kodu).
Prilikom registracije možete odabrati oblik u kojem će se resurs vraćati. Ja sam prilikom registracije odabrao XML verziju, a dostupne su još i CSV, JSON i PIPE (|).

NAPOMENA: u skriptu nisu ugrađeni nikakvi zaštitni mehanizmi te očekuje ispravno unošenje tražene MAC adrese. Koristite ju na vlastitu odgovornost. Ja ju trenutno koristim na lokalnom stroju, za potrebe izrade svog diplomskog rada, gdje dohvaćam informacije o proizvođaču vezanog za MAC adresu i spremam ga u bazu (dio sa bazom nije u skripti).

Licenca:
Creative Commons licenca

<?php

function nadiProizvodaca ($mac) {
//Koristim besplatan servis na http://www.macvendorlookup.com/api
//Moj API key;
$apiKey = "UNESI SVOJ API KEY OVDJE";
$url = "http://www.macvendorlookup.com/api/" . $apiKey . "/" . $mac;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);

//Ako string sadrži riječ Error, dogodila se nekakva greška.
if (strstr($response,"Error")) {
die($response);
}
//Vrati resurs (u mom slučaju je bio XML).
if($response) {
return $response;
} else {
die("Nisam uspio dobit odgovor od API-a. Probaj kasnije.");
}
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Dohvat proizvođača po MAC adresi</title>
</head>
<body>
<h1>Dohvat proizvođača po MAC adresi</h1>
<form name="dohvatiProizvodaca" method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
<fieldset>
<legend>Dohvat info o pojedinačnoj MAC adresi</legend>
Mac adresa: <input type="text" name="macAdresa">
</fieldset>

<input type="submit" name="pocni" value="Počni">
</form>

<?php
//Ako je forma poslana, počni sa traženjem proizvođača.
if (isset($_POST["pocni"])) {
//Ako pojedinačna MAC nije prazana, nađi proizvođača za nju.
if (!empty($_POST["macAdresa"])) {

//Pozovi funkciju za traženje koja će vratiti XML string.
$xml = nadiProizvodaca ($_POST["macAdresa"]);
//Ako ne nađe proizvođača, vraća "none".
if ($xml != "none") {
//Napravi objekt iz XML-a.
//Priguši WARNNING-se, die u slučaju greške sa stvaranjem objekta iz XML-a.
if (($infoTvrtka = @simplexml_load_string($xml)) === FALSE) {
die ("Greška: nisam mogao napravit objekt iz XML-a");
}

//Pokupi informacije iz objekta.
echo "<br>" . $oui = (string)$infoTvrtka->result->oui;
echo "<br>" . $tvrtka = (string)$infoTvrtka->result->company;
echo "<br>" . $odjel = (string)$infoTvrtka->result->department;
echo "<br>" . $adresa1 = (string)$infoTvrtka->result->address1;
echo "<br>" . $adresa2 = (string)$infoTvrtka->result->address2;
echo "<br>" . $drzava = (string)$infoTvrtka->result->country;
//Vrijeme unosa bit će isto za pojedinačno obrađivanje, promijeni po potrebi..
echo "<br>" . $vrijemeUnosa = date("Y-m-d H:i:s");

} else {
//Vratio je "none", nema proizvođača.
echo "Za " . $_POST["macAdresa"] . " nema definirane tvrtke.";
}

} //Pojedinačna MAC adresa kraj

} //Forma poslana kraj
?>
</body>
</html>

Leave a Reply

%d bloggers like this: