Мы могли бы помочь, если бы вы предоставили некоторые образцы данных. Сеть полна учебников по использованию следующих функций, которые делают то, что вас интересует:
gather()
и spread()
из пакета tidyr
melt()
и [114 ] из пакета reshape2
Для уничтожения сессии, необходимо взять следующие шаги:
Чтобы сделать это, я использовал бы это:
session_start();
// resets the session data for the rest of the runtime
$_SESSION = array();
// sends as Set-Cookie to invalidate the session cookie
if (isset($_COOKIE[session_name()])) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 1, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));
}
session_destroy();
И быть уверенными, что идентификатор сессии недопустим, необходимо только позволить идентификаторы сессии, которые инициировались сценарием. Таким образом установите флаг и проверку, если она установлена:
session_start();
if (!isset($_SESSION['CREATED'])) {
// invalidate old session data and ID
session_regenerate_id(true);
$_SESSION['CREATED'] = time();
}
Кроме того, можно использовать эту метку времени для свопинга идентификатора сессии периодически для сокращения его времени жизни:
if (time() - $_SESSION['CREATED'] > ini_get('session.gc_maxlifetime')) {
session_regenerate_id(true);
$_SESSION['CREATED'] = time();
}
Руководство PHP рассматривает этот вопрос.
необходимо уничтожить сессию и также удалить сеансовые куки (при использовании cookie).
Посмотрите эту страницу (особенно первый пример):
В одном сайте я сделал, где я использовал сессии PHP, я никогда на самом деле уничтожаю сессию.
Проблема состоит в том, что в значительной степени необходимо звонить session_start()
проверять на Ваш $_SESSION
переменные, в который точка, о чудо, Вы создали другую сессию так или иначе.
Следовательно на моем сайте я просто удостоверился что каждая названная страница session_start()
, и затем просто unset()
те части состояния сеанса, которые имеют значение, когда пользователь выходит из системы.