如何在PHP中获取DOS变量%USERNAME%

时间:2016-04-17 15:16:11

标签: php

我做了很多测试,以便在我的php代码中捕获dos环境%USERNAME%,我的操作系统是Windows 7。

这将允许我的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();

3 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

您好,感谢您的建议。 运行$ data_to_parse = exec('查询用户');在家里我得到以下输出 “valgo console 1 Active nobody 24/04/2016 15:52” 其中valgo是当前连接用户的名称。大!我会在网络内尝试,然后让你知道。

答案 2 :(得分:0)

我测试过: $ data_to_parse = exec(&#39;查询用户&#39;); 我回来了 gorlav rdp-tcp#0 1 Attivo。 2016/04/26 14:22 在哪里&#34; gorlav&#34;是连接帐户的名称。 大。非常感谢