Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 2 pytania = sesja + cos jeszcze :)
Arkon
post 27.05.2004, 08:49:41
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

Ostrzeżenie: (0%)
-----


Witam. Mam takie pytanko.
Jak ustawić sesje, żeby była widoczna dla wszystkich subdomen i domeny głównej? W tej chwili sesja otwarta na www.domena.pl nie jest juz dostepna na pomoc.domena.pl itp. Oczywiscie cala domena jest moja.
2. Jak w skuteczny sposob mozna sprawdzac czy posty na forum byly przez nas juz czytane. Cos tekiego jak na phpBB. Tak sobie wymyslilem, ze jesli data ostatniego zalogowania byla wczesniej niz napisany post to temat bedzie nie przeczytany. Tylko jak potem oznaczyc go jako przeczytany. Przeciez nie bede robil tabeli z wszystkimi postami i userami a jesli sie juz ktos zaloguje nastepnym arzem to odznaczy wszystkie jako przeczytane sad.gif POMOCY!
Go to the top of the page
+Quote Post
netzah
post 27.05.2004, 10:49:53
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 19.03.2004

Ostrzeżenie: (0%)
-----


Co do subdomen, to trzeba zmienic wlasciwosci cookie, jakie odpowidzialne jest za przezawywanie id sesji, czyli session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure]]]), jako domain podajesz "domena.pl"
Go to the top of the page
+Quote Post
wallace
post 27.05.2004, 12:31:37
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Kraków / Będzin

Ostrzeżenie: (0%)
-----


2. Mozna by zapisywac id tematow, ktore date maja nowsza od ostatniej akcji uzytkownika na forum (oczywiscie nie aktualnego, tylko poprzedniego logowania) przeczytanych przez uzytkownika zapisywac w sesji.
To rozwiazanie teraz mi wpadlo do glowy, aczkolwiek moga byc jakies inne lepsze snitch.gif nie wiem jak jest to rozwiazane np w phpBB. Sam jestem ciekaw :-)


--------------------
chaos to tylko inny rodzaj porządku ... bardziej skomplikowany...
Go to the top of the page
+Quote Post
scanner
post 27.05.2004, 12:46:15
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




1. Zapisz w sesji tablicę wszystkich postów o dacie powstania większej niż ostatnia aktywność usera
2. Wyswietl odpowiedni wątek
3. Dla kazdego postu w wątku sprawdzaj czy jego id istnieje w tablicy
3a. jesli istnieje, usun z tablicy

Przy kazdym odswierzeniu strony dochodza nowe ID do juz istniejacych w sesji. (a niewyswietlocyh)
Wady:[list]To chyba jest najjprostrze.
daje mozliwosci:[list]Nie wiem, czy tak tojest zrobione na phpBB, ale na logike i obserwacje biorąc tak.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Arkon
post 27.05.2004, 16:21:44
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

Ostrzeżenie: (0%)
-----


Ok wielkei dzieki to jeszcze 2 takie pomocnicze pytania. Jak najefektywniej podac czas ostatniej aktywnosci usera?
I drugie.
Zgodnie z zaleceniem scannera.
Powiedzmy ze zapisuje nieczytane watki w bazie danych. Jesli ktos jest zalogowany to w odpowiedniej dla niego tabeli sprawdza dane. Zalozmy ze zapisze je w takiej formie: #id_postu# i potem jesli user wejdzie gdzies gdzie jest cos takeigo wyswietlane to potraktowac to
str_replace("#$id_postu#","",$nieczytane) czy jest jakis lepszy sposob? Albo jak te nie odwiedzone posty trzymac w bazie zeby miec mozliwosc usuwania wszystkich z kategorii tak jak pisal scanner?
Go to the top of the page
+Quote Post
Arkon
post 27.05.2004, 16:33:35
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 12.02.2004

Ostrzeżenie: (0%)
-----


Moge jeszcze prosic o dokladny przyklad na to session_set_cookie_params?
Go to the top of the page
+Quote Post
tsharek
post 27.05.2004, 21:10:54
Post #7





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

Ostrzeżenie: (0%)
-----


Cytat
Powiedzmy ze zapisuje nieczytane watki w bazie danych. Jesli ktos jest zalogowany to w odpowiedniej dla niego tabeli sprawdza dane. Zalozmy ze zapisze je w takiej formie: #id_postu# i potem jesli user wejdzie gdzies gdzie jest cos takeigo wyswietlane to potraktowac to
str_replace("#$id_postu#","",$nieczytane) czy jest jakis lepszy sposob? Albo jak te nie odwiedzone posty  trzymac w bazie zeby miec mozliwosc usuwania wszystkich z kategorii tak jak pisal scanner?


ja bym może zrobił troszke inaczej.. trorzyłbym TABLICE z wartością $id_postu dla postów które są nieprzeczytane (od daty), tą tablice wkłądam do bazy za pomocą funkcji [manual:7a4f528041]serialize[/manual:7a4f528041]. potem jak bym chciał wyciągnąć z bazy danych użyłbym funkcji [manual:7a4f528041]unserialize[/manual:7a4f528041] i jak bym chciał skasować to bym poprostu skasował dany klucz i wartość z tabeli (oczywiście po uprzednim sprawdzeniu czy takowy istnieje).
Go to the top of the page
+Quote Post
scanner
post 28.05.2004, 07:37:59
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
Zgodnie z zaleceniem scannera.
Powiedzmy ze zapisuje nieczytane watki w bazie danych. Jesli ktos jest zalogowany to w odpowiedniej dla niego tabeli sprawdza dane. Zalozmy ze zapisze je w takiej formie: #id_postu# i potem jesli user wejdzie gdzies gdzie jest cos takeigo wyswietlane to potraktowac to
str_replace("#$id_postu#","",$nieczytane) czy jest jakis lepszy sposob? Albo jak te nie odwiedzone posty  trzymac w bazie zeby miec mozliwosc usuwania wszystkich z kategorii tak jak pisal scanner?
Wstęp do implementacji:[php:1:5beb4e5a8e]<?php
// wyciagamy nieczytane posty z bazy:
$resSQLResults = mysql_query( 'SELECT post_id FROM posts WHERE post_date > users.last_activity' );
while( $arrRow = mysql_fetch_row( $resSQLResults ) )
{
$_SESSION['Unreaded'][] = $arrRow['id'];
}


// wyswietlajac posta, robimy taki myk:
$resSQLResults = mysql_query( 'SELECT * FROM posts WHERE .....' );
while( $arrRow = mysql_fetch_row( $resSQLResults ) )
{
// usuwany z tablicy nieprzeczytanych
if( ( $intKey = array_search( $arrRow['post_is'], $_SESSION['Unreaded']) ) !== false )
{
unset( $_SESSION['Unreaded'][$intKey] );
// tutaj mozemy tez wstawic wyswitlenie ikonki przy danym poscie oznaczajacej "nieczytane"
}
}

//Na samym koncu skryptu, zapisujemy nopwy czas aktywnoci jako NOW() smile.gif
?>[/php:1:5beb4e5a8e]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 18:09