Получить имя пользователя системы через PHP или Javascript

Как я могу получить текущее зарегистрированное системное имя пользователя через PHP или JavaScript.

У нас есть встроенная функция в Java, такая как:

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

но я не смог найти подобную команду ни в одной из нужных мне технологий.

Мне это нужно для веб-приложения, я использую следующие технологии/библиотеки для веб-приложения HTML, CSS, Bootstrap, Ajax, Jquery, Datatables, PHP, MS SQL.

Есть ли способ найти имя пользователя системы с помощью любой из упомянутых технологий.


person Community    schedule 19.08.2017    source источник
comment
Могу ли я предположить, что под текущим системным именем пользователя вы имеете в виду пользователя, под которым работает apache?   -  person ryantxr    schedule 19.08.2017
comment
@ryantxr нет текущего пользователя системы, такого как человек, который вошел в систему, например, идентификатор администратора.   -  person    schedule 19.08.2017
comment
Почему ты хочешь знать? Что делать, если никто не вошел в систему или несколько человек?   -  person Harry Johnston    schedule 19.08.2017
comment
На какой операционной системе вы это запускаете? И если в систему вошли несколько пользователей, что вы ожидаете получить?   -  person ryantxr    schedule 19.08.2017


Ответы (2)


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

См. phpinfo() для получения дополнительной информации. Работает как на Linux, так и на Windows.

person rndus2r    schedule 19.08.2017
comment
Спасибо за ответ, но результат вашего эха отличается от String userName = System.getProperty(user.name); - person ; 19.08.2017
comment
Какие значения вы получаете в Java и PHP? - person rndus2r; 19.08.2017
comment
Ваш сценарий отображает имя компьютера, а не имя пользователя Windows. - person Masaba James Moses; 30.05.2020

Следующее даст вам пользователя, который запускает процесс PHP. Например, если вы используете Apache, он предоставит вам пользователя, которому принадлежит процесс Apache. Если вы запустите из командной строки, вы получите имя пользователя, вошедшего в систему лично.

Если вы запустите это через Apache (или любой веб-сервер), и этот веб-сервер работает как пользователь _www на вашем компьютере, и вы вошли в систему как пользователь zippy, то они вернут вы _www, а не быстро.

В Linux или MacOS:

$processUser = exec('whoami');

Or:

$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);

Согласно этому документу Oracle Java System.getProperty("user .name") дает вам "имя учетной записи пользователя". Я предполагаю, что в среде веб-сервера это даст вам имя пользователя, который запускает процесс Java или веб-сервер.

Я не совсем уверен, что они работают в Windows, если это то, что вы используете.

person ryantxr    schedule 19.08.2017
comment
Спасибо за ответ, но результат вашего эха отличается от String userName = System.getProperty(user.name); есть ли другой метод? - person ; 19.08.2017
comment
Если вы используете какой-то другой код от имени пользователя, под которым вы вошли в систему, вы, скорее всего, получите другой ответ. Если я запущу PHP через CLI, я получу nigel, если я запущу его из веб-браузера, я получу www-data. - person Nigel Ren; 19.08.2017