Jump to content
php.lv forumi

Login sistema izmantojot datubazes


vaiiii

Recommended Posts

Tātad man ir uztaisīta login sistēma, kur sessijas keys tiek saglabats datubazē un pie katras lapas ielades man izpildas 4 kverijas kas atbild par sesijam

1. COUNT keys no db! keys ir primary

2. Ja 1 kverija atgriez skaitli 1 tad SELECT no online keys info (usera id,pedejas zinas laiks) select pec key

3. update users tabula pec users id, kur id ir primary, tiek atjaunots taims kad pedejo reizi kads action notika(lai citi redz ka online)

4. update sessesijas tabulu, tiek atjaunots laiks kad pedejo reiz actions kads

bet ja users nosuta kadu vestuli tad tiek izpilditas 5 kverijas

visas ieprieksejas un piektaa:

5. update sessijas tabula un tiek ielikts pedejas vestules laiks

 

vai varetu visas siis kverijas saisinat lidz kadam 3? nezaudejot atrdarbibu, vai ari palielinot to?! vai ari man partaisiit ko?

 

EDIT: vai ari neko nevajag labot un viss ir normali?

Edited by vaiiii
Link to comment
Share on other sites

Tātad, ja es taisu otro punktu un ja vins agtriež NULL, tads sanaks ka usera nav, tas man der.

Bet 5. kverija man ir atsevišķi tāpēc, ka pirmās 4 kverijas man ir vienā funkcijā kas atbild par to ielogosanos, un updeitu, ja ielogojies, un ja funkcija atgriež ka lietotajs ir ielogojies un sūta zinu, tad izpildas 5. kverija

 

Man taisit tā:

sesija(...,'$suta_zinu'){

select no sesiju tabulas

 

if(ja nav null un nav vairak kaa viens){

 

if($suta_zinu){

update sesiju tabula (last action,vestule_laiks)

}else{

update sesiju tabula (last action)

}

 

update useru tabula (last action,online)

}

 

}

 

Man sanāk tagad ka izpildisies 3 kverijas kas atbildes tikai par to ka users ir ielogojies, tas ir normāli? nav par daudz?

Edited by vaiiii
Link to comment
Share on other sites

Bet ja tiks taisits inserts, tad bus sesiju tabula jau 2 ieraksti ar tadu sesijas keyu.. un es domaju ka ar katru hitu tiks noslogots vairak serveris, jo tiks ievietots 1 ieraksts ar to key, bet ta ir tikai tas ieraksts vienu reizi, vai ari ja taisu insert, pirms tad tad vajag dzest araa veco ierakstu kur vecs laiks, tad sanaks jau 4 kverijas

kaa var neredzet, jeegu cekot suuta vai nesuuta, tas man ir vajadzigs lai zinatu pedejas vestules laiku, lai varetu izsargaties pret spamu, floodu, kur tas laiks tiktu nemts pirms katras nosutisanas un salidzinats ar atlauto laika intervalu pret laiks-pedejaissutijums!

Link to comment
Share on other sites

http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html

sim neredzu jeegu, man tik un ta vajag pirmo kveriju taisit select jo db glabajas usera_id kurs talak tiek izmantots

un tad kada jega man taisit insert on duplicate ja var update

 

kada jega tad man ir aizstat 2,3 kveriju ar divam insert? tas kaut ko uzlabos atrdarbibaa?

Link to comment
Share on other sites

tu pats vispār saproti ko gribi?

 

if (suta_vestuli)
{
$sql_c[] = ' ,vestules_laiks ';
$sql_v[] = ' ,'.current_time();
$sql_u[] = ' ,vestules_laiks = '.current_time();
}

if (dara_x)
{
$sql_c[] = ' ,x_laiks ';
$sql_v[] = ' ,'.current_time();
$sql_u[] = ' ,x_laiks = '.current_time();
}

insert into user_sessions(user_id, session_id, last_time  '..implode($sql_c).') values($_sess['user_id'], $_sess['sess_id'], current_time()  '. implode($sql_v))
on duplicate key update session_id = $_sess['sess_id']  '.implode($sql_u)

Edited by Delfins
Link to comment
Share on other sites

Ja glabātu sesiju tur pat kur user_id, mierīgi var ar diviem vaicājumiem iztikt - SELECT un UPDATE.

Varbūt pat nav tik kritiski ja last_action laiks glabājas tur pat?

EDIT: nepiefiksēju par to vēstuļu sūtīšanu.

Edited by mounkuls
Link to comment
Share on other sites

×
×
  • Create New...