Jump to content
php.lv forumi

Lietotāju reģistrēšana ar apstiprinājuma mailu


Toms

Recommended Posts

Nevajag zināt, kā to uzkodēt. Vajag zināt, kāds ir labākais/vēlamais veids, kādā nodrošināt lietotāja reģistrāciju ar unikāla lika palīdzību.

 

Reāls piemērs - draugiem.lv reģistrācija. Tev nosūta uzaicinājumu (tjip unikālu linku), Tu uz viņa uzklikšķini un Tevi aizved uz reģistrēšanās lapu. (draugos bik savādāk, bet nu princips līdzīgs)

 

Taatad - tiek uzģenerēts links unikāls, kas saglabājas datubāzē? ar noilgumu teiksim 48 h? Vai kā savādāk... Hmhm...

 

Varbūt ir kāds, kurš veidojis ko līdzīgu?

Link to comment
Share on other sites

nujā liec papildkolonnas - reģistrācijas pieteikuma laiks un unikālais hashs, piem. md5(no email, username, pwd + pieteikuma laiks) tad, ja tiek nodots ar linku hashs, tiek pārbaudīts vai tāds ir db un vai tas nav noildzis + paralēli laiku pa laikam tiek izsaukts process ar DELETE FROM table WHERE pieteikuma_laiks<time()-3600*24*2 (mazāks nekā 48 h atpakaļ)

procesu liek vai nu uz cron (lin) / at (win) dēmonu, vai arī piem. pie citu lietotāju reģistrācijas if (!rand(0,10)) mysql_query('DELETE ...'); //ar varbūtību 10% uzsāks novecojošo ierakstu dzēšanu

Link to comment
Share on other sites

Papildkolonuu lietotaaju tabulaa?

Un tjip nosuutot to unikaalo linku jau izveidot lietotaaja sagatavi?

tjip: | ID | mail | ... | ... | unique hash |

Un ja lietotaajs to unique apstiprina, tad vinju izveido liidz galam (vaards u.c.), jeb ja neapstiprina 48 h laikaa - izdzeesh.

 

Pareizi sapratu?

 

aa, veel nepiecieshama kolonna ar laiku (tjip datetime), lai zinaatu, kurus atsijaat peec taam 48 h?

 

ja?

Link to comment
Share on other sites

Papildjautaajums:

 

Ja man lietotaju tabulaa ir kaadas 50 kolonnas ar dazhaadiem vajadziigiem lielumiem. Pie lietotaaju skaita ap 50 000. aatruma zinjaa iipashi neiespaidos, ne?

 

Negribaas taisiit DB testeeshanai...

Link to comment
Share on other sites

ahā

 

pie reģistrācijas insert into tabula mail, login, laiks, hash

ja lietotājam hash ir, tad viņš ir piereģistrējies, bet neapstiprinājies, pie apstiprināšanas update tabula set hash=tas un tas where lietotaja_id=tas un tas

vai nu arī papildkolonna 1/0 status. un hash-kolonnu var tālāk izmantot arī kad piem. aizmirsta parole, e.g. noģenerē jauno nekodēti, iliek hashu un ja tiek ienākts ar hashu, noģenerēto paroli ieliek vietā jau kā md5 vai nu arī pieprasa ievadīt jaunu. kā nu izvrašenstva pietiek

Link to comment
Share on other sites

Ja man lietotaju tabulaa ir kaadas 50 kolonnas ar dazhaadiem vajadziigiem lielumiem. Pie lietotaaju skaita ap 50 000. aatruma zinjaa iipashi neiespaidos, ne?

nu ja tur netiek glabāts pa 64K katrā, tad varētu būt ok.

ja nē - izmanto horizontālo gla bāšanu, ķip

id|info_tips|value

1|1 | vārds

2|2 | uzvārds

....

Link to comment
Share on other sites

Nuja, tabula:

 

50 ieraksti horizointaali (id,name,surname,pass,mail,vecums, APRAKSTS(veertiiba TEXT ar apmeeram 2000 garu tekstu), apraksts2, u.t.t. liidz 50)

+--+--+ ... --+

| |

+--+--+ ... --+

| |

+--+--+ ... --+

. .

. .

. .

| |

+--+--+ ... --+

 

Un 50 000 ierakstu vertikaali:

2, janka, beerzs, mmanaparole, [email protected], 23, ...

4, fredis, beerzs, mmanaparole, [email protected], 23, ...

...

...

 

 

Shitam buutu jaabuuut OK, vai ne?

Link to comment
Share on other sites

Tas tak ir nepareizi: lietot aprakst1,...apraksts50 kolonnas. Tā ir viena no pazīmēm, ka jāņem 1-n relācija:

useris (id,name,surname)
apraksts(id, usera_id, teksts)

 

Ko īsti tavi +- tur nozīmē saprast nevar. Lieto

 vai 
birkas.
Link to comment
Share on other sites

kewordi: "Entity-Relationship Model" vai "Database Normalization"

A sīkāk:

Ja tevā gadījumā ir šāda tabula

id  vards   apraksts1   apraksts2   apraksts3  
----------------------------------------------
1   janis   janis_a1    janis_a2    janis_a3
2   juris   juris_a1    juris_a2    juris_a3

tad manā ieteiktajā variantā būs šādas tabulas:

users:

id  vards
-------------
1   janis
2   juris

apraksts:

id  user_id     teksts
---------------------------
1   1           janis_a1
2   1           janis_a2
3   1           janis_a3
4   2           juris_a1
5   2           juris_a2
6   2           juris_a3

Link to comment
Share on other sites

tabula 1 lietotāji

id|user|mail...

id|janis|[email protected] ...

 

tabula 2 apraksti

id|lietotaja_id|apraksta_id|apraksta_teksts

1|1| 1| teksts

2|1| 2| teksts

...

 

$result=fetch no select * from lietotaji where user='janis'

echo sākuminfo

 

select * from apraksti where lietotaja_id=$rezult['id']

while ... echo apraksti

Link to comment
Share on other sites

  • 5 months later...

A kā Jūs domājiet vai ir nepieciešama vēl viena tabula teiksim [ar rezervētiem lietotājvārdiem] kuri izdzēšas no tabulas pēc tām pašām 48 stundām ja nav pabeigta piereģistrēšanās??

Lai teiksim ja 1user piereģistrējas ar lietotājvārdu [jānis] ... tātad viņam tika aizsūtīts unikālais links bet to apstiprina un pabeidz savu piereģistrēšanos ... pēc 35 stundām. Bet pa to laiku user2 pierereģistrējas arī ar lietotājvārdu [jānis] bet apstiprināšanas kodu apstiprina ātrāk kā user1 ... Sanāk ka diviem user ir vienādi lietotājvārdi ... ok admin jau spēs atšķirt kurš ir kurš lietotājs bet pārējie foruma dalībnieki neašķirš kurš ir kurš jānis

 

... vai tas ko es te rakstu ir galīgi garām

Link to comment
Share on other sites

×
×
  • Create New...