[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прошу подсказать, как быстрее уничтожать переменн
GET
Здравствуйте,

задался таким вопросом, на сайте в отдельные моменты, само собой по необходимости, может создаться около 50 переменных массива $_SESSION...т.к. на сайте много сквозных ссылок случайно ошибся и назвал одну и туже, но разные по смыслу одним именем...короче потерял пол-дня пока нашел проблему, решил, чтоб они не помешали друг другу, ну не наложились например удалять за собой, чистить ... не задействованные при входе на скрипт и вот такой вопрос:

Как лучше чистить белым списком? или черным? Как быстрее?


Вот пример черного т.е. удалить все кроме того, что в if
foreach ($_SESSION as $i=>$val)
{
if (
$i=="aaa" ||
$i=="sss" ||
$i=="ddd" ||
$i=="fff"||
$i=="ggg"
)
{
continue;
}
else
{
unset($_SESSION[$i]);
}
}


или наоборот вычислить все переменные, а ненужные объявить массивом и удалять так же через foreach к примеру?




Спустя 2 минуты, 52 секунды (29.08.2011 - 17:10) Игорь_Vasinsky написал(а):
destroy_session() - нет сессий - нет проблем... biggrin.gif а если серъёзно - не было необходимости стока сессионных создавать...

Спустя 5 минут, 13 секунд (29.08.2011 - 17:15) GET написал(а):
Игорь_Vasinsky
...да их не 50..ну максимум сказал...там 2 режима регистрационная форма-14 полей + обязательные 3 + вспомогательные 2

destroy_session() все уничтожит, а мне нужно, чтоб осталисб за логин отвечающие...

Спустя 27 минут, 50 секунд (29.08.2011 - 17:43) Игорь_Vasinsky написал(а):
даж трудно на вскидку сказать... не сталкивался - как проверить ключ 'login' - что это login из $_SESSION['login']??? реально вообще это?

Спустя 5 минут, 24 секунды (29.08.2011 - 17:48) GET написал(а):
Приведу пример...
зашли на страницу A /
затем на страницу B/
затем на страницу С

на странице С заполнили форму в 14 полей отправили на обработчик D...на обработчике нашлась ошибку данные xthtp СЕССИИ отправили обратно в C на корректировку...но там юзер передумал ее заполнять, а вернулся по хлебным крошкам на B или А ...затем там выбрал другую деталь и пошел снова на С зашел туда и увидел ... все то, что он заполнял в первый раз для другой уже детали.

Это хорошо Игорь?...smile.gif

Не думаю...smile.gif

это реально

Спустя 2 минуты, 17 секунд (29.08.2011 - 17:50) Xes написал(а):
да какая ... разница делай как хочешь уничтожай когда совпадате или когда не совпадет.

Если те надо уничтожить. Нафига такой изврат стандартные POST переменные че не юзать. Либа я чето не доганяю че ты делаешь.

Спустя 3 минуты, 23 секунды (29.08.2011 - 17:54) GET написал(а):
Xes
...ну POST переменные пришли и испарились...как ты их отправишь на предидущую страницу, на другой скрипт без формы?
Я вот и думаю...когда он весь массив перебирает т.е. не уничтожает только объявленные это долго или нет...не могу понять..как это по времени...на локалхост все летает а в реале потом не придется глаза на белый экран пучить

Спустя 5 минут, 11 секунд (29.08.2011 - 17:59) Игорь_Vasinsky написал(а):
чёт я снова твою мысль потерял...

вопрос как: как быстро избавиться от ненужных сессионных переменных ?

или что то ещё...

unlink() biggrin.gif unset() - долго или нет? ... есть функция в php что то про использование ресурсов - скрипта - не помню как пишется (но она из стандартных) - проведи тесть - посмотри скока ресурсов тратится...

Спустя 4 минуты, 59 секунд (29.08.2011 - 18:04) GET написал(а):
Игорь_Vasinsky
...я в плане перебирать хорошие переменные или плохие, а потом отдавать unset() ...вот этот момент foreach ($_SESSION as $i=>$val) мне удобно так, но я не знаю, как долго foreach копирует в себя весь массив чтоб потом выборочно из него удалять или же перечислять плохие в массиве скажем $var и их отдавать в unset()

Спустя 2 минуты, 42 секунды (29.08.2011 - 18:07) Игорь_Vasinsky написал(а):
Цитата
есть функция в php что то про использование ресурсов - скрипта - не помню как пишется (но она из стандартных) - проведи тесть - посмотри скока ресурсов тратится...

Спустя 2 минуты, 13 секунд (29.08.2011 - 18:09) Xes написал(а):
Не загоняйся такими мелочами, сначала сделай.

Спустя 4 минуты, 23 секунды (29.08.2011 - 18:13) GET написал(а):
Ок...спасибо.

Спустя 14 часов, 11 минут, 48 секунд (30.08.2011 - 08:25) linker написал(а):
Группируй сессионные переменные по страницам:
$_SESSION['страница А'] = array(писок переменных)
$_SESSION['страница Б'] = array(писок переменных)
$_SESSION['страница В'] = array(писок переменных)
...
т.д.
Если ты переходишь назад, то удаляй сразу группу, например был на странице В и перешёл на Б, то делай
unset($_SESSION['страница В']);
т.д. по аналогии.

Спустя 23 часа, 8 минут, 36 секунд (31.08.2011 - 07:34) GET написал(а):
linker

Спасибо, отличная идея!!! А вот если не знаешь с какой страницы зашел, ну к примеру работал в регистрации детали, а потом после сформирования сессий нажал не на ссылку из хлебных крошек, а на поиск детали скажем, тогда сессии повиснуть могут и всплыть позже, как думаешь не особо тяжело для скрипта воспользоваться обратным удалением т.е. удалить все кроме
$_SESSION['страница А'] 
если я зашел на эту страницу A?

и за разъяснение, что fоreach не копирует массив в себя, я почитал ваш пост.

Спустя 1 час, 46 минут, 5 секунд (31.08.2011 - 09:20) linker написал(а):
Имхо стартовать нужно всегда с первой, либо по наличии групп в сессии определять на какой остановился и стартовать со следующей. Т.е. если в сессии хранится инфа о странице А и Б, то при заходе перебрасываешь на страницу В.

Спустя 16 минут, 53 секунды (31.08.2011 - 09:37) GET написал(а):
linker

т.е. если у меня несколько ссылок (взаимных) на странице то в каждой из них мне нужно хранить инфу о всех других группах сессиях(других страницах) и удалять их
... гм все же кажется лучше поставить
foreach ($_SESSION as $i=>$val)
{
if ($i=='name1'||$i=='name2'$i=='name3')
{
continue;
}
else
{
unset($i);
}
}


где name1...nameN - необходимые на этой страницы сессии.


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.