Я создал php-программу, в которой я пытаюсь получить текущее имя пользователя Windows. Я установил это на сервере, и у меня есть несколько пользователей на сервере, например: [(administrator - user-1), (sam - user-2), (mac - user-3)] и т.д.
Я запускаю свой xampp с помощью user-1. Я запускаю свое приложение в localhost (localhost/myapplication/index.php). Я получаю правильный o/p для ---> администратора
echo getenv("username"); or echo get_current_user(); or echo trim(shell_exec('whoami'));
Для пользователя-2 (он подключается к сеансу Windows) Нет необходимости запускать xampp, поскольку его alredy запускается пользователем-1 user-2 запускает приложение в localhost (localhost/myapplication/index.php) (используя другой сеанс с логином)
Когда я выполняю
echo getenv("username"); or echo get_current_user(); or echo trim(shell_exec('whoami'));
Я получаю o/p → administrator вместо sam
Не могли бы вы помочь мне в этом?
Его невозможно сделать из-за причин, которые я опубликовал выше. Однако это возможно и по-другому.
Я создал сценарий C
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *p=getenv("USER");
if(p==NULL) return EXIT_FAILURE;
printf("%s\n",p);
return 0;
}
Скомпилируйте этот код. Если вы не знаете, как это сделать, выполните поиск в Google. How to compile C code
После компиляции сохраните код компиляции в том же каталоге, что и скрипт php. Я сохранил мой как a.out
Затем в вашем php-коде выполните следующие действия:
exec("./a.out");
Это возвращает текущего зарегистрированного пользователя.
Ваш веб-сервер запускается с учетной записью пользователя. Все команды PHP управляются этим пользователем.
Сервер не имеет понятия, кто к нему подключается (подумайте о том, что вы ожидаете от него, если кто-то подключился через Интернет к вашему серверу.)
Вам нужно будет иметь какую-то систему входа, если вы хотите узнать разных пользователей.