Just nu i M3-nätverket
Gå till innehåll

Hemligheter i en MySQL-tabell


LarsJohansson

Rekommendera Poster

LarsJohansson

Hej, jag undrar om någon har tips på hur man skulle kunna göra för att begränsa åtkomsten till en MySQL-tabell med hjälp av .htaccess, .htgroups

och .htpasswd.

 

Jag har en tabell med artiklar och vill inte att alla ska kunna läsa alla artiklar. Artiklarna lagras med bland annat rubrik, text, och ett

security-fält och jag visar artiklarna genom att länka till en php-fil, i stil med showarticle.php?id=1

 

Jag har tre användargrupper i .htgroups, "Low", "Medium", "High" som reglerar hur mycket av hemsidan användarna kan se.

 

Jag skulle vilja att användarna endast kommer åt artiklar med samma eller lägre säkerhetsklasificering som deras egen .htgroup-klassning.

High-användare kommer åt allt, Medium-användare bara Medium-artiklar och nedåt, och så vidare.

 

Jag vill helst inte att användarna ska behöva fylla i lösenord varje gång utan det ska skötas automatiskt t.ex. baserat på vilken katalog

html-filen som länkar till showarticle.php ligger i. Klickar man på en länk till en High-klassad artikel på en sida som ligger i en katalog

begränsad till High-användare så ska man alltså komma åt artikeln...

 

Tack för hjälpen!

 

Lars Johansson

Länk till kommentar
Dela på andra webbplatser

I PHP har du tillgång till variabeln $_SERVER["REMOTE_USER"] som visar namnet på den inloggade användaren. Tyvärr går det inte att få tag på gruppen denna tillhör med en liknande variabel.

 

Jag skulle istälelt rekommendera dig att flytta över dina användare och deras lösenord till en MySQL tabell också, istället för att lägga dem i .ht*-filer.

 

Läs användarkommentarerna längst ned på denna sida:

http://se.php.net/manual/en/features.http-auth.php

 

Spara då användarna i tre fält: namn, lösenord och grupp (eller säkerhetsnivå).

 

Sedan är det ju en enkel match att i början av varje sida hämta dessa data ur tabellen, och jämföra med de från artikeltabellen.

 

$res = mysql_query("SELECT artiklar.* FROM användare LEFT JOIN artiklar ON användare.säkerhet = artiklar.säkerhet WHERE användare.namn = '{$användarnamn}' && artiklar.id = '{$_REQUEST["id"]}'");

 

 

Länk till kommentar
Dela på andra webbplatser

LarsJohansson

Tack för hjälpen!

 

Jag borde väl kunna kolla om den inloggade användaren som specificeras i $_SERVER["REMOTE_USER"] finns i rätt grupp genom att helt sonika öppna .htgroups och kolla om användarnamnet står på "rätt" rad i filen.

 

Annars följer jag ditt råd och lägger även lösenorden i MySQL-tabeller.

 

Men tack, tack!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...