Jump to content
php.lv forumi
Sign in to follow this  
snach15

sessijas

Recommended Posts

webā uzpiežot uz logout tātad dzēšu sessiju un cookieju + kvērijs online uzliek 0 , bet kā lai panāku to pašu kad piemeram sessija tiek pazaudēta? kā lai iedarbina kvēriju ?

Edited by snach15

Share this post


Link to post
Share on other sites
if( !isSet( $_SESSION['user'] ) ) {

// Kverijs.

}

Share this post


Link to post
Share on other sites

Īsti nesapratu ko tu domāji

Cookie Tā var uzlikt

setcookie("username",$user,+9700000)

Bet noņemt

setcookie("username",$user,-9700000)

Seesion var izdzēst

session_destroy();

.

Share this post


Link to post
Share on other sites

tas bija domāts tā .. piemeram es ielagojos portālā , un vnk aizveru browseri ... pēc kāda laika sessija vnk pazudīs ... bet man vajg tā kad ja pazūd sessija tad notiek arī kvērijs .. citādi tie kas aizver portālu un pazaudē sessiju vienalga rādas itkā viņi būtu online bet patiesībā nav ...

Share this post


Link to post
Share on other sites

@gta1151 Cik sapratu, tad Viņam datubāzē glabājās 0 vai 1, attiecīgi - "offline" vai "online". Kad lietotājs aizver pārlūku, sesijas nozūd. Bet ne jau datubāzē! Vieninieks joprojām ir vieninieks. Viņam vajag kaut kā izdarīt tā, ka tiklīdz tiek aizvērts pārlūks - datubāzes info tiek mainīta. Kā? Nu Es devu variantu, ka tiklīdz Viņš atkal atvērs lapu - sesija tiks izdzēsta. Protams, šāds variants nekam neder, jo var sanākt, ka Viņš vairs TO lapu neatvērs nekad, tātad sanāks, ka Viņš "online" būs mūžīgi......... un vēl drusciņ.

 

Variants #2:

 

Ik pēc piecām minūtēm, piemēram, vai arī - ja ir pagājis vairāk par piecām minūtēm, bet joprojām lapa nav apmeklēta (sanāk - tāpat neviens to neuzzinās)... palaižam pieprasījumu, kas attiecīgi maina vieniniekus par nullītēm. Kā? Nu to pats izdomā. Es jau jūtu, ka esmu pārāk daudz "uzdrukājis".

Share this post


Link to post
Share on other sites

snach, pakustini smadzenes.

Vai nevarētu darīt tā, ka tu paskaties, pirms cik ilga laika pēdējo reizi lietotājs ir reģistrēts datubāzē? Un ja tas laiks ir lielāks par, teiksim, 5 minūtēm, tad pieņemam, ka lietotājs ir izlogojies?

Share this post


Link to post
Share on other sites

Vai arī uzliec JS, kas reizi minūtē ( 2ās , 5ās , whatever ) "pingo" serveri + tas ko briedis teica.

Tad tu redzēsi kā online arī tos cilvēkus, kuri vienkārši lapu tur tab'ā atvērtu.

Share this post


Link to post
Share on other sites

Glabā nevis online statusu, bet pēdējās aktivitātes laiku... Pēc tā tad arī var izdomāt, ir viņš online vai nē.

Share this post


Link to post
Share on other sites

custom session handleris(glabājam sesijas DB vai kādā kešošanas mehānismā) un pie sesijas iznīcināšanas izpildām vajadzīgo DB vaicājumu

Share this post


Link to post
Share on other sites

Paskaties manu skriptu

Saglabā
$online = time();
mysql_query("UPDATE lietotaji SET online = 1 AND pedojo_reizi_bijis = $online WHERE id = {$_SESSION['id']}") or die(mysql_error()):

Tagad Dzēsīs ārā
$dzest = time() - 300; //5minūtes
mysql_query("UPDATE lietotaji SET online = 0 WHERE online_laiks < $dzest") or die(mysql_error());

Tu precīzāk nedabūsi.

Share this post


Link to post
Share on other sites

gta1151, liekas ka tu nezini par tādu SQL funkciju kā NOW() ( pieņemu, ka zini tikai mysql ).

Es tikai vel mācos,paldies zināšu.

Edited by gta1151

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...