আমার সংযোগ গ্রাহকদের ম্যাক এবং আইপি ঠিকানা জানতে হবে, আমি পিএইচপি এ কীভাবে এটি করতে পারি?
আমার সংযোগ গ্রাহকদের ম্যাক এবং আইপি ঠিকানা জানতে হবে, আমি পিএইচপি এ কীভাবে এটি করতে পারি?
উত্তর:
আপনি সার্ভারের আইপি ঠিকানাটি পেতে পারেন $_SERVER['SERVER_ADDR']
।
ম্যাক ঠিকানার জন্য netstat -ie
আপনি লিনাক্স বা ipconfig /all
উইন্ডোজে আউটপুট পার্স করতে পারেন ।
আপনি ক্লায়েন্ট আইপি পেতে পারেন $_SERVER['REMOTE_ADDR']
ক্লায়েন্ট ম্যাকের ঠিকানা আপনাকে একটি বিশেষ পরিস্থিতিতে বাদে পাওয়া যাবে না: যদি ক্লায়েন্টটি সার্ভারের মতো একই ইথারনেট বিভাগে থাকে।
সুতরাং, আপনি LAN এর ভিত্তিক সিস্টেমের কিছু নির্মাণ করা হয় এবং আপনার ক্লায়েন্ট যদি হয় একই ইথারনেট সেগমেন্ট উপর, তাহলে আপনি MAC ঠিকানা আউটপুট পার্স দ্বারা পেতে পারে arp -n
(লিনাক্সের) অথবা arp -a
(Windows)।
সম্পাদনা করুন : আপনি কীভাবে একটি বহিরাগত কমান্ডের আউটপুট পাবেন তা মন্তব্যে জিজ্ঞাসা করেছেন - একটি উপায় ব্যাকটিক্স ব্যবহার করা, যেমন
$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];
}
}
ঠিক আছে, আপনি যদি ক্লায়েন্টের স্বেচ্ছাসেবীর কাছে সেই তথ্য না পেয়ে এবং অন্য উপায়ে সঞ্চারিত করতে না পারেন তবে আপনার ভাগ্যের বাইরে নেই।
কোনও ক্লায়েন্টের ম্যাক ঠিকানা (কম্পিউটারটি এইচটিটিপি অনুরোধ জারি করে) ক্লায়েন্ট এবং সার্ভারের মধ্যে প্রতিটি রাউটার দ্বারা ওভাররাইট করা হয়।
ক্লায়েন্ট আইপি সুবিধামত স্ক্রিপ্টে সরবরাহ করা হয় $_SERVER['REMOTE_ADDR']
। কিছু কিছু পরিস্থিতিতে, বিশেষ করে যদি আপনার ওয়েব সার্ভারে একটি প্রক্সি (অর্থাত একটি ক্যাশে প্রক্সি) পেছনে $_SERVER['REMOTE ADDR']
আইপি ফিরে আসবে প্রক্সি , এবং একটি অতিরিক্ত মান, প্রায়ই সেখানে থাকবে $_SERVER['HTTP_X_FORWARDED_FOR']
, যে আসল অনুরোধটি ক্লায়েন্ট আইপি ধারণ করে।
কখনও কখনও, আপনি যখন নিয়ন্ত্রণ করেন না এমন কোনও অনামী প্রক্সি নিয়ে কাজ করছেন, বিশেষত প্রক্সিটি আসল আইপি ঠিকানাটি ফিরিয়ে দেয় না এবং আপনি যা আশা করতে পারেন তা প্রক্সিটির আইপি ঠিকানা।
আমি মনে করি না আপনি পিএইচপি তে ম্যাক ঠিকানা পেতে পারেন তবে আপনি $_SERVER['REMOTE_ADDR']
ভেরিয়েবল থেকে আইপি পেতে পারেন ।
উইন্ডোজ সার্ভারের জন্য আমি মনে করি আপনি এটি ব্যবহার করতে পারেন:
<?php
echo exec('getmac');
?>
exec
কেবল `প্রতিধ্বনি ব্যবহার করতে হবে নাgetmac
আপনাকে যা করতে হবে তা হ'ল ডিফারেন্ট গ্রুপে ফেলা।
ডিফল্ট:
-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-ডেটার অধীনে চলমান একটি ডেমন, এটি এখন এই আদেশটি কার্যকর করতে সক্ষম।
সুতরাং আপনি যদি এখন পিএইচপি স্ক্রিপ্ট ব্যবহার করেন, যেমন:
<?php
$mac = system('arp -an');
echo $mac;
?>
আপনি লিনাক্স arp -an
কমান্ডের আউটপুট পাবেন ।
arp
বাইনারি গ্রুপ পরিবর্তন করা নিরর্থক , www-data
এখনও other
ইউমোড থেকে অনুমতি কার্যকর করেছে ।
এই শ্রেণিটি ব্যবহার করুন (https://github.com/BlakeGardner/php-mac-adress)
এটি ইউনিক্স, লিনাক্স এবং ম্যাক ওএস এক্স অপারেটিং সিস্টেমের শীর্ষে ম্যাক ঠিকানা হেরফেরের জন্য একটি পিএইচপি ক্লাস। এটি মূলত ওয়্যারলেস সুরক্ষা অডিটগুলির জন্য স্পোফিংয়ের সাহায্যে লেখা হয়েছিল।
উইন্ডোজগুলিতে, ব্যবহারকারী যদি স্থানীয়ভাবে আপনার স্ক্রিপ্টটি ব্যবহার করে থাকে তবে এটি খুব সহজ হবে:
<?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;
পিএইচপি ব্যবহার করে ম্যাক ঠিকানা পাওয়া: (উবুন্টু 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];
আমি অনেক সময় বিস্ফোরণ ব্যবহার করেছি কারণ শেল_এক্সেক ("আইপকনফিগ / সমস্ত") সমস্ত নেটওয়ার্কের সম্পূর্ণ বিবরণ দেয়। সুতরাং আপনাকে একে একে বিভক্ত করতে হবে। আপনি যখন এই কোডটি চালাবেন তখন আপনি
আপনার ম্যাক ঠিকানা 00 - ## - ## - সিভি -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
যেমন উইন্ডোজ সিস্টেম কমান্ড হিসাবে কাজ করে।
আপনি ওপেনডব্লিউআরটি ব্যবহার করে এটি সহজেই করতে পারেন। আপনি যদি ক্যাপটিভ পোর্টাল ব্যবহার করেন তবে আপনি পিএইচপি এবং ওপেনডাব্লুআরটি মিশ্রিত করতে পারেন এবং আইপি এবং ম্যাকের মধ্যে একটি সম্পর্ক তৈরি করতে পারেন।
আপনি ব্যবহার করে একটি সাধারণ পিএইচপি কোড লিখতে পারেন:
$localIP = getHostByName(getHostName());
পরে, ওপেনডব্লিউআরটি ব্যবহার করে আপনি যেতে পারেন /tmp/dhcp.leases
, আপনি ফর্মটি দিয়ে কিছু পাবেন:
e4:a7:a0:29:xx:xx 10.239.3.XXX DESKTOP-XXX
সেখানে আপনার কাছে ম্যাক, আইপি ঠিকানা এবং হোস্ট-নেম রয়েছে।