Avatar billede bravida Nybegynder
09. december 2006 - 18:11 Der er 11 kommentarer og
1 løsning

Adgang til sider for admin

Det er et CMS program med mysql - php
Sådan er admin opsat i databasen.

id brugernavn password adgang
1  admin_1    1234          1
2  admin_2    1234          2
3  admin_3    1234          3
4  admin_4    1234          4
5  admin_5    1234          5

Der er så oprettet 5 siden hvor der er indsat et stykke php kode.
Side 1 har adgang 1
Side 2 har adgang 2
Side 3 har adgang 3
Side 4 har adgang 4
Side 5 har adgang 5

Hvordan giver jeg eksp. admin_1 adgang til side 1 og 2 og 3

Spørgsmålet har været oprettet før, men blev kørt ud på et sidespor som ikke gav mig nogen mening hvordan man skulle løse dette.

Håber der er en som bedre kan forklare dette step for step.
Avatar billede showsource Seniormester
10. december 2006 - 14:39 #1
Skal vi prøve igen? :O)
Altså, i din DB, har du feltet adgang.
Der står de forskellige værdier, f.eks. har admin_1 1,3,5 i feltet
admin_2 har 1,5

Så KAN du bruge
$find = mysql_query("SELECT * FROM `tabel` WHERE `brugernavn` = '". $_SESSION["brugernavn"] ."' AND `adgang` LIKE '%". intval($_GET["id"]) ."%'") or die (mysql_error());

Og så bruge

if(mysql_num_rows($find) == 1) {
// ok
}else{
// nix
}
Avatar billede showsource Seniormester
10. december 2006 - 14:47 #2
Og du kan også gøre så'n her:

$find = mysql_query("SELECT `adgang` FROM `tabel` WHERE `brugernavn` = '". $_SESSION["brugernavn"] ."'") or die (mysql_error());

    if(mysql_num_rows($find) == 1) {

    $nr = explode(",", mysql_result($find, 0));

        if(in_array($_GET["id"], $nr)) {

            echo"<b>Yes, du har adgang til siden!</b>";

        }else{

            echo"<b>Du har ikke adgang til siden!</b>";

        }
    }
Avatar billede ohs Nybegynder
10. december 2006 - 15:45 #3
showsource: Jeg forklarer lige hvordan jeg helst vil havde det til at virke inden vi kommer for langt.

Alle mine sider (filer) er der indsat et stykke kode som kun giver adgang for den som har tildelt samme nr. Alle siderne har hvert sit tal.

Så er det at jeg vil havde det sådan, at man kan indsætte de tal i feltet adgang som brugere skal havde adgang til. Det er feltet i databasen jeg mener.

Andet skulle der helst ikke gøres for at tildele en bruger diverse adgang.

Mit problem er at hvis jeg indsætter det sådan her 1,2,3 i databasen tager den det som et tal, og ikke som jeg ville som adgang 1 til side 1, adgang 2 til side 2, adgang 3 til side 3, men som adgang 1,2,3 til en side.
Avatar billede showsource Seniormester
10. december 2006 - 18:06 #4
Hvordan definerer du hvilken side en admin prøver at komme ind på?

Altså, du har f.eks. 5 sider, hvordan får du på hver side fat i hvilken side der skal vises?
Avatar billede showsource Seniormester
10. december 2006 - 18:07 #5
De to ex. du har her, kan sagtens bruges med 1,2,3,4,5 gemt i DB

F.eks.

admin_1    adgang indeholder 1,4
admin_2    adgang indeholder 1,2,3,4,5
admin_3    adgang indeholder 2,3
Avatar billede ohs Nybegynder
10. december 2006 - 18:10 #6
Det gør jeg med denne kode på hver side.

<?php
session_start();

require_once('../Connections/cms.php');

$user = $_SESSION['MM_Username'];
$query = mysql_query("select * from brugere WHERE brugernavn = '$user'") or die (mysql_error());
$row=mysql_fetch_array($query);

if ($row['adgang'] != "1") {
echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>";
exit;
}else{
}
?>
Avatar billede showsource Seniormester
10. december 2006 - 18:37 #7
Så bruger du:

<?php
session_start();

require_once('../Connections/cms.php');

$user = $_SESSION['MM_Username'];
$query = mysql_query("select * from brugere WHERE brugernavn = '$user'") or die (mysql_error());
$row=mysql_fetch_array($query);
$nr = explode(",", $row['adgang']); // Du har nu et array, med de forskellige tal
if (!in_array(1, $nr)) {
echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>";
exit;
}else{
}
?>

Men hvor du så får 1-tallet fra ved jeg ikke?
Avatar billede bravida Nybegynder
10. december 2006 - 18:49 #8
Koden som er indsat på diverse sider skal der ikke laves om på, da den er indsat i 78 filer. Så må jeg finde på en anden løsning at løse det på.
Avatar billede showsource Seniormester
10. december 2006 - 20:06 #9
78 sider?

Well, hvis jeg var dig, ville jeg nu bruge tiden på at ændre dem!
Bruger selv notepad+ til at skrive kode, og som så mange andre editorer er der muligheden for at åbne en masse filer, og bruge søg/erstat.
Altså, har du skrevet samme kode i starten af alle filer, så tager det ikke mere end 5 min. at ændre alle!

Og så ville jeg lave en funktion som kaldes på alle sider!
(bare jeg skal skrive det samme i to forskellige docs, så laver jeg det til en funktion)

I dit ex. f.eks. :


<?php

function tjek_rettigheder($var) {

$query = mysql_query("SELECT * FROM `brugere` WHERE `brugernavn` = '". $_SESSION["MM_Username"] ."'");

    if(mysql_num_rows($query) == 1) { // fandt en række med brugernavnet

    $row = mysql_fetch_array($query);
    $nr = explode(",", $row["adgang"]);

        if (in_array($var, $nr)) {
        return $row; // Jow, den er go' nok, så returner $row
        }

    }

return false; // Nix, enten var der flere rows, eller $var er ikke i array'et $nr

}

?>


I dit doc kan du så bruge:

<?php

session_start();

require_once('../Connections/cms.php');

    if(false == tjek_rettigheder(1)) {

    echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>";
    exit;

    }else{

//  resten af siden

    }


?>
Avatar billede ohs Nybegynder
10. december 2006 - 20:42 #10
Kan du indsætte rettelsen i min kode som der skal indsættes.
Avatar billede showsource Seniormester
10. december 2006 - 20:47 #11
johh, det er jo faktisk lavet...

Men hvordan du gemmer en fnction ved jeg ikke.
Du kan jo evt. putte den ind i cms.php, den includer du jo på hver side hvor du connecter.
Avatar billede bravida Nybegynder
12. december 2006 - 21:49 #12
Lukker tråden efter at der ikke er kommet et svar jeg kunne bruge.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester