[javascript] mac address ophalen
Ik moet voor mijn vakantiejob een systeempje in elkaar steken waar ik het mac address moet ophalen. Door op een knop te drukken dat die dan in een database wordt gestoken. Die knop en zo kan ik wel doen. Maar ik weet niet hoe ik het mac address moet ophalen. Ik denk in de richting van javascript..?
Wie kan mij helpen? Alvast bedankt!
groeten Kasper
google zegt php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function returnMacAddress() {
// This code is under the GNU Public Licence
// Written by michael_stankiewicz {don't spam} at yahoo {no spam} dot com
// Tested only on linux, please report bugs
// WARNING: the commands 'which' and 'arp' should be executable
// by the apache user; on most linux boxes the default configuration
// should work fine
// Get the arp executable path
$location = `which arp`;
// Execute the arp command and store the output in $arpTable
$arpTable = `$location`;
// Split the output so every line is an entry of the $arpSplitted array
$arpSplitted = split("\n",$arpTable);
// Get the remote ip address (the ip address of the client, the browser)
$remoteIp = $GLOBALS['REMOTE_ADDR'];
// Cicle the array to find the match with the remote ip address
foreach ($arpSplitted as $value) {
// Split every arp line, this is done in case the format of the arp
// command output is a bit different than expected
$valueSplitted = split(" ",$value);
foreach ($valueSplitted as $spLine) {
if (preg_match("/$remoteIp/",$spLine)) {
$ipFound = true;
}
// The ip address has been found, now rescan all the string
// to get the mac address
if ($ipFound) {
// Rescan all the string, in case the mac address, in the string
// returned by arp, comes before the ip address
// (you know, Murphy's laws)
reset($valueSplitted);
foreach ($valueSplitted as $spLine) {
if (preg_match("/[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f]/i",$spLine)) {
return $spLine;
}
}
}
$ipFound = false;
}
}
return false;
}
// This code is under the GNU Public Licence
// Written by michael_stankiewicz {don't spam} at yahoo {no spam} dot com
// Tested only on linux, please report bugs
// WARNING: the commands 'which' and 'arp' should be executable
// by the apache user; on most linux boxes the default configuration
// should work fine
// Get the arp executable path
$location = `which arp`;
// Execute the arp command and store the output in $arpTable
$arpTable = `$location`;
// Split the output so every line is an entry of the $arpSplitted array
$arpSplitted = split("\n",$arpTable);
// Get the remote ip address (the ip address of the client, the browser)
$remoteIp = $GLOBALS['REMOTE_ADDR'];
// Cicle the array to find the match with the remote ip address
foreach ($arpSplitted as $value) {
// Split every arp line, this is done in case the format of the arp
// command output is a bit different than expected
$valueSplitted = split(" ",$value);
foreach ($valueSplitted as $spLine) {
if (preg_match("/$remoteIp/",$spLine)) {
$ipFound = true;
}
// The ip address has been found, now rescan all the string
// to get the mac address
if ($ipFound) {
// Rescan all the string, in case the mac address, in the string
// returned by arp, comes before the ip address
// (you know, Murphy's laws)
reset($valueSplitted);
foreach ($valueSplitted as $spLine) {
if (preg_match("/[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f][:-]".
"[0-9a-f][0-9a-f]/i",$spLine)) {
return $spLine;
}
}
}
$ipFound = false;
}
}
return false;
}
bron: devarticles
zijn er andere scripts?
niet gwn copy paste??
ik zet op de submit-knop een onclick met de functie..
wat ik gegeven heb is een PHP functie...
die roep je op met
Matthias schreef op 25.08.2009 20:53:
en er zitten nog gaten in heb ik gezien ook (;
hoe bedoelde??
$GLOBALS -> $_SERVER
Notice: Undefined variable: ipFound in E:\UsbWebserver\Root\inventaris\index.php on line 35
de variabele is niet vroeger vermeld geweest..
zetten als false?
moet worden:
$remoteIp = $_SERVER['REMOTE_ADDR'];
denk ik
dit had ik al maar wat met die variabele die hij nog niet vroeger had ingesteld..?
Load het script up naar een server op het internet.
en probeer het daar nog eens,
nu werk je waarschijnlijk op wamp
en ziet hij je IP niet als een echt IP
dus $IPfound niet ingesteld doordat de preg_match false weergeeft.
indien dit niet werkt
verander
naar
probeer eerste de eerste methode...
en als dit niet werkt probeer dan het 2e voorbeeld
als dit niet werkt
upload het 2e voorbeeld naar een server die verbonden is met internet..
als het dan nog niet werkt,
geef maar een jel,
maar ik vermoed dat voorbeeld 1 of 2 wel voldoende zal zijn
Gewijzigd op 01/01/1970 01:00:00 door Matthias R
Staat de server in hetzelfde netwerk als de computer waarvan je het mac adres wilt weten? Zo nee, dan gaat het je niet server-side lukken omdat het mac-adres naar mijn weten niet verder komt dan de eerste router die hij tegenkomt.
Client-side kan het denk ik alleen via ActiveX in Internet Explorer, en missschien via XPCom in Firefox (maar hoe je daar vanuit een normale webpagina toegang tot krijgt... ik denk niet dat dat zonder de browser zelf aan te passen of te voorzien van een plugin wil)
Waar heb je het mac-adres voor nodig? Misschien is er een ander alternatief.
Het mac-adres zal toch wel verzonden worden naar de webbrowser,
net zoals het IP verzonden word zou ik denken..
of het moet uit het IP te halen zijn,
Maar ik heb al een voorbeeld gezien waar dit gedaan word dus het moet mogelijk zijn..
@Matthias: ik ben erg benieuwd naar je voorbeeld. Voor zover ik het nut van een router begrijp wordt je hele thuisnetwerk dankzij de router voor internet gezien als één toegangspunt. De router zorgt ervoor dat antwoorden op uitgaande requests weer bij de juiste computer in het netwerk terecht komen, en ook dat requests van buiten bij de goeie computer aankomen (waar NAPT weer voor is) Als het mac-adres meegestuurd zou worden, waarom zouden programma's als bittorrent en webservers dan nog poorten geforward willen hebben?
ook hangt het ipadres niet vast aan het macadres, een ip krijg je van je ISP, een macadres is het fysiek adres van je netwerkkaart.
EDIT: ik zie al wss waar het probleem kan zitten, ben niet zeker, maar ik test op WAMP server, geen linux dus, dus die which arp werkt niet.
Gewijzigd op 17/07/2010 12:00:22 door Lex Nonavailable
http://www.qualitycodes.com/tutorial.php?articleid=19&title=MAC-Address-Using-WMI-on-Internet-Explorer
En in linux kan je dus een de exec command uitvoeren en dan pingen naar het adres BV:
ping 127.0.0.1 && arp -a
Gewijzigd op 17/07/2010 12:13:25 door Niels K
Waarvoor moet je het MAC adres weten?
Het uitvoeren van het arp command geeft de MAC adressen op de (apache)server:
Address HWtype HWaddress Flags Mask Iface
medusa ether 00:0A:5E:52:F3:FB C eth0
local.gateway ether 00:01:71:0F:95:F8 C eth0
192.168.1.250 ether 00:11:41:02:61:37 C eth0
en niet het MAC adres op web-browsende-client. Het voorbeeld aan het begin van deze topic zal dus steeds hetzelfde MAC address opleveren....
Gewijzigd op 17/07/2010 20:58:14 door Aad B
Je zou met iptables elke request op HTTP kunnen loggen, en m.b.v. REMOTE_PORT en REMOTE_ADDR het MAC adres eraan koppelen, maar daarbij creeër je heel veel overhead.