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:
Immagino che ci sia qualcosa che non va nel file del controllo, ma proprio non riesco a venirne a capo...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 %>

Rispondi quotando