Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Best-practice av rättighets-system i PHP

Utvecklar just nu ett CMS med MVC-principen. Det går ganska bra. Är bara lite osäker på hur jag skall ta och implementera rättighets systemet för olika användar-grupper.

Skall jag lagra rättighets-villkorent som session eller varje gång kontrollera mot MySQL databasen ( Är ju något kanske resurskrävande?) - vilket skulle vara väldigt enkelt då det är DAO.

Vad kan vara bäst att göra?

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

valdermans bild

Cacha dem i sessionen, du vill verkligen inte peta på databasen mer än vad som är absolut nödvändigt.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

dikatlons bild

Okej. Schysst för rådet. Någon annnan som har någon åsikt om tillvägagångs-sätt?

- ARCH LINUX -

ein.anderssons bild

 du skall alltid kolla mot databasen, dock kan du låta databasen köra en memorycache i stället. på så sätt blir användare kickad m.m. så fort du byter lösenord. 

 

<?php

$query = "SELECT password, COUNT(username) as counter FROM accounts WHERE username='". $_SESSION['RID'] ."' AND password='". $_SESSION['password'] ."'"; 

$login = $database->fetch($query);

if ($login[0]['counter'] == 1) {
echo "inloggad"; 
} else {
echo "logga in";
}
 

?>

 

Denna text får användas enligt CCommons BY-ND 2.5 med undantag från att den inte får kopieras, sändas eller distribueras utan att informera mig

valdermans bild

Det där kommer att gå gräsligt långsamt om du har mer finmaskiga permissioner än bara inloggad/inte inloggad. Är det så viktigt att omedelbart kunna kicka användare att det inte duger med att cacha informationen i sessionen och kolla efter uppdateringar, säg, var 10:e minut?

PHP skulle må bra av att ha någon sorts funktion för att manipulera en given session utifrån.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

fredentofts bild

Man kan ju alltid lägga ett lager memcache mellan och ställa frågorna mot den, och då lägga en purge av cachead inloggningsinformation vid relevant skrivning till db.

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Marcuss bild

När jag gör något i PHP som kräver auth / användardata använder jag alltid sessioner. Brukar faktiskt lägga hela användarklassen i en session som uppdateras för varje sidvisning.

Hur prestandakrävande det är vet jag inte, men det förenklar som fan :)

Att konstant koppla till MySQL (även under cachat tillstånd) verkar drygt och onödigt. Jag tror att det går fortare för PHP att läsa direkt från sessionen jmf med att först koppla upp en socket mot databasen. (har dock inte gjort några tester på det)

fredentofts bild

De flesta sidvisningar har väl ändå någon typ av koppling mot databasen så just tiden att ansluta mot db kan man väl oftast bortse från? Sen finns det ju fördelar att köra sessionsdata i databas också (om man kör större klustrad miljö), så att man inte är beroende av att hamna på samma php-host varje gång.
Om man kör via memcache behövs inte heller uppkoppling mot db göras om allt finns i cache. Visst blir koden mer komplex, men det kanske man kan leva med.

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

ein.anderssons bild

 Nja, inte direkt, kör man PDO blir det typ 3 rader kod till, kan nog dom flesta leva med.

Denna text får användas enligt CCommons BY-ND 2.5 med undantag från att den inte får kopieras, sändas eller distribueras utan att informera mig

fredentofts bild

Säkerställer dina 3 rader kod att all påverkad data töms ur cache vid skrivning till db, så att man alltid får korrekt svar från cachen?

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

ein.anderssons bild

 Japp

Denna text får användas enligt CCommons BY-ND 2.5 med undantag från att den inte får kopieras, sändas eller distribueras utan att informera mig

dikatlons bild

Tack så mycket för alla synpunkter. Jag skall ta och göra mera undersökningar i vart och ett utav fallen. Jag har som sagt annars alltid gjort så att jag använt mig av Marcus metod.

- ARCH LINUX -