Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальная переменная 
:(
    Опции темы
Zorak
Дата 8.6.2013, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Здраствуйте. Вопрос следующего характера. У меня в базе хранится некое значение. И так, когда юзер логинится в систему, происходит считывание данного значения, которое прямо влияет на то какой текст и в каком формате пользователь видит страницу. И так вопрос:
Как сделать так чтобы ета переменная раз считалась и сохранилась, т.е. запихнуть ее кудато глобально и использовать где надо, чтобы не пришлось в каждом скрипте считывать ее опять ? Значение должно хранится исключительно в пределах сессии.
З.Ы. $_SESSION не предлагать)

Спасибо.


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Arantir
Дата 8.6.2013, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Ну в PHP только 3 варианта хранения чего-то независимо от выполнения скриптов: в кеше, в БД, в файле.
Кеш самый быстрый, но не безразмерный. 
Работа с локальной БД довольная быстрая и эффективная. Для особых потребностей всегда можно выделить отдельную табличку, чтобы СУБД лишних данных не перебирала.
Файлы самые универсальные - достаточно средств ОС. Но это медленно и больше нагрузки на диск.

В принципе, если это всего несколько байт, то можно в кеш запихнуть на основе id сессии. Пример с APC:
Код

apc_add(session_id() . '_my_var', $value, $lifetime);
apc_fetch(session_id() . '_my_var');
Будет обновляться каждые $lifetime сек. При закрытии сессии к значению уже никто не доберется, и оно удалится через $lifetime сек.
Ну или можно сохранить навечно, он надо будет предусмотреть ее удаление по закрытию сессии.

Цитата(Zorak @  8.6.2013,  18:09 Найти цитируемый пост)
З.Ы. $_SESSION не предлагать)

А почему? =)

Это сообщение отредактировал(а) Arantir - 8.6.2013, 19:35


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Zorak
Дата 8.6.2013, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Arantir, ты как всегда мой ангел спаситель  smile .. из трех советов два из них твои (для меня).. Наверное буду использовать кеш. Так как БД вообще не хочу в данном случае, файлы - слишком много ресурсов для такого дела. Ето будет примерно 5 значений 1\0...

$_SESSION слышком опасно юзать (смысл безопасности).

Спасибо

Это сообщение отредактировал(а) Zorak - 8.6.2013, 20:42


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
bars80080
Дата 8.6.2013, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Zorak @  8.6.2013,  20:40 Найти цитируемый пост)
$_SESSION слышком опасно юзать (смысл безопасности).

ну, это зависит от умения пользоваться

самый простой, кстати



Цитата(Zorak @  8.6.2013,  20:40 Найти цитируемый пост)
Ето будет примерно 5 значений 1\0...

такие значения очень неплохо хранить в записи о пользователе. когда происходит авторизация, традиционно о пользователе извлекаются данные. хотя бы одна запись из БД - его id, имя (чтобы показать "Привет, %username%"), количество свежих сообщений и т.п. в той же записи в БД можно хранить и необходимые данные

всё как всегда зависит от контекста
PM MAIL WWW   Вверх
Zorak
Дата 8.6.2013, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Ну суть такова:
После регистрации и пр первой авторизации юзер заполняет выбранные поля (в зависимости от выбранного значение становится 1 или 0 и сохраняется в базу.. Типа неких настроек).... При последующих авторизациях мне надо считать ети данные и пользоватся ими, но считать надо только один раз, когда он авторизуется и все... 



--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Arantir
Дата 8.6.2013, 21:30 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Если сессии Вам кажутся не безопасными, то как Вы храните данные авторизации? =)))
Сервер же как-то у Вас узнает, что, например, под с "nlnk7pubhi0pc08av65mj3obm3" сидит юзер Вася.

Добавлено @ 21:36
Вообще, в самом PHP сессии не таят никакой опасности. Одна проблема сессий в самом принципе работы современного веба. Все построено на схеме запрос-ответ. И связи меж запросами нет. Юзер может послать что угодно.
Как ни пыхти, а с текущим HTTP протоколом сессии останутся иллюзорными, как их не реализовывай.
Привязка по IP - не панацея. У многих он по 3 раза в день меняется и они либо выключат привязку либо, если это невозможно, уйдут с такого сайта. 
А любые заголовки можно подделать.

Другая в проблема в их использовании разработчиком. Сессия общая на все вкладки браузера и, нажимая "выйти" на одной, с других уже не должны быть возможны успешные запросы действий, требующих авторизации. И т.п...
По сути, эти проблемы ни чем не отличаются от других оплошностей (например, плохой фильтрации данных при записи в БД и подобному) и не являются проблемой самих сессий, как отсутствие фильтрации - не проблема БД. Просто не надо доверять php больше, чем нужно, он императивный и чего не просят сам не сделает =)

По-этому для больших возможностей все еще приходится писать десктопные приложения. Вот когда в этом отпадет необходимость ввиду новых возможностей будущих версий веб-протоколов, тогда наступит настоящая эра веба. А сейчас всё на костылях  smile 

Это сообщение отредактировал(а) Arantir - 8.6.2013, 22:10


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Zorak
Дата 9.6.2013, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Цитата

Если сессии Вам кажутся не безопасными, то как Вы храните данные авторизации? =)))
Сервер же как-то у Вас узнает, что, например, под с "nlnk7pubhi0pc08av65mj3obm3" сидит юзер Вася.

Ну тут  у меня реализовано все через БД, и  исключительно через БД..Т.е. Время сесии в бд, последнее посещение в бд (исходя от разницы между последним посещением и временем сессии, которое хранится  в бд генерируется новое ID сесии), остальное отдельная табла их двух полей : UID и id_session.. . Т.е. под такимто id_session сидит такойто юзер... В принципе Сессия у меня построена по принципу CMS Drupal, она мне там понравилась, за исключением нескольких моментов.

Цитата

По-этому для больших возможностей все еще приходится писать десктопные приложения.

В принципе это еще ооочень не скоро пройдет, сколько себя помню, то всегда понимал что скомпилинное приложение для определенных задач намного лучше ВЕБ, все таки как ни крути, а данные грузятся в оперу, которая не ограничивается временем жизни, разве что комп вырубить-=).

Цитата

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

Тут на все 100% прав.



--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Arantir
Дата 9.6.2013, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Цитата(Zorak @  8.6.2013,  23:37 Найти цитируемый пост)
Ну тут  у меня реализовано все через БД, и  исключительно через БД.

Ну сессии-то еще когда придумали =) 
Сейчас и кеш есть, и БД получше и возможностей побольше... да и люди, в общем-то, умнее smile 

Я сам для сложных случаев не использую родных сессий вообще. Там, где пользователи серьезно относятся к сохранности своих данных и прав доступа (например, если есть платные доп. услуги), база данных позволяет реализовать адекватное отслеживание и статистику сессий. Как минимум кнопочка "закрыть другие сессии" приносит в душу мир и покой, если запамятовал нажать кнопочку "выход" где-то на не своем компьютере.
Через файлы это бы было, как через мягкое место. Уже не говоря о том, что будет 2 несвязных интерфейса управления — первый нативный для текущей сессии и второй для перебора файлов, а не один гармоничный и целостный.

Более того, можно вшить обе возможности — кеш и БД — прямо в свою реализацию, чтобы доступ данным сессии и с кеш и с БД осуществлялся по тем же правам доступа без явного разделения. Всего-лишь при записи указывать тип хранения.

Ну это я уже замечтался что-то... Вечно уж меня тянет космические корабли строить, когда и легковушки достаточно  smile 


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Zorak
Дата 9.6.2013, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



[QUOTE]
Ну это я уже замечтался что-то... Вечно уж меня тянет космические корабли строить, когда и легковушки достаточно  smile
[\QUOTE]
Зато на корабле можно долететь немного дальше чем доехать на легковушке)


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0966 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.