Извлечение данных пользователя.

Что мы знаем о пользователе?

Весьма часто из документа, защищённого Скрытной Наной, необходимо переадресовать пользователя в другое место, но при этом как-то его идентифицировав.

Всё, что мы можем знать о пользователе, это его e-mail и PIN-код.

И то и другое может быть вытащено из авторизационной сессии пользователя, помещено в соответствующую переменную кода текущего документа, а затем подставлено в код формы, посылающей данные стороннему сервису по протоколу POST. Подробности написания такой формы нас тут совершенно не интересуют, а вот наполнение переменных данными о пользователе - очень даже.

Получение информации о пользователе.

Рассмотрим такой код:

function get_user_pin_or_email($item) {
   global 
$_s;

   if (
true===h_access()
   and 
false!==$p=get_data_id_or_false('u') and check_sign('users',$p)
   and 
false!==$p=get_data_id_or_false(get_md_hash($_s['loc']['fold']))
   and 
false!==h_get_access($p)
   and isset(
$_s['file']['pin'])) {
      if (
$item=='pin') return $p;
      if (
$item=='email') {
         
$arr=disk2arr($_s['file']['pin']);
         return 
$arr['m'];
      }
   }
   return 
false;
}

Эту функцию можно разместить прямо в документе, для которого надо получить информацию о пользователе, либо же в сервисном файле ./data/modules/hidden/_hidden.php (второй вариант лучше).

После этого, чтобы в документе Скрытной Наны сообщить его коду информацию о пользователе, нужно применить один или пару операторов, обратившись к рассморенной выше функции (будем предполагать, что функция размещена в Сервисном Файле, иначе её пришлось бы дописать тут):

<?php /* Выше этой строки в файле ничего не должно быть */

   
include($_s['loc']['modul'].$_s['hidden']['base'].'_hidden.php');
   
$pin =get_user_pin_or_email('pin');
   
$mail=get_user_pin_or_email('email');

   
$_s['title']='Тайтл документа для авторизованного пользователя';
   
$_s['content']='
      <h2>Тайтл документа</h2>
      <p>HTML код для авторизованного пользователя.</p>
   '
;

   if (!
h_access()) $_s['title']=$_s['content']=$oslen;

/* Ниже этой строки в файле ничего не должно быть. */ ?>

Как нетрудно видеть, в переменных $pin или $mail находится нужная документу информация о пользователе, которая далее в коде документа кнопкой (то есть формой по протоколу POST) может быть передана другому сервису.

Настоятельно не рекомендуется использовать протокол GET, передавая приватные данные как элемент URL-а. Это автоматически ставит крест на приватности, и делать так просто нельзя.