2017-08-19 72 views
0

如何通過PHP或JavaScript獲取當前記錄的系統用戶名。通過PHP或Javascript獲取系統用戶名

我們有一個內置的功能,在Java中,如:

String userName = System.getProperty("user.name"); 

但在任何我需要的技術,我找不到類似的命令。我正在使用以下技術/庫爲Web應用程序的HTML,CSS,Bootstrap,Ajax的,JQuery的,數據表,PHP的,MS SQL的。

有沒有辦法通過任何提到的技術來查找系統用戶名。

+0

我可以通過「當前登錄的系統用戶名」來假設您是指Apache運行的用戶嗎? – ryantxr

+0

@ryantxr沒有當前系統用戶這樣的人登錄到系統,如管理員ID。 –

+0

你爲什麼想知道?如果沒有人登錄,或者有幾個人呢? –

回答

0

以下將爲您提供正在運行PHP進程的用戶。例如,如果您正在運行Apache,它將爲您提供擁有Apache進程的用戶。如果您從命令行運行,那麼您將獲得登錄的用戶名。

如果你運行這個通過Apache(或任何Web服務器)和Web服務器正在運行的用戶_www您的計算機上,你登錄爲用戶比比,那麼這些將返回_www,不zippy

在Linux或MacOS的:

$processUser = exec('whoami'); 

或者:

$userInfo = posix_getpwuid(posix_geteuid()); 
$processUser = $userInfo['name']; 

你也可以試試,看看它是否可以通過環境。

$user = $_ENV['USERNAME'] ?? '-unknown'; 

我用下面的Java作爲一個例子:

public class Main { 
    public static void main(String[] args) { 
     String username = System.getProperty("user.name"); 
     System.out.println("username = " + username); 
    } 
} 

然後我用下面的PHP:

<?php 
echo `whoami`; 
echo "\n"; 

然後我在命令行上運行,並得到完全相同的輸出。

在MacOS和Linux上,這會給你當前登錄的所有用戶的列表:

<?php 
$users = exec('/usr/bin/users', $output); 
print_r($output); 

根據this Oracle Java doc System.getProperty(「user.name」)爲您提供了「用戶帳戶名」。我假設在一個Web服務器環境中,這會給你一個運行Java或Web服務器進程的用戶的名字。

我不完全確定這些工作在Windows上,如果這就是你正在使用的。

+0

感謝您的迴應,但您的回聲的結果是不同的,然後字符串userName = System.getProperty(「user.name」);還有其他方法嗎? –

+1

如果您以您登錄的用戶身份運行一些其他代碼,您很可能會得到不同的答案。如果我通過CLI運行PHP,我會得到'nigel',如果我從Web瀏覽器運行它 - 我將得到'www-data'。 –

0
<?php echo get_current_user(); ?> 
<?php echo getenv("username"); ?> 

查看phpinfo()瞭解更多信息。適用於Linux和Windows。

+0

感謝您的迴應,但您的回聲的結果是不同的,然後字符串userName = System.getProperty(「user.name」); –

+0

您在Java和PHP中獲得的這些值是什麼? – rndus2r