Avatar billede bravida Nybegynder
09. december 2006 - 14:35 Der er 24 kommentarer og
1 løsning

Tildeling af admin mere end et adgangs nr.

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
Avatar billede simplus Nybegynder
09. december 2006 - 14:51 #1
der kan du tildele adgangen i databasen således: 1,2,3 fx også lave en explode som deler strengen ved hvert komma.. så kan du bare tjekke om hver variabel er sat og vupti..

Jeg fixer lige et eksempel..
Avatar billede simplus Nybegynder
09. december 2006 - 14:59 #2
Siden jeg ikke helt ved hvordan du trækker adgang ud fra MySQL så har jeg bare oprettet en variabel ved navn $udtraek... Den skal rettes til noget ala $row[adgangnummer]; den skal så indeholde noget ala 1,2,3 eller 2,3 eller 1,2 fx !

Så skal du bare seperere tallene og fjerne kommaerne, det kan gøres via explode();

<?php
$udtraek = "1,2,3,4,5";

$adgang = explode(",", $udtraek);
echo $adgang[0];
echo "<br>";
echo $adgang[1];
echo "<br>";
echo $adgang[2];
echo "<br>";
echo $adgang[3];
echo "<br>";
echo $adgang[4];
?>
Avatar billede simplus Nybegynder
09. december 2006 - 15:03 #3
Så kan du med en simpel if sætning tjekke om man har adgang:

if ($adgang[0] == 1 && $adgang[1] == 2) {
    echo "du har adgang 1 og 2";
}
Avatar billede bravida Nybegynder
09. december 2006 - 15:13 #4
Har lige prøvet sådan her:

id brugernavn password adgang
1  admin_1    1234          1,2,3

Så kan admin_1 ikke få adgang til nogle sider, kun hvis der står et nr.  ????
Avatar billede simplus Nybegynder
09. december 2006 - 15:39 #5
Så er det fordi du ikke tjekker ordenligt.. Post koden hvori du tjekker om han har adgang.
Avatar billede bravida Nybegynder
09. december 2006 - 15:56 #6
Denne kode er indsat på siden hvor der kræves adgang. Her er det kun admin med adgangs nr. 1 som kan logge ind. Ligeledes er de andre sider oprettet på samme måde, bare med et andet adgangs nr.

Kan man ikke bare tilføje flere adgangs nr. i databasen i feltet adgang for den admin som må få adgang til flere sider.

<?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 simplus Nybegynder
09. december 2006 - 15:58 #7
Jo sagtens, men det kræver at du skriver numrene i databasen.. også er ideen med flere numre egentlig ødelagt hvis du gør det sådan.. så kan du jo så ligeså godt tilføje adgang 6,7,8,9 osv. hvor 6 fx står for adgang 1,2,3... Det er svært at forkare, men kort sagt.. jo det kan du godt..
Avatar billede showsource Seniormester
09. december 2006 - 15:59 #8
En gang mere:

SELECT * FROM tabel WHERE brugernavn = '". $user ."' AND 2 IN (adgang)
Avatar billede bravida Nybegynder
09. december 2006 - 16:02 #9
Jo men det var lige det jeg har prøvet, men så er der ingen adgang.

id brugernavn password adgang
1  admin_1    1234          1,2,3
Avatar billede showsource Seniormester
09. december 2006 - 16:05 #10
Well, det virker her hos mig!
Altså, i feltet adgang, er hvert tal adskilt af et komma,
1,2,3,4,5
Avatar billede simplus Nybegynder
09. december 2006 - 16:10 #11
Har også testet, det virker fint her..
Forklar hvad du har gjort bravida?
Avatar billede bravida Nybegynder
09. december 2006 - 16:14 #12
Det eneste jeg har gjort er at indtaste i feltet adgang for admin_1 i databasen 1,2,3
så troede jeg at admin_1 ville få adgang til de sider hvor der kræves adgang 1 og 2 og 3 men når jeg så prøver at logge ind på en af de 3 sider er der ingen adgang.
Avatar billede simplus Nybegynder
09. december 2006 - 16:21 #13
Ja, det er klart. Du skal jo også bruge den explode jeg viste dig.. samt if sætningen
Avatar billede bravida Nybegynder
09. december 2006 - 16:27 #14
Hvordan vil du at det skal sammensættes med min kode på siden.

<?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
09. december 2006 - 16:36 #15
nåh, sidder sgu også og nosser rundt lige p.t.
Ville lave et hurtigt ex. men det virker selvf. ikke! :O)


<?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);

$tal = explode(",", $row["adgang"]);

if (!in_array($row["adgang"], $tal)) {
echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>";
exit;
}else{

echo"OK";}
?>
Avatar billede showsource Seniormester
09. december 2006 - 16:37 #16
AHHH............

<?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);

$tal = explode(",", $row["adgang"]);

if (!in_array(2, $tal)) {
echo "<p style=\"color: #ff0000; margin: 0px; font-weight: bold;\">Du har ikke adgang hertil</p>";
exit;
}else{

echo"OK";}
?>
Avatar billede bravida Nybegynder
09. december 2006 - 16:41 #17
Er ikke med. Skal den kode erstatte min kode ??
Avatar billede showsource Seniormester
09. december 2006 - 16:45 #18
nåh, der er sgu nok noget jeg har misset!!!!!!!!

Anyway, det her gør det fint nok

<?php
session_start();

$con = @mysql_connect("localhost", "user", "pass") or die ("<b>Fejl ved connect til DB!</b><br />\r\n". mysql_error());
mysql_select_db("bravida", $con) or die ("<b>Fejl ved select af database!</b><br />\r\n".mysql_error());

$_SESSION["user"] = "bravida"; // prøv at ændre navn

for($i = 1; $i < 6; $i++) {
echo"<a href='". $_SERVER["PHP_SELF"] ."?id=". $i ."'>Link ". $i ."</a><br>";

}

if(isset($_GET["id"])) {

$findid = intval($_GET["id"]);

$find = mysql_query("SELECT * FROM `brugere` WHERE brugernavn = '". $_SESSION["user"] ."' AND adgang LIKE '%". intval($_GET["id"]) ."%'") or die (mysql_error());

    if(mysql_num_rows($find) != 0) {
    echo"JOJO, den er go' nok!";
    }else{
    echo"Du har ikke adgang!";
    }

}

?>
Avatar billede showsource Seniormester
09. december 2006 - 16:49 #19
Og så skal det selvf. være:
    if(mysql_num_rows($find) == 1) {
Avatar billede bravida Nybegynder
09. december 2006 - 16:52 #20
Ok nu er jeg total ikke med mere da det nu er kørt ud på et sidespor for mig. Bibeholder min egen kode indtil videre inden jeg kaster mig ud i noget der ikke er helt styr over.
Avatar billede showsource Seniormester
09. december 2006 - 16:59 #21
Det jeg har vist dig, kan du gemme i en fil for sig, og loade i din browser.
Du behøver ikek noget som helst i din eksisterende kode.

Og for så lige at "cleane" koden helt:

<?php
session_start();

$con = mysql_connect("localhost", "user", "pass") or die ("<b>Fejl ved connect til DB!</b><br />\r\n". mysql_error());
mysql_select_db("databasenavn", $con) or die ("<b>Fejl ved select af database!</b><br />\r\n".mysql_error());

$_SESSION["user"] = "admin";

for($i = 1; $i < 6; $i++) {
echo"<a href='". $_SERVER["PHP_SELF"] ."?id=". $i ."'>Link ". $i ."</a><br>";

}

if(isset($_GET["id"])) {

$find = mysql_query("SELECT * FROM `brugere` WHERE `brugernavn` = '". $_SESSION["user"] ."' AND `adgang` LIKE '%". intval($_GET["id"]) ."%'") or die (mysql_error());

    if(mysql_num_rows($find) == 1) {
    echo"JOJO, den er go' nok!";
    }else{
    echo"Du har ikke adgang!";
    }

mysql_free_result($find);

}

?>
Avatar billede bravida Nybegynder
09. december 2006 - 17:11 #22
For at jeg kan forstå dette, skal det tages helt forfra og tages i et afsnit af gangen.

1. afsnit er vedrørende databasen.

For at tildele en admin flere adgange, skal jeg så bare indtaste det sådan i feltet adgang for den admin: 1,2,3
Avatar billede showsource Seniormester
09. december 2006 - 17:42 #23
Hvis man bruger LIKE, søger Mysql efter en match i row'et, så hvordan du genner er så ligemeget.

1,2,4,5
Ups, noget rod! 1 2-4.5

1 2 4 5 vil blive fundet hvis get id er en af dem.

(bortset fra det, er der noget om at lave index på de felter men kikker/søger i med LIKE, men det er så lige noget andet.....)
Avatar billede bravida Nybegynder
09. december 2006 - 17:59 #24
showsource: Bliver nødt til at stoppe tråden her, da jeg ikke forstår dine kommentar, så jeg må starte forfra i en ny tråd hvor en som bedre kan forklare mig hvordan jeg skal gøre.

Kan du forsat havde en god weekend.
Avatar billede bravida Nybegynder
09. december 2006 - 17:59 #25
Lukker tråden.
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