Автор Тема: Пренасяна на променлива между сесии  (Прочетена 1005 пъти)

madmad

  • Напреднали
  • *****
  • Публикации: 226
  • Distribution: Ubuntu, OpenSuse
  • Window Manager: Gnome 3.4
    • Профил
Имам следния проблем. PHP чат, трябва да праща покана по потребителско име. И потребителя да получи попъп кагато презареди сртаница на сайта.

Наично по който работи в момента е, при пращането на поканата скрипт вкарва потребителско име в сесията и след това го сравнява с потребителското име на логнатия потребител. ако са еднакви, изкача попъп.

Проблема е че в момента работи само ако потребител си изпрати сам покана, което е пълна глупост. Трябва ми начин да прехвърлям тея променливи между сесиите или някак си да са достъпни до всички останали потребителски сесии.

Уточнавам, няма как да пращам данни с ПОСТ и ГЕТ защото действието на формата е към страницата с чата а не към основния сайт
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Пренасяна на променлива между сесии
« Отговор #1 -: Apr 22, 2010, 18:45 »
От сесия в сесия до сега не съм успял да прехвърля променливи директно.
Какво съм правил при подобна ситуация:
Потребител 1 и потребител 2 имат свои сесии.
Страницата която им се показва я инициялизирам да се възобновява на 30 секунди (може и по малко но зависи от връзката но не по-малко от 5).
1 праща покана, при което се създава един временен файл (примерно, може и запис в база).
На потребител 2 като възобновява страницата, проверява дали името му го има в временният запис, ако го има се променят сесийните му променливи и този запис се изтрива, там се изпълнява каквото е нужно ....

Може да има и по мъдро решение но не съм го открил. Все пак пряк достъп между сесии е малко опасно.. Една грешка на програмиста и цяла сесия с грешни параметри (па може и да разбереш нещо тайничко, я парола я нещо друго).
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

Naka

  • Напреднали
  • *****
  • Публикации: 3397
    • Профил
Re: Пренасяна на променлива между сесии
« Отговор #2 -: Apr 22, 2010, 18:55 »
Преди време питах за подобно нещо в един друг форум
http://forums.bgdev.org/index.php?showtopic=24669&hl=%E4%EE%F1%F2%FA%EF+%F1%E5%F1%E8%FF

Трябва да прехвърляш данните през нещо междинно, БД, Файл...
Но през файл предполагам че ще стане много дебело. Много юзери ще прябва да пишат във файла, ще трябва да го заключваш, да го почистваш ...... :( Много сложно ще бъде.

Какви данни трябва да прехвърляш? Само име ли или повече неща?

« Последна редакция: Apr 22, 2010, 19:15 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Пренасяна на променлива между сесии
« Отговор #3 -: Apr 23, 2010, 00:17 »
Честно казано, не можах да рабера какво точно се търси, но ми се струва, че решение със споделена памет ще свърши някаква работа:
http://php.net/manual/en/book.shmop.php

Ако правилно съм разбрал (в този час и на този брой ракии) се търси решение за "обща" (глобална) сесия - набор от променливи, които са общодостъпни (от всички скриптове) за четене и писане и запазват състоянието си между отделните заявки независимо от кой потребител са направени.

Мисля, че имаше нещо подобно в ASP - globals май се наричаше.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P