ผมมีปัญหาในการ Get computer name ,IP name ในการเก็บ log file ผ่าน VPN ครับ
ตอนนี้ผมทำการเขียน PHP ในการเก็บ Log คนที่เข้ามาใช้งานว่าเข้าไปใช้เว็บอินทราเน็ตตามนโยบายของผู้บริหารครับ
ซึ่งถ้า user Login เครือข่ายของบริษัท ผมจะสามารถ Get ค่า IP ,Macaddr,Computer name ได้หมดเลย
แต่ถ้า Remoteเข้ามาผ่าน VPN ผมจะไม่สามารถดึงชื่อเครื่องได้เลย ครับ ว่าเครื่องนี้เป็นของใคร ผมได้ทำรูปการอธิบายมาพอเข้าใจครับ
ถ้าผมDesign ผิดหลักประการใด ขออภัยด้วยนะครับ
คำถามนะครับ
ทำไม user VPN เข้ามาผมดึงค่าที่ผมกล่าวมาข้างต้นไม่ได้ แต่กลับได้ IP ของ SERVER VPN แทน ชื่อเครื่อง VPN แทน
Code ที่ผมใช้ครับ
Code (PHP)
$browser="";
function chkBrowser($nameBroser){
return preg_match("/".$nameBroser."/",$_SERVER['HTTP_USER_AGENT']);
}
if(chkBrowser("MSIE")==1){
$browser="IE 9";
if(chkBrowser("MSIE 8")==1){
$browser="IE 8";
}elseif(chkBrowser("MSIE 7")==1){
$browser="IE 7";
}elseif(chkBrowser("MSIE 10")==1){
$browser="IE 10";
}elseif(chkBrowser("MSIE 6")==1){
$browser="IE 6";
}else{
$browser="OTHER IE more than Version 9";
}
}elseif(chkBrowser("Firefox")==1){
$browser="Firefox";
}elseif(chkBrowser("Chrome")==1){
$browser="Chrome";
}elseif(chkBrowser("Chrome")==0 && chkBrowser("Safari")==1){
$browser="Safari";
}elseif(chkBrowser("Opera")==1){
$browser="Opera";
}elseif(chkBrowser("Netscape")==1){
$browser="Netscape";
}else{
$browser="OTHER IE more than Version 9";
}
$Com_name=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$ip=GetHostByName($_SERVER['REMOTE_ADDR']);
$insert="INSERT INTO dbo.log_access
(
grp,
Name,
url,
user_name,
ip_addr,
Browser,
date_time,
cnt
)
VALUES
(
'".$_REQUEST['group']."',
'".$_REQUEST['name']."',
'".$_REQUEST['URL']."',
'".$Com_name."',
'".$ip."',
'".$browser."',
'".date('Y-m-d H:i:s')."',
'1'
)
";
$in_sert=sqlsrv_query($conn,$insert);
if($in_sert)
{
$URL=$_REQUEST['URL'];
header("location:$URL" );
exit(0);
}
รบกวนพี่ๆช่วยเหลือผมทีครับ ตอนนี้ค้นหาใน google มาสี่วันแล้ว ไม่รู้จะแก้ยังไงครับ ขอบคุณล่วงหน้าครับ
___/\____
Tag : PHP, Ms SQL Server 2005, HTML/CSS, Windows, Web Service
ประวัติการแก้ไข 2014-08-27 21:06:18
Date :
2014-08-27 21:05:20
By :
ศราวุธ007
View :
6516
Reply :
4
print_r($_SERVER); ดูว่ามีค่าอะไรบ้างครับ
การรับ ip มันไม่ได้มีแค่ remote_addr ตัวเดียว
เพื่อความรวดเร็ว ลองดูคำตอบต่างๆจากเว็บนี้ครับ
http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
Code (PHP)
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
แต่ก็ไม่แน่ใจนะว่าสุดท้ายจะได้ผลหรือเปล่า เพราะบางทีเขาก็ไม่ส่งค่า x_forwarded_for หรือ client_ip มาให้
Date :
2014-08-28 01:57:43
By :
mr.v
ไม่ได้ครับวิธีนี้ผมลองดูแล้ว มันยังได้เป็น IP ของ VPN SERVER เหมือนเดิมครับ รึว่าจะให้เขา ส่งค่า x_forwarded_for มาให้ด้วยได้ไหมครับ วิธีการนี้มันพอที่จะเป็นไปได้ไหมครับ ขอบคุณครับ
Date :
2014-08-28 09:31:35
By :
ศราวุธ007
Load balance : Server 05