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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сессии / аналог им

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Frozel
Отправлено: 03 Апреля, 2017 - 04:29:05
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Март 2017  


Помог: 0 раз(а)




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

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


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

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

(Отредактировано автором: 03 Апреля, 2017 - 05:59:18)

 
 Top
Строитель Модератор
Отправлено: 03 Апреля, 2017 - 14:40:46
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Frozel пишет:
а нужно чтобы каждый новый запрос от одного и того же пользователя прибавлял единицу к счетчику
PHP:
скопировать код в буфер обмена
  1. // Инициализация
  2. !empty($_SESSION['cnt']) ?: $_SESSION['cnt'] = 0;
  3.  
  4. echo ++$_SESSION['cnt'];
 
 Top
quad
Отправлено: 03 Апреля, 2017 - 15:11:28
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Март 2017  
Откуда: Россия


Помог: 0 раз(а)




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

(Отредактировано автором: 03 Апреля, 2017 - 15:14:11)

 
 Top
Frozel
Отправлено: 04 Апреля, 2017 - 00:07:11
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Март 2017  


Помог: 0 раз(а)




Спасибо за примеры, но мне нужно именно решение по счетчику, чтобы сессии сохраняли значение. Насчет переменных: if($zapros == $4emuto) тут как раз проблем нет, написал лишь для наглядности и переименовал.
 
 Top
Строитель Модератор
Отправлено: 04 Апреля, 2017 - 07:21:50
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Frozel пишет:
Спасибо за примеры, но мне нужно именно решение по счетчику, чтобы сессии сохраняли значение. Насчет переменных: if($zapros == $4emuto) тут как раз проблем нет, написал лишь для наглядности и переименовал.
Я же вам дал решение - скопируйте код и посмотрите результат.
 
 Top
Frozel
Отправлено: 04 Апреля, 2017 - 11:41:55
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Март 2017  


Помог: 0 раз(а)




Строитель пишет:
Frozel пишет:
Спасибо за примеры, но мне нужно именно решение по счетчику, чтобы сессии сохраняли значение. Насчет переменных: if($zapros == $4emuto) тут как раз проблем нет, написал лишь для наглядности и переименовал.
Я же вам дал решение - скопируйте код и посмотрите результат.


Решение не актуально потому, что счетчику не присуждается переменная с id пользователя($userid), соответственно при каждом новом запросе счетчик присуждает "кому-то" единицу и всё. Такие варианты как: $_SESSION["$userid"]; или $_SESSION['cnt'] = $userid; просто записывают ид и счетчик перестает работать.

(Отредактировано автором: 04 Апреля, 2017 - 11:42:22)

 
 Top
Строитель Модератор
Отправлено: 04 Апреля, 2017 - 11:56:45
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Frozel, видимо вы абсолютно не знакомы с механизмом работы сессий.

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


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Март 2017  


Помог: 0 раз(а)




Строитель пишет:
Frozel, видимо вы абсолютно не знакомы с механизмом работы сессий.

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


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

Я уже нашел иное решение этой задачи, но, если у кого-то имеются идеи по реализации с сессиями, то буду рад.

(Отредактировано автором: 04 Апреля, 2017 - 17:47:46)

 
 Top
timo
Отправлено: 04 Апреля, 2017 - 20:29:26
Post Id


Забанен


Покинул форум
Сообщений всего: 47
Дата рег-ции: Март 2017  


Помог: 0 раз(а)

[+]


может через цыкл попробовать
 
 Top
haveFun
Отправлено: 05 Апреля, 2017 - 13:52:20
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




сессии вообще никак не совместимы с апи.
тут бд нужно использовать и в ней хранить значения счетчиков для пользователей
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB