Php вывод имя пользователя

БЛОГ PHP ПРОГРАММИСТА

Пользователю будет приятно видеть сообщение вида «Рады видеть снова, -оно будет способствовать возвращению пользователей на сайт. Если вы скажете сайту свое имя, оно будет использовано в приветствии.

Чтобы продемонстрировать один из способов создания такого сообщения, мы напишем сценарий, хранящий данные в Cookies и отображающий их, если Cookie доступно:

 if (isset($_COOKIE["stored_user_name"])) < $user = $_COOKIE["stored_user_name"]; print "Рады вас видеть снова, $user!"; > else < ?> 
User name:
?>

Доступ и хранение Cookies — это два отдельных механизма. Вы можете читать Cookies, отправляемые клиентом через массив $_СООК1Е. Он работает так же, как и массивы $_POST и $_GET.

Для установки Cookies нужно использовать функцию setcookie(), которой нужно передать три основных параметра:
• Имя Cookie — этот сценарий использует stored_user_name.
• Значение Cookie.
• Срок действия Cookie в формате Unix timestamp. Этот скрипт использует time()+604800-7 дней с момента установки Cookies.
Также вы можете передать три дополнительных параметра:
• Путь к местам сайта, где Cookie будет действовать, — работает как каталог, например, вы хотите, чтобы Cookies действовали только для каталога /content/ вашего сайта, используйте /content/ в качестве значения этого параметра. Если вы хотите, чтобы Cookies действовали по всему сайту, используйте /.
• Домен, для которого действуют Cookies, — предположим, что у вас есть узлы www . example . com и sales . example . com, и вы хотите, чтобы Cookies были действительны для обоих узлов, — ус-тановите . example. com в качестве значения этого параметра.
• Если последний параметр равен 1, то браузер должен передавать Cookies только по защищенному соединению (HTTPS).

Читайте также:  Php прочитать большой файл

Что может быть не так?
Рассмотрим несколько проблем, часто встречающихся при получении Cookies:

• Вы отправляете данные в браузер пользователя перед вызовом setcookie (). Запрос на установку Cookies — это HTTP-заголовок сервера, поэтому ваш сценарий ничего не должен выводить до вызова setcookies (). Если у вас включены предупреждения, РНР сообщит вам об ошибке. Довольно часто программисты сталкиваются с проблемой наличия пробельных символов до • Браузер пользователя не принимает Cookies — если пользователь отключил прием Cookies, вы об этом даже не узнаете. Максимум, что вы можете сделать, — это использовать is set () для проверки существования элементов массива $_С00КIЕ [ ]. Иногда сам браузер может отвергать Cookies, причиной этому может быть неправильный домен.

• Кто-либо пытается передать неверные параметры — Cookies могут быть легко сфабрикованы, не доверяйте получаемым из Cookies значениям.

• Вы пытаетесь сохранить массив в Cookies — перед сохранением массива в Cookies его нужно сериализировать

Posted on Nov. 10th, 2010 at 12:34 pm | Link | Оставить след | Share | Flag

Источник

Как вывести имя авторизованного пользователя?

Exploding

Только Вы бы почитали про sql-инъекции, а то так пихать в запрос все что не попадя — все равно что тянуть все в рот, что на дороге нашел.

BadassRolf

BadassRolf

на счет $user[‘name’]; не понятно. у меня он нигде не хранится, я вам скинул весь код.
как его записать можно?

Exploding

BadassRolf: вместо name — любое имя поля которое хотите чтобы выводилось в качестве имени, наверно тогда $user[«login»], если более подходящего нет ничего:)

BadassRolf

Exploding

BadassRolf

Exploding

774462ce6a3c41f494eaca20d7c1352e.jpg

Ну так правильно! Причем тут кнопка. Поле называется login!
измените на это:
if (isset($_POST[‘login’]))

Exploding

BadassRolf

Exploding: на странице с формой находится экшн. при вводе логина и пароля проверяется событие на нажие кнопки у которой имя login_u. после этого идет сверение и устанавливается сессия.
если поставить как вы сказали, тогда не работает

Exploding

BadassRolf

Exploding

BadassRolf: И хотя бы привести пример ошибки, которую выдает интерпретатор, а не просто «не работает».
Контроль ошибок включается: error_reporting(-1);

BadassRolf

Exploding

Уффф. вот так 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

Exploding

Exploding

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']; >

Exploding

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

Exploding: я от силы php изучаю неделю. практикуюсь второй день) вот все и криво и как попало. с повышением знаний буду исправлять код)

Exploding

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

Exploding

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

Источник

get_current_user

Результатом выполнения данного примера будет что-то подобное:

Текущий владелец скрипта: SYSTEM

Смотрите также

  • getmyuid() — Получение UID владельца скрипта PHP
  • getmygid() — Получить GID владельца скрипта PHP
  • getmypid() — Получение ID процесса PHP
  • getmyinode() — Получает значение inode текущего скрипта
  • getlastmod() — Получает время последней модификации страницы

User Contributed Notes 7 notes

to get the username of the process owner (rather than the file owner), you can use:

$processUser = posix_getpwuid ( posix_geteuid ());
print $processUser [ ‘name’ ];
?>

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

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.

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.

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’ ));
?>

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
?>

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_​options
    • 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
    • get_​magic_​quotes_​gpc
    • get_​magic_​quotes_​runtime
    • restore_​include_​path

    Источник

    Как выводить имя пользователя по id, на главную страницу в админке?

    slo_nik

    Доброе утро.
    Сохраните в сессии или cookies имя пользователя и подставляйте значение в нужном месте.

    p.s. Запросы к базе уязвимы, надо исправить, иначе будут проблемы. Зачем в сессию записывать пароль?

    mad_maximus

    В сессию сохраните id, а потом доставайте sql запросом. Хотя зачем вам id, если у вас email (который должен быть уникальным). По нему и достаньте.

    iiifx

    mad_maximus

    Виталий Хоменко, справедливости ради, нельзя разрешать просто так менять email. Хочет поменять, пусть меняет, но перед этим отправляете письмо на почту, чтобы он подтвердил ее реальность, а уже в методе подтверждения авторизуете его заново с новыми аутентификационными данными.

    iiifx

    mad_maximus, можно или нельзя менять почту это уже другой вопрос, другая зона ответственности, и с тех. частью никак не связана.

    ID пользователя всегда существует, всегда уникален. Почта же может меняться, если этого потребует бизнес-сценарий, почта может даже отсутствовать или почтовых адресов может быть множество. Хранение email в сессии эту выстрел себе в ногу при определенных условиях.

    Вы можете со мной не соглашаться, ваше право. Просто прикиньте все возможные ситуации и проблемы, которые могут возникнуть в обоих вариантах.

    mad_maximus

    Виталий Хоменко, да, разумеется, я сам всегда использую id, это удобнее и надежнее, как вы сказали. Не знаю, зачем я во второй части своего ответа посоветовал использовать email, просто как вариант, а не золотое решение.

    Источник

Оцените статью