[ASP] Forum - restricties

Pagina: 1
Acties:

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Ik ben bezig met een forum in ASP voor een sportclub. Nu zijn er meerdere teams die op de site zullen komen. In het forum wil ik niet dat elk team bij elk forum kan komen.

Zo komt er bijvoorbeeld een apart forum voor de senioren etc. Er kan vanuit worden gegaan dat iedere forum bezoeker in een team zit en dus een cookie met het teamid (int) bezit. Mijn database design is als volgt:

Acces tabel 'tb_forums'
{
forumname
..
team_allow
team_restriction
}

Nu ben ik van plan om in de laatste 2 fields een aantal teams neer te zetten die toegang of geen toegang hebben tot het forum. Wat ik wil is door mijn recordset met forums (fora :? ) te loopen en als de gebruiker toegang heeft, dus als zijn team id niet in restriction staat en / of wel in allow, dan een link naar het desbetreffende forum te leggen, anders geen link maar wel de forum naam te laten zien.

Nu is mijn vraag, wat is volgens jullie theoretisch de beste methode om zo efficient mogelijk te kijken of de gebruiker toegang heeft.

- Bijvoorbeeld 1 recordset waarin de laatste 2 fields en het forumnaam field geselecteerd zijn en dan op één of andere manier kijken of zijn team wel of niet in die fields zit... Maar hoe pak ik dit aan.

Stel een user heeft een teamid '1'. In het field allow staat: '4, 10' o.i.d. Als je dan checkt of de gebruiker toegang heeft tot het forum met:

If Instr(sValueFromRs, "1") > 0 Then ...

Dan zou het true zijn, terwijl de gebruiker niet het teamid 4 of 10 bezit....

Ik hoop dat jullie mij verder kunnen helpen.
(Of is mijn db design gewoon klote??)

  • Life-is-party
  • Registratie: Oktober 2000
  • Laatst online: 14-02-2023
ik zou gewoon zeggen (ik heb php ervaring)

IF (teamid == $recorddb[team_restriction] ) { laat link zien }
ELSE { geen link }

Acer TM661LMi - Intel Centrino 1,4 Ghz - 512mb ram - DVD-RW


  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Op zaterdag 03 november 2001 20:56 schreef dombie-dom het volgende:
ik zou gewoon zeggen (ik heb php ervaring)

IF (teamid == $recorddb[team_restriction] ) { laat link zien }
ELSE { geen link }
Ja dat begrijp ik, maar het is geen int in dat field, maar een comma delimited field... Dus als er meerdere teams niet in het forum mogen dan ziet de waarde uit dat field er bijvoorbeeld zo uit: '1,4,10,32' ..

Toch bedankt voor je reactie!

  • Life-is-party
  • Registratie: Oktober 2000
  • Laatst online: 14-02-2023
Op zaterdag 03 november 2001 20:59 schreef UniCache2 het volgende:

[..]

Ja dat begrijp ik, maar het is geen int in dat field, maar een comma delimited field... Dus als er meerdere teams niet in het forum mogen dan ziet de waarde uit dat field er bijvoorbeeld zo uit: '1,4,10,32' ..

Toch bedankt voor je reactie!
Is d'r in asp geen functie dat je kan zeggen. deel de waardes bij de komma's? een soort split functie?

Acer TM661LMi - Intel Centrino 1,4 Ghz - 512mb ram - DVD-RW


  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Op zaterdag 03 november 2001 21:04 schreef dombie-dom het volgende:

[..]

Is d'r in asp geen functie dat je kan zeggen. deel de waardes bij de komma's? een soort split functie?
Inderdaad dat is zo, maar of dat de efficientste manier is weet ik niet...

Dat werkt ter informatie zo:

In ASP zit de Array functie. Hiermee kan je een comma delimited string in een array proppen dus:

aTemp = Array(Rs("forum_restriction"))

Dan door i.d.d. door de array loopen en kijken of het team id er bij zit...

Zo kan het, misschien dat iemand anders nog een manier heeft?

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Ga niet kutten met comma seperated shit, maak een table met:

teams: teamid,captain,teamnaam,etc
teamspelers: spelerid,teamid,login,password,etc
forums: forumid,forumname,etc
forumrestrictie: forumid,teamid,actie

Uiteraard is laatst genoemde table de table waarin alle rechten zijn weergegeven, op moment dat iemand ingelogt is weet je dus zijn teamid, immers, die staat in zelfde row als de user, op moment dat iemand een actie wilt doen kan via 1 query op de table forumrestrictie er achter komen of hij een bepaalde actie mag doen, stel hij wil posten in forum 6, dan krijg een query zoals:

select count(*D from forumrestrictie where forumid=6 and teamid=3 and actie='write'

Als count 1 is dan betekent dat ie het mag, vind ie niks dan mag de actie niet worden uitgevoert. Eventueel zou je in plaats van een teamid ook nog een userid kunnen maken in table forumrestrictie, wil je het echt mooi maken dan zou je nog met groepen van users kunnen werken.

Succes

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Op zaterdag 03 november 2001 21:23 schreef raptorix het volgende:
Ga niet kutten met comma seperated shit, maak een table met:

teams: teamid,captain,teamnaam,etc
teamspelers: spelerid,teamid,login,password,etc
forums: forumid,forumname,etc
forumrestrictie: forumid,teamid,actie

Uiteraard is laatst genoemde table de table waarin alle rechten zijn weergegeven, op moment dat iemand ingelogt is weet je dus zijn teamid, immers, die staat in zelfde row als de user, op moment dat iemand een actie wilt doen kan via 1 query op de table forumrestrictie er achter komen of hij een bepaalde actie mag doen, stel hij wil posten in forum 6, dan krijg een query zoals:

select count(*D from forumrestrictie where forumid=6 and teamid=3 and actie='write'

Als count 1 is dan betekent dat ie het mag, vind ie niks dan mag de actie niet worden uitgevoert. Eventueel zou je in plaats van een teamid ook nog een userid kunnen maken in table forumrestrictie, wil je het echt mooi maken dan zou je nog met groepen van users kunnen werken.

Succes
Dit is wat ik bedoelde, ik kwam er alleen even niet op..

Bedankt!
Pagina: 1