Kom ihåg mig?

Admin Permission

Ämnesverktyg Visningsalternativ
Oläst 2013-05-04, 20:05 #1
syx94 syx94 är inte uppkopplad
Hej, jag är ny här.
 
Reg.datum: Jul 2012
Inlägg: 1
syx94 syx94 är inte uppkopplad
Hej, jag är ny här.
 
Reg.datum: Jul 2012
Inlägg: 1
Question Admin Permission

Tjenare!
Visste inte riktigt vart jag skulle posta det här.
Men håller på med en egen hemsida.
Men har kört fast på en grej.

Har följande kod:


PHP-kod:
if(isset($_SESSION['user_id'])) {
$username $_SESSION['user_id'];
$sql mysql_query("SELECT * FROM `users` WHERE username='$username'");
$row mysql_fetch_array($sql);

$group $row['group_id'];

$sql2 mysql_query("SELECT * FROM `group` WHERE id='$group'");
$row2 mysql_fetch_array($sql2);
$flags $row2['flags'];
$flags explode(','$flags);
if(
in_array($flag$flags)) {

echo 
"Här ska admin grejset bara.";

}


Jag har suttit och fundera på om man kan göra en function av det hela istället.

Men fick det inte att fungera, gjorde följande function


PHP-kod:
function admin($flag$content)
{

if(isset(
$_SESSION['user_id'])) {
$username $_SESSION['user_id'];
$sql mysql_query("SELECT * FROM `users` WHERE username='$username'");
$row mysql_fetch_array($sql);

$group $row['group_id'];

$sql2 mysql_query("SELECT * FROM `group` WHERE id='$group'");
$row2 mysql_fetch_array($sql2);
$flags $row2['flags'];
$flags explode(','$flags);
if(
in_array($flag$flags)) {
return 
$content;
}

}



Men då kan man ju inte lägga exempel vis, massa olika koder i $content.
Så nån som har nåt tips?
syx94 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-05-04, 22:17 #2
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 978
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 978
En metod bör vara ansvarig för bara att kolla om användaren är admin (eller för den delen andra rollen i samma metod). Om du sedan ska skriva ut saker beroende av roll, bör det i ditt fall ligga i en annan metod. Från funktionen du har skrivit, så returnernar den content, så du kan lägga till och förändra $content genom att anropa den med $content = admin(..., $content); Men i din funktion modifierar du inte alls content och har ens ingen return om man inte är admin. Resultatet av din kod är helt enkelt otroligt otydlig och väldigt jobbig för andra än programmeraren, eller också för denna efter ett år, att läsa.

Tar man det ett steg längre och strukturerar upp det lite så har du en klass som är ansvarig för autensifiering och därmed rollbestämmande. Denna anropas från controller-nivån och utifrån resultat så har du en annan klass som ansvarar för att hämta mer information beroende på roll (och för det mesta fler klasser för varje typ av information). Sedan skickas all data till ett vy-lager som skriver ut det eller iaf skapar dokumentinnehållet (ofta vill man skriva ut det centralt för att få bra kontroll på headers, felhantering, loggning etc etc).

MVC kallas den generella approachen om det skapar något intresse. Det ger nästan per automatik gör att du får mer lättläslig och straight forward kod överallt, vilket minskar risken för buggar, ökar testbarhet och läsbarhet osv.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 21:59.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017