2016-04-17 23 views
1
得到DOS變量%USERNAME%

我爲了我的PHP代碼趕上DOS環境%USERNAME%很多測試,我的操作系統是Windows 7我如何在PHP

這將使我php程序知道當前登錄到網絡的用戶名。
這裏的一些測試運行在環境WampXampp
任何幫助,將不勝感激。

<?php 
    session_start(); 
    //1°test, not ok 
    //echo "user=". $username; 

    //2° test, not ok 
    //echo 'My username is ' .$_ENV["USER"] . '!'; 

    //3°test in this case I get back "user-pc$" . It's not correct , the right username - logged in in Windows 7 operating system - is "user". 
    //infact I got "user" value running from command line "cmd" the "set username" command. 
    $user_name = getenv('USERNAME'); 
    echo "username=".$user_name."<br>"; 

    // running phpinfo I see as USERNAME "user-pc$" but unfortunately this is not the right value 
    phpinfo(); 
+1

這裏的基本問題是,類似這樣的結果將基於Apache登錄的帳戶,並且對於wampserver或xampp將是'nt權限\系統'而不是'Valgo' – RiggsFolly

+0

我的答案是否奏效? – Sharky

回答

0

我沒有一個PHP/Windows系統上這裏來檢查這一點,但它應該工作:

$user_name = exec('echo %USERNAME%'); 

如果不產生像RiggsFolly原因,預計產量評論說:

基本這裏的問題是,這樣的事,結果將基於Apache正在登錄的帳戶,併爲wampserver或XAMPP這將是nt authority\system而不是Valgo

那麼你可能想嘗試讓query user命令的輸出,解析數據,也許做一些過濾和/或決定基礎上,STATE值什麼是你想要的用戶。不要忘記,可能有許多用戶登錄,處於「活動」狀態。

$data_to_parse = exec('query user'); 
+0

不幸的是沒有。 $ user_name是%MyPc $%,其中Mypc是PC的名稱。 – Valgo54

+0

@ Valgo54這很奇怪。如果你在你的Windows系統中打開一個命令行並執行'echo%USERNAME%',它會產生輸出嗎?哦等一下,我只是注意到RiggsFolly在你的問題上的評論。那就是問題所在。 – Sharky

+0

@ Valgo54檢查我的答案是否有更新 – Sharky

0

您好,感謝您的建議。 運行$ data_to_parse = exec('query user');在家裏我得到以下輸出 「valgo console 1 Active nobody 24/04/2016 15:52」 其中valgo是當前連接的用戶的名稱。大!我會在網絡中嘗試,我會讓你知道。

0

我測試過: $ data_to_parse = exec('query user'); 我回來了 gorlav rdp-tcp#0 1 Attivo。 26/04/2016 14:22 其中「gorlav」是連接的帳戶的名稱。 太好了。非常感謝

+0

你好,在這種情況下,你可能想標記我的答案爲「接受」。如果你想回復,你可以使用評論。不要發佈「答案」作爲答覆。 – Sharky