Tempo fa cercavo un blog in ASP e alla fine ho scelto DBlog.
Avevo l'esigenza di installare diversi blog sullo stesso sito e con alcune modifiche sono riuscito a raggiungere lo scopo: in un sito ci sono diversi blog.

La struttura è questa:

Per il blog:
miosito -> users e poi nella cartella "users" ci sono tante cartelle quanti sono i blog installati (mario, anna, ecc).

Struttura dei db:
mdb-database -> users e poi nella cartella "users" ci sono tante cartelle quanti sono i blog installati (mario, anna, ecc).

Ogni db ha nome diverso: il blog di mario si chiama mario.mdb, poi c'è anna.mdb, ecc.

In amministrazione di ciascun blog, posso entrare come admin, con tutti i privilegi. Per comodità mia, ho creato in tutti i blog un'utenza di amministrazione con stessa username e stessa password.
Sempre in amministrazione posso entrare come utente "normale" e qui ho creato in ogni db una sola utenza (ovviamente con username e password diverse per i diversi blog).

Riesco a loggarmi sia come amministrazione, sia come utente in tutti i blog.

Ho, però, un problema.
Se faccio il login come mario, nel blog di Mario (users-> mario -> blog -> admin), scopro che dopo essermi fattomi riconoscere come Mario (utente valido per il il blog mario), se provo ad entrare in users -> anna -> blog -> admin, mi riconosce come utente valido anche nel blog di Anna e ho tutti i diritti di Anna. La cosa strana è che nel db di Anna non esiste l'utenza Mario.

Questi sono i campi della tabella "autori" che vengono presi in considerazione per il login:
ID
UserID
Password
Nick
Admin (campo di tipo Yes/No).

Nel DBlog, la password viene criptata con un algoritmo SHA-1.

Questo è lo script che fa il controllo:
codice:
<%
	'dBlog 2.0 CMS Open Source
	'Versione file 2.0.0
%>




<%
	Dim SQLAutori, RSAutori, FUserID, FPassword

	FUserID = Request.Form("UserID")
	FPassword = Request.Form("Password")

	If FUserID <> "" AND FPassword <> "" Then
		SQLAutori = " SELECT [Nick], [UserID], [Password], [Admin] FROM [Autori] WHERE [UserID] = '"& ControlloSQLInjection(FUserID) &"' "
		Set RSAutori = Server.CreateObject("ADODB.Recordset")
		RSAutori.Open SQLAutori, Conn, 1, 3

		If NOT RSAutori.EOF Then
			RSAutori.MoveFirst
			If RSAutori("Password") = getSHAPassword(FPassword) Then
				Session("BLOGNick") = RSAutori("Nick")
				Session.TimeOut = 60
				If RSAutori("Admin") = True Then
					Session("BLOGAdmin") = True
				Else
					Session("BLOGAdmin") = False
				End If
				Response.Redirect "default.asp"
			Else
				Session("BLOGNick") = ""
				Session("BLOGAdmin") = False
				Response.Redirect "login.asp"
			End If
		Else
			Session("BLOGNick") = ""
			Session("BLOGAdmin") = False
			Response.Redirect "login.asp"
		End If
	Else
		Session("BLOGNick") = ""
		Session("BLOGAdmin") = False
		Response.Redirect "login.asp"
	End If
%>
<%
	Set RSAutori = Nothing

	Conn.Close
	Set Conn = Nothing
%>
Immagino che ci sia qualcosa che non va nel file del controllo, ma proprio non riesco a venirne a capo...