Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: käyttäjätasot

Sivun loppuun

ViKiNGi [27.12.2009 23:21:25]

#

Nyt sitten tuli mieleen toinen erittäin fiksu kysymys, johon tarvitsen hyvän ajatusmallin

-Miten sivustolle kehittäisitte käyttäjätasot, ajatuksena heittää MySQL-tietokantaan.

tarkoituksena olisi: ei lukua, luku, editointi, julkaisija, pääkäyttäjä

alaryhmiä olisi esim: uutiset, omat tiedot, työvuorot, yms..


Eli miten tuon saisi fiksusti ratkaistua php-koodiin? Lähinnä ajatusmalleja kaipailisin..

Juhko [28.12.2009 01:39:02]

#

Itse ottaisin mallia MediaWikistä, jossa on userrights-niminen taulu, jossa on kaksi saraketta: käyttäjän tunnuksen ID ja perässä ryhmä. Esimerkkitapauksena vaikka käyttäjä 1, joka on jäseninä ryhmissä "bureaucrat" ja "sysop" ja käyttäjä 2, joka on jäsenenä vain ryhmässä "sysop"; näyttäisi tällaiselta:

usergroup
1bureaucrat
1sysop
2sysop

Mikäli ryhmiä on hyvin vähän, voit tehdä jokaiselle oman sarakkeen, jonka arvoksi tulee joko 1 tai 0. Tapauksessa, jossa ryhmiä voidaan lisäillä tai poistella, kannattaa käyttää ensiksi mainittua.

Macro [28.12.2009 10:45:27]

#

Ei sitä varmaan tarvitse erillistä taulua tehdä sille. Riittää, että lisää sarakkeet käyttäjien tauluun. Esimerkkinä taulu voisi näyttää seuraavalta:

idnimitaso
1Pekkapaakayttaja
2Marttinone
3Miisamoderaattori

Itselläni on tietokanta sivulla järjestetty siten, että ne jotka pääsevät sivuja muokkaamaan omaavat käyttäjätason 1. Muut saavat oletuksena arvon 0.

Metabolix [28.12.2009 11:14:42]

#

Itse taas tekisin useammankin taulun:

idnimi
1Pekka
2Liisa
idnimi
1uutiset
2keskustelu
kayttaja_idoikeus_id
11
12
22

Nyt uutissivu voi tarkistaa oikeuden tähän tapaan:

SELECT kayttaja.id
FROM kayttaja
LEFT JOIN kayttaja_oikeus_map ON kayttaja_oikeus_map.kayttaja_id = kayttaja.id
LEFT JOIN oikeus ON kayttaja_oikeus_map.oikeus_id = oikeus.id
WHERE oikeus.nimi = 'uutiset' AND kayttaja.id = 2 -- kirjautuneen id

Rakenteen edut:

Rakenne on idealtaan sama kuin Juhkon mainitsema MediaWikin versio, mutta normalisointi on viety vielä pidemmälle. MediaWikin mallissa ryhmän nimessä on joko kirjoitusvirheriski (tekstikentällä) tai lukumäärärajoitus (enum- tai set-tyypillä). Toki peruskäytössä se 64 vaihtoehtoa yleensä riittää. :)

Juhko [28.12.2009 12:53:27]

#

Macro kirjoitti:

Ei sitä varmaan tarvitse erillistä taulua tehdä sille.

Paitsi jos käyttäjä voi kuulua useampaan ryhmään samanaikaisesti.

Jokotai [30.12.2009 22:50:04]

#

Jokaisella käyttäjällä on oma taulukko jossa on linkit taulukkoihin käyttjän_oikeudet ja käyttäjän_ryhmät. Ja tietenkin on taulukko kaikista käyttäjistä.

Lebe80 [31.12.2009 01:37:37]

#

Jokotai kirjoitti:

Jokaisella käyttäjällä on oma taulukko jossa on linkit taulukkoihin käyttjän_oikeudet ja käyttäjän_ryhmät.

Jokaisella käyttäjällä oma taulu(kko)?

Ei taida olla ihan tietokantojen optimaalista käyttöä....

Jokotai [31.12.2009 12:16:38]

#

Ei mutta pidän olioista ja monimutkaisista tiedosto rakenteista:)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta