Как получить имя пользователя вошедшего на сайт?
Нет полного понимания, как решить задачу №2 с текущим пользователем. Подскажите куда копать. Есть мысль, что нужно пометить пользователя с помощью cookie и потом сверять данные полученные от пользователя. Но как сверять? Как закрепить за пользователем определенную куку? Может, я ошибаюсь. Буду благодарен за советы. Код предыдущих заданий для полноты картины. // возвращает список пользователей и хэш их паролей
function getUsersList() < return [ 'Ivan' =>'$2y$10$XJtEqRpa6FZkYh8Iy3NL3OHAFAZKS4DI2HSNKuSDvoRtDKNo3gcF2', // 123 'Igor' => '$2y$10$EERFSFh.FjTR8CN9y4Km8Ou0sV.ESaPRVIUJroeBdUnYXXoB/pm22', //1234 'Katya' => '$2y$10$u0YjeCbNOGAtnGCEHtXnSOO8.1G4o7n.3O8gSy5bK92PmFBwP7rqS', //12345 'Karl' => '$2y$10$Xd37KgZhU2eBeofD4kMneeDRVauQuCSUb0gGtg96yJ6l9fYgUi4AK', //54321 ]; > //проверяет - существует ли пользователь с заданным логином function existsUser($login) < return isset(getUsersList()[$login]); >// возвращает true тогда, когда существует пользователь с указанным логином и введенный им пароль прошел проверку function checkPassword($login, $password)
Как вывести имя пользователя на страницу сайта после регистр.
Форум PHP-MyAdmin.RU → Курилка → Как вывести имя пользователя на страницу сайта после регистр.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 3
1 Тема от Byba 2019-05-14 10:50:57
Тема: Как вывести имя пользователя на страницу сайта после регистр.
Здравствуйте всем. Кто может подскажите ка это делается, с чего начинать ?
Если пользователь вошел в личный кабинет, в углу сайта появляется его имя, а ,,Вход,, меняется на ,,выход,,
get_current_user
Результатом выполнения данного примера будет что-то подобное:
Текущий владелец скрипта: SYSTEM
Смотрите также
- getmyuid() — Получение UID владельца скрипта PHP
- getmygid() — Получить GID владельца скрипта PHP
- getmypid() — Получение ID процесса PHP
- getmyinode() — Получает значение inode текущего скрипта
- getlastmod() — Получает время последней модификации страницы
User Contributed Notes 7 notes
18 years ago
to get the username of the process owner (rather than the file owner), you can use:
$processUser = posix_getpwuid ( posix_geteuid ());
print $processUser [ ‘name’ ];
?>
11 years ago
On Centos, the Red Hat linux clone, this instruction gives the file’s OWNER (the first parameter in instruction ‘chown’). It does not reveal the file’s GROUP.
get_current_user() does NOT reveal the current process’ user’s identity.
See: posix_getuid() — Return the real user ID of the current process
16 years ago
The information returned by get_current_user() seems to depend on the platform.
Using PHP 5.1.1 running as CGI with IIS 5.0 on Windows NT, get_current_user() returns the owner of the process running the script, *not* the owner of the script itself.
It’s easy to test — create a file containing:
echo get_current_user ();
?>
Then access it through the browser. I get: IUSR_MACHINE, the Internet Guest Account on Windows, which is certainly not the owner of the script.
3 years ago
Further testing of behaviour on Windows vs Linux.
On Linux this function is indeed returning the owner of the script. If you want to know the username PHP is running as you can use POSIX functions (or shell_exec with ‘whoami’).
On Windows this function is returning the username PHP is running as. Both for IIS (IUSR) and Apache (SYSTEM — which comes from the fact Apache is a service on Windows).
The behaviour on Windows is actually useful given that POSIX functions aren’t available. If you need to find the owner of the script on Windows perhaps the best way is to shell_exec to use dir /Q, and parse that.
10 years ago
Since this only returns the file owner and not the actual user running the script, an alternative in Linux is:
$current_user = trim ( shell_exec ( ‘whoami’ ));
?>
8 years ago
If you want to get the name of the user who executes the current PHP script, you can use
$username = getenv ( ‘USERNAME’ ) ?: getenv ( ‘USER’ );
echo $username ; // e.g. root or www-data
?>
7 years ago
If you have userdir enabled, get_current_user() returns the username of the user hosting the public_html. For example, http://example.com/~bobevans/somescript.php will return bobevans when calling get_current_user().
- Опции PHP/информационные функции
- assert
- cli_get_process_title
- cli_set_process_title
- dl
- extension_loaded
- gc_collect_cycles
- gc_disable
- gc_enable
- gc_enabled
- gc_mem_caches
- gc_status
- get_cfg_var
- get_current_user
- get_defined_constants
- get_extension_funcs
- get_include_path
- get_included_files
- get_loaded_extensions
- get_required_files
- get_resources
- getenv
- getlastmod
- getmygid
- getmyinode
- getmypid
- getmyuid
- getopt
- getrusage
- ini_alter
- ini_get_all
- ini_get
- ini_parse_quantity
- ini_restore
- ini_set
- memory_get_peak_usage
- memory_get_usage
- memory_reset_peak_usage
- php_ini_loaded_file
- php_ini_scanned_files
- php_sapi_name
- php_uname
- phpcredits
- phpinfo
- phpversion
- putenv
- set_include_path
- set_time_limit
- sys_get_temp_dir
- version_compare
- zend_thread_id
- zend_version
- assert_options
- get_magic_quotes_gpc
- get_magic_quotes_runtime
- restore_include_path
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Как вывести имя авторизованного пользователя?
Только Вы бы почитали про sql-инъекции, а то так пихать в запрос все что не попадя — все равно что тянуть все в рот, что на дороге нашел.
Ответ написан более трёх лет назад
Нравится 1 22 комментария
BadassRolf @BadassRolf Автор вопроса
да это пока что локалке, так сказать, для себя
BadassRolf @BadassRolf Автор вопроса
на счет $user[‘name’]; не понятно. у меня он нигде не хранится, я вам скинул весь код.
как его записать можно?
BadassRolf: вместо name — любое имя поля которое хотите чтобы выводилось в качестве имени, наверно тогда $user[«login»], если более подходящего нет ничего:)

BadassRolf @BadassRolf Автор вопроса
Exploding: не получается что-то(
BadassRolf: А тут случайно нет ошибки?
Код изначально то вообще работал хоть?if (isset($_POST['login_u'])) < $login_true = mysqli_query($connections, "SELECT * FROM `users` WHERE login='".$_POST['login']."' AND password = MD5('".$_POST['password']."')");А то проверяется login_u, а в запрос просто login?

BadassRolf @BadassRolf Автор вопроса
Exploding: так это после нажатия кнопки войти

Ну так правильно! Причем тут кнопка. Поле называется login!
измените на это:
if (isset($_POST['login']))
BadassRolf: и где action вообще?

BadassRolf @BadassRolf Автор вопроса
Exploding: на странице с формой находится экшн. при вводе логина и пароля проверяется событие на нажие кнопки у которой имя login_u. после этого идет сверение и устанавливается сессия.
если поставить как вы сказали, тогда не работает
Вы можете сделать так, и сюда выложить?
Перед проверкой напишите
var_dump($_POST);
BadassRolf @BadassRolf Автор вопроса
Exploding: array(3) < ["login"]=>string(5) "admin" ["password"]=> string(5) "admin" ["login_u"]=> string(0) "" >
BadassRolf: И хотя бы привести пример ошибки, которую выдает интерпретатор, а не просто "не работает".
Контроль ошибок включается: error_reporting(-1);
BadassRolf @BadassRolf Автор вопроса
Exploding: Notice: Undefined variable: user in E:\OpenServer\domains\php-j\index.php on line 24
Уффф. вот так 100% должно работать.
["login"]=> string(5) - это по вашему что означает)))))
["login_u"]=> string(0) - и вот это))if (isset($_POST['login'])) < $login_true = mysqli_query($connections, "SELECT * FROM `users` WHERE login='".$_POST['login']."' AND password = MD5('".$_POST['password']."')"); if ($login_true) < $user = mysql_fetch_assoc($login_true); $_SESSION['login_user'] = $login_true; $_SESSION['user_name'] = $user['name']; //или где там имя храниться >else echo "Не правильно"; > echo "Здрасте, ".$_SESSION["user_name"];
BadassRolf @BadassRolf Автор вопроса
Exploding: Спасибо, работает)
BadassRolf: весь контент файла сбросьте, а то не понятно что там на 24 строке происходит

BadassRolf: Ну так где тупняк был?:)

BadassRolf @BadassRolf Автор вопроса
Я вот так сделал)if (isset($_POST['login_u'])) < $login_true = mysqli_query($connections, " SELECT * FROM `users` WHERE login='".$_POST['login']."' AND password = MD5('".$_POST['password']."'); "); if ($login_true) < $count = mysqli_num_rows($login_true); if ($count >0) < $_SESSION['login_user'] = $login_true; >else < echo "Не правильно"; >> $_SESSION['user_name'] = $_POST['login']; >
BadassRolf: Ну. скрипя и отворачивая голову, учитывая что это на локалке для себя. )))
Только определение $_SESSION['user_name'] = $_POST['login']; хотя бы в блок с проверкой запихните, а то мало ли какой пост_логин прийдет.if (isset($_POST['login_u'])) $login_true = mysqli_query($connections, "
SELECT * FROM `users` WHERE login='".$_POST['login']."' AND password = MD5('".$_POST['password']."');
");
if ($login_true) $count = mysqli_num_rows($login_true);
if ($count > 0) $_SESSION['login_user'] = $login_true;
$_SESSION['user_name'] = $_POST['login'];
>else echo "Не правильно";
>
>
BadassRolf @BadassRolf Автор вопроса
Exploding: я от силы php изучаю неделю. практикуюсь второй день) вот все и криво и как попало. с повышением знаний буду исправлять код)

Но я бы разобрался! Т.к. фактически вы вроде бы и сверились с БД но как-то хреново сверились))) Почему логин не из записи БД берется а из поста?)))) Фен-шуй за это покарает колючей плетью))

BadassRolf: Обязательно исправьте, т.к. этот вариант крайне не подходящий для постоянной работы. Заглушка, так можно сказать про него:)
