Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сессии / аналог им
Форумы портала PHP.SU » » Вопросы новичков » Сессии / аналог им

Страниц (1): [1]
 

1. Frozel - 03 Апреля, 2017 - 04:29:05 - перейти к сообщению
Всем привет, может кто-нибудь детально объяснить работу сессий, а именно исходя из задачи:
Есть переменная которой с каждым запросом нового пользователя присваивается уникальное значение, назовём её $userid(с этим проблем нет), дальше создается сессия с этим уник $userid и будет храниться на сервере X времени, при повторном запросе пользователя идёт проверка записан ли этот $userid уже и сколько раз он уже обращался к запросу. Вариант с куками сразу отпадает ибо $userid передается через api, потому и нужно чтобы жизнь сессии хранилась на сервере. Я подозреваю, что решение где-то здесь:

PHP:
скопировать код в буфер обмена
  1.  if ($zapros == $4emuto) {
  2. ++$_SESSION["$userid"];
  3. if {$_SESSION["$userid"] <= 10) { еще работает } else { уже не работает }
  4. }


В случае с данным примером: не работает счетчик т.к. каждый новый запрос пользователя обновляет его, а нужно чтобы каждый новый запрос от одного и того же пользователя прибавлял единицу к счетчику, да и не уверен, что сессии присвоилась переменная $userid

Буду признателен за любую помощь Улыбка
2. Строитель - 03 Апреля, 2017 - 14:40:46 - перейти к сообщению
Frozel пишет:
а нужно чтобы каждый новый запрос от одного и того же пользователя прибавлял единицу к счетчику
PHP:
скопировать код в буфер обмена
  1. // Инициализация
  2. !empty($_SESSION['cnt']) ?: $_SESSION['cnt'] = 0;
  3.  
  4. echo ++$_SESSION['cnt'];
3. quad - 03 Апреля, 2017 - 15:11:28 - перейти к сообщению
Frozel пишет:
Всем привет, может кто-нибудь детально объяснить работу сессий, а именно исходя из задачи:
Есть переменная которой с каждым запросом нового пользователя присваивается уникальное значение, назовём её $userid(с этим проблем нет), дальше создается сессия с этим уник $userid и будет храниться на сервере X времени, при повторном запросе пользователя идёт проверка записан ли этот $userid уже и сколько раз он уже обращался к запросу. Вариант с куками сразу отпадает ибо $userid передается через api, потому и нужно чтобы жизнь сессии хранилась на сервере. Я подозреваю, что решение где-то здесь:

PHP:
скопировать код в буфер обмена
  1.  if ($zapros == $4emuto) {
  2. ++$_SESSION["$userid"];
  3. if {$_SESSION["$userid"] <= 10) { еще работает } else { уже не работает }
  4. }



В случае с данным примером: не работает счетчик т.к. каждый новый запрос пользователя обновляет его, а нужно чтобы каждый новый запрос от одного и того же пользователя прибавлял единицу к счетчику, да и не уверен, что сессии присвоилась переменная $userid

Буду признателен за любую помощь Улыбка

if($zapros == $4emuto) {
session_start();
++$_SESSION["$userid"];
if {$_SESSION["$userid"] <= 10) { еще работает } else { уже не работает }
}

1.запрос приходит методом
POST (Отобразить)

2.Запрос приходит методом
GET (Отобразить)

3. Не правильное имя переменной $4emuto Общие понятия о переменных в PHP
4. Frozel - 04 Апреля, 2017 - 00:07:11 - перейти к сообщению
Спасибо за примеры, но мне нужно именно решение по счетчику, чтобы сессии сохраняли значение. Насчет переменных: if($zapros == $4emuto) тут как раз проблем нет, написал лишь для наглядности и переименовал.
5. Строитель - 04 Апреля, 2017 - 07:21:50 - перейти к сообщению
Frozel пишет:
Спасибо за примеры, но мне нужно именно решение по счетчику, чтобы сессии сохраняли значение. Насчет переменных: if($zapros == $4emuto) тут как раз проблем нет, написал лишь для наглядности и переименовал.
Я же вам дал решение - скопируйте код и посмотрите результат.
6. Frozel - 04 Апреля, 2017 - 11:41:55 - перейти к сообщению
Строитель пишет:
Frozel пишет:
Спасибо за примеры, но мне нужно именно решение по счетчику, чтобы сессии сохраняли значение. Насчет переменных: if($zapros == $4emuto) тут как раз проблем нет, написал лишь для наглядности и переименовал.
Я же вам дал решение - скопируйте код и посмотрите результат.


Решение не актуально потому, что счетчику не присуждается переменная с id пользователя($userid), соответственно при каждом новом запросе счетчик присуждает "кому-то" единицу и всё. Такие варианты как: $_SESSION["$userid"]; или $_SESSION['cnt'] = $userid; просто записывают ид и счетчик перестает работать.
7. Строитель - 04 Апреля, 2017 - 11:56:45 - перейти к сообщению
Frozel, видимо вы абсолютно не знакомы с механизмом работы сессий.

И всё же - скопируйте код, и пообновляйте страницу в РАЗНЫХ браузерах - счётчик будет считать переходы для каждого браузера отдельно.
8. Frozel - 04 Апреля, 2017 - 17:44:39 - перейти к сообщению
Строитель пишет:
Frozel, видимо вы абсолютно не знакомы с механизмом работы сессий.

И всё же - скопируйте код, и пообновляйте страницу в РАЗНЫХ браузерах - счётчик будет считать переходы для каждого браузера отдельно.


Видимо вы абсолютно не понимаете механизма взаимодействия с сессией, а переписав условие if else сокращенным вариантом - вы не решили проблему. Нужно чтобы к сессии присваилась переменная полученная через api и у неё был счетчик, с переменной проблем - нет, с записью ее как идентификатор сессии - да(см.выше). Более того, я вам сообщу, что пользователь не переходит ни на какую страницу, слово api здесь не просто так использовано, если интересно, то почитайте документацию vk api. Так или иначе спасибо за попытку.

Я уже нашел иное решение этой задачи, но, если у кого-то имеются идеи по реализации с сессиями, то буду рад.
9. timo - 04 Апреля, 2017 - 20:29:26 - перейти к сообщению
может через цыкл попробовать
10. haveFun - 05 Апреля, 2017 - 13:52:20 - перейти к сообщению
сессии вообще никак не совместимы с апи.
тут бд нужно использовать и в ней хранить значения счетчиков для пользователей

 

Powered by ExBB FM 1.0 RC1