Just nu i M3-nätverket
Jump to content

Hemligheter i en MySQL-tabell


LarsJohansson

Recommended Posts

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

Link to comment
Share on other sites

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"]}'");

 

 

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...