Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 2 pytania = sesja + cos jeszcze :)
Forum PHP.pl > Forum > PHP
Arkon
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!
netzah
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"
wallace
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 :-)
scanner
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.
Arkon
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?
Arkon
Moge jeszcze prosic o dokladny przyklad na to session_set_cookie_params?
tsharek
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).
scanner
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]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.