Forum Moderators: coopster

Message Too Old, No Replies

PHP - get Windows NT-name

         

tention

5:06 am on May 31, 2009 (gmt 0)

10+ Year Member



Hi@all,

i have not found a simple answer about that anywhere in the net:

How can my server (Win/Apache/PHP or Linux/Apache/PHP) detect the user (nt-username) that is accessing via http-protocol (web-frontend for example)?

I have already tried javascript, but i am not member of trusted sites in our company, so the object isn`t executed.

Thanks in advance...

Best regards... tention

daveginorge

11:45 am on Jun 3, 2009 (gmt 0)

10+ Year Member



I googled for "detecting the OS in php" and this was one of the top hits. Geekpedia.com

$OSList = array
(
// Match user agent string with operating systems
'Windows 3.11' => 'Win16',
'Windows 95' => '(Windows 95)¦(Win95)¦(Windows_95)',
'Windows 98' => '(Windows 98)¦(Win98)',
'Windows 2000' => '(Windows NT 5.0)¦(Windows 2000)',
'Windows XP' => '(Windows NT 5.1)¦(Windows XP)',
'Windows Server 2003' => '(Windows NT 5.2)',
'Windows Vista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 7.0)',
'Windows NT 4.0' => '(Windows NT 4.0)¦(WinNT4.0)¦(WinNT)¦(Windows NT)',
'Windows ME' => 'Windows ME',
'Open BSD' => 'OpenBSD',
'Sun OS' => 'SunOS',
'Linux' => '(Linux)¦(X11)',
'Mac OS' => '(Mac_PowerPC)¦(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS/2' => 'OS/2',
'Search Bot'=>'(nuhk)¦(Googlebot)¦(Yammybot)¦(Openbot)¦(Slurp)¦(MSNBot)¦(Ask Jeeves/Teoma)¦(ia_archiver)'
);

// Loop through the array of user agents and matching operating systems

foreach($OSList as $CurrOS=>$Match) {
// Find a match
if (eregi($Match, $_SERVER['HTTP_USER_AGENT'])) {
// We found the correct match
break;
}
}
// You are using Windows Vista
echo "You are using ".$CurrOS;

dive into perl

12:48 pm on Jun 3, 2009 (gmt 0)

10+ Year Member



tention,

I was able to detect the NT username by looking at the $_SERVER['Auth_User'] global in PHP.

However, I had to set-up the IIS server to achieve this.

The php application had to detect the NT username, from 1,000's of users on a large intranet. I set-up the PHP in a virtual directory under IIS, and then changed the Authentication methods on this directory from anonymous (the default) to Basic authentication and entered the NT domain name in the box provided.

Now every user that visits that virtual directory exposes their NT username in the $_SERVER['Auth_User'] global in PHP.

Hope this helps

tention

1:23 pm on Jun 3, 2009 (gmt 0)

10+ Year Member



@dive into perl

Thank you for your help.

That doesn't work using Apache (Win/Linux).

Any other ideas?

Thanks in advance.

dive into perl

2:00 pm on Jun 3, 2009 (gmt 0)

10+ Year Member




You could try the mod_ntlm module for apache which allows you to authenticate against a NT domain controller and get the NT username into the server globals

tention

2:28 pm on Jun 3, 2009 (gmt 0)

10+ Year Member



I will try the mod_ntlm, hope it works this way.

Thank you.