मुझे कनेक्ट क्लाइंट के मैक और आईपी पते को जानने की आवश्यकता है, मैं पीएचपी में यह कैसे कर सकता हूं?
मुझे कनेक्ट क्लाइंट के मैक और आईपी पते को जानने की आवश्यकता है, मैं पीएचपी में यह कैसे कर सकता हूं?
जवाबों:
आप सर्वर आईपी पते से प्राप्त कर सकते हैं $_SERVER['SERVER_ADDR']
।
मैक पते के लिए, आप netstat -ie
लिनक्स में या ipconfig /all
विंडोज में आउटपुट पार्स कर सकते हैं ।
आप क्लाइंट आईपी से प्राप्त कर सकते हैं $_SERVER['REMOTE_ADDR']
क्लाइंट मैक पता आपको एक विशेष परिस्थिति में छोड़कर उपलब्ध नहीं होगा: यदि क्लाइंट सर्वर के समान ईथरनेट सेगमेंट पर है।
इसलिए, यदि आप किसी प्रकार का LAN आधारित सिस्टम बना रहे हैं और आपके क्लाइंट एक ही ईथरनेट सेगमेंट पर हैं, तो आप arp -n
(linux) या arp -a
(विंडोज़) के आउटपुट को पार्स करके MAC एड्रेस प्राप्त कर सकते हैं ।
संपादित करें : आप टिप्पणियों में पूछते हैं कि बाहरी कमांड का आउटपुट कैसे प्राप्त किया जाए - एक तरीका है बैकटिक्स का उपयोग करना, जैसे
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
खैर, आप भाग्य से बाहर हैं जब तक कि आपके पास ग्राहक स्वयंसेवक नहीं हो सकता है जो जानकारी और अन्य माध्यमों से प्रसारित कर सकता है।
क्लाइंट (सर्वर जो HTTP रिक्वेस्ट जारी करता है) के मैक एड्रेस को क्लाइंट और सर्वर के बीच हर राउटर द्वारा ओवरराइट किया जाता है।
क्लाइंट आईपी को स्क्रिप्ट में आसानी से प्रदान किया जाता है $_SERVER['REMOTE_ADDR']
। कुछ स्थितियों में, विशेष रूप से अगर अपने वेब सर्वर एक प्रॉक्सी (यानी एक कैशिंग प्रॉक्सी) के पीछे है $_SERVER['REMOTE ADDR']
के आईपी वापस आ जाएगी प्रॉक्सी , और एक अतिरिक्त मूल्य, अक्सर नहीं होगा $_SERVER['HTTP_X_FORWARDED_FOR']
, कि मूल अनुरोध क्लाइंट का IP शामिल हैं।
कभी-कभी, विशेष रूप से जब आप एक अनाम प्रॉक्सी के साथ काम कर रहे होते हैं जिसे आप नियंत्रित नहीं करते हैं, तो प्रॉक्सी असली आईपी पते को वापस नहीं करेगा, और आप सभी के लिए उम्मीद कर सकते हैं कि यह प्रॉक्सी का आईपी पता है।
मुझे नहीं लगता कि आप PHP में मैक एड्रेस प्राप्त कर सकते हैं, लेकिन आप $_SERVER['REMOTE_ADDR']
वेरिएबल से आईपी प्राप्त कर सकते हैं ।
विंडोज़ सर्वर के लिए मुझे लगता है कि आप इसका उपयोग कर सकते हैं:
<?php
echo exec('getmac');
?>
exec
केवल `प्रतिध्वनिgetmac
तुम सब करने की ज़रूरत है अलग समूह में arp डाल दिया है।
चूक:
-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*
कमांड के साथ:
sudo chown root:www-data /usr/sbin/arp
तुम्हे मिल जाएगा:
-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*
और क्योंकि अपाचे उपयोगकर्ता www-data के तहत चलने वाला एक डेमॉन है, अब यह इस कमांड को निष्पादित करने में सक्षम है।
तो अगर आप अब PHP स्क्रिप्ट का उपयोग करते हैं, जैसे:
<?php
$mac = system('arp -an');
echo $mac;
?>
आपको linux arp -an
कमांड का आउटपुट मिलेगा ।
arp
बाइनरी के समूह को बदलना बेमानी है, फिर www-data
भी other
umode से अनुमतियों को निष्पादित करता है।
इस वर्ग का उपयोग करें (https://github.com/BlakeGardner/php-mac-address)
यह यूनिक्स, लिनक्स और मैक ओएस एक्स ऑपरेटिंग सिस्टम के शीर्ष पर मैक एड्रेस हेरफेर के लिए एक PHP वर्ग है। यह मुख्य रूप से वायरलेस सुरक्षा ऑडिट के लिए स्पूफिंग में मदद करने के लिए लिखा गया था।
विंडोज़ में, यदि उपयोगकर्ता आपकी स्क्रिप्ट का स्थानीय रूप से उपयोग कर रहा है, तो यह बहुत सरल होगा:
<?php
// get all the informations about the client's network
$ipconfig = shell_exec ("ipconfig/all"));
// display those informations
echo $ipconfig;
/*
look for the value of "physical adress" and use substr() function to
retrieve the adress from this long string.
here in my case i'm using a french cmd.
you can change the numbers according adress mac position in the string.
*/
echo substr(shell_exec ("ipconfig/all"),1821,18);
?>
आप अपनी समस्या को हल करने के लिए निम्नलिखित समाधान का उपयोग कर सकते हैं:
$mac='UNKNOWN';
foreach(explode("\n",str_replace(' ','',trim(`getmac`,"\n"))) as $i)
if(strpos($i,'Tcpip')>-1){$mac=substr($i,0,17);break;}
echo $mac;
मैक का उपयोग करके मैक एड्रेस प्राप्त करना: (Ubuntu 18.04 में परीक्षण किया गया) - 2020 अपडेट
यहाँ कोड है:
<?php
$mac = shell_exec("ip link | awk '{print $2}'");
preg_match_all('/([a-z0-9]+):\s+((?:[0-9a-f]{2}:){5}[0-9a-f]{2})/i', $mac, $matches);
$output = array_combine($matches[1], $matches[2]);
$mac_address_values = json_encode($output, JSON_PRETTY_PRINT);
echo $mac_address_values
?>
आउटपुट:
{
"lo": "00:00:00:00:00:00",
"enp0s25": "00:21:cc:d4:2a:23",
"wlp3s0": "84:3a:4b:03:3c:3a",
"wwp0s20u4": "7a:e3:2a:de:66:09"
}
शायद इंटरनेट पर क्लाइंट की मशीन को सत्यापित करने के लिए मैक एड्रेस प्राप्त करना सबसे अच्छा तरीका नहीं है। इसके बजाय टोकन का उपयोग करने पर विचार करें जो क्लाइंट के ब्राउज़र में एक व्यवस्थापक लॉगिन द्वारा संग्रहीत है।
इसलिए क्लाइंट के पास केवल यह टोकन हो सकता है यदि व्यवस्थापक इसे अपने ब्राउज़र के माध्यम से देता है। यदि टोकन मौजूद या मान्य नहीं है, तो क्लाइंट की मशीन अमान्य है।
आप इस कोड का उपयोग करके मैक एड्रेस या भौतिक पता प्राप्त कर सकते हैं
$d = explode('Physical Address. . . . . . . . .',shell_exec ("ipconfig/all"));
$d1 = explode(':',$d[1]);
$d2 = explode(' ',$d1[1]);
return $d2[1];
मैंने कई बार विस्फोट किया क्योंकि शेल_एक्स्ट ("ipconfig / all") सभी नेटवर्क का पूरा विवरण देता है। इसलिए आपको एक-एक करके अलग होना होगा। जब आप इस कोड को चलाते हैं तो आपको
अपना MAC पता 00 - ## - ## - CV-12 // मिलेगा यह केवल शो के लिए नकली पता है।
// Turn on output buffering
ob_start();
//Get the ipconfig details using system commond
system('ipconfig /all');
// Capture the output into a variable
$mycomsys=ob_get_contents();
// Clean (erase) the output buffer
ob_clean();
$find_mac = "Physical";
//find the "Physical" & Find the position of Physical text
$pmac = strpos($mycomsys, $find_mac);
// Get Physical Address
$macaddress=substr($mycomsys,($pmac+36),17);
//Display Mac Address
echo $macaddress;
यह विंडोज पर मेरे लिए काम करता है, जैसा ipconfig /all
कि विंडोज सिस्टम कमांड है।
आप इसे आसानी से ओपन डब्ल्यूआरटी का उपयोग करके कर सकते हैं। यदि आप एक कैप्टिव पोर्टल का उपयोग करते हैं, तो आप php और openWRT को मिला सकते हैं और आईपी और मैक के बीच संबंध बना सकते हैं।
आप एक सरल PHP कोड का उपयोग कर लिख सकते हैं:
$localIP = getHostByName(getHostName());
बाद में, OpenWRT का उपयोग करके आप जा सकते हैं /tmp/dhcp.leases
, आपको फॉर्म के साथ कुछ मिलेगा:
e4:a7:a0:29:xx:xx 10.239.3.XXX DESKTOP-XXX
वहां, आपके पास मैक, आईपी एड्रेस और होस्टनाम है।