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

Adgang til side med adgangs nr.

Jeg har i min database oprettet 5 brugere med brugernavn, password og adgangs nr.
Hver bruger har ikke samme adgangs nr.

På en side har jeg indsat dette stykke kode som kræver et adgangs nr. for at man kan logge sig ind på 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{
}
?>

Denne side vil jeg gerne give de 5 brugere tilladelse til.

Mit problem er at jeg ikke kan indsætte mere end et angangs nr. i dette felt her.:    if ($row['adgang'] != "1")
Har prøvet dette her: if ($row['adgang'] != "1-2-3-4-5")
Har prøvet dette her: if ($row['adgang'] != "1.2.3.4.5")
Har prøvet dette her: if ($row['adgang'] != "1_2_3_4_5")

I databasen er adgang under datatype sat til varchar
Avatar billede showsource Seniormester
09. december 2006 - 11:17 #1
Og længden på dit felt, "adgang", den er vel kun 1 ???

Troede du havde fået det løst! :O)
Avatar billede showsource Seniormester
09. december 2006 - 11:18 #2
ehh, nu er dte vist mig som læser forkert!
Avatar billede showsource Seniormester
09. december 2006 - 11:19 #3
Hvordan gemmer du tallene i DB'en???
Avatar billede bravida Nybegynder
09. december 2006 - 11:21 #4
varchar er sat til 255
Avatar billede showsource Seniormester
09. december 2006 - 11:23 #5
Hvad får du, hvis du prøver med:
echo $row["adgang"];
???
Avatar billede bravida Nybegynder
09. december 2006 - 11:24 #6
Hvordan gemmer du tallene i DB'en??? Det gør jeg i tabellen brugere.
Avatar billede bravida Nybegynder
09. december 2006 - 11:29 #7
Hvad får du, hvis du prøver med:
echo $row["adgang"];
???

En linjefejl
Avatar billede showsource Seniormester
09. december 2006 - 11:30 #8
Jow, men gemmer du som
1.2.3.4.5
eller
1-2-3-4-5

Og som jeg foreslog tidligere, i andet spm.,
så gem med ,

1,2,3,4,5

og i din query:
"SELECT * FROM brugere WHERE  brugernavn = '". $user ."' AND 1 IN (adgang)"
Avatar billede showsource Seniormester
09. december 2006 - 11:30 #9
en liniefejl???
Avatar billede bravida Nybegynder
09. december 2006 - 11:36 #10
Bliver gemt sådan her i tabellen brugere 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
Avatar billede showsource Seniormester
09. december 2006 - 11:40 #11
ehh, så hver bruger har kun agang til en side?
Avatar billede bravida Nybegynder
09. december 2006 - 11:44 #12
Ja det er rigtig, ville så lave det sådan at en side gang adgang for alle de 5 nummer
som jeg har beskrevet, men kan ikke få det til at virke.
Avatar billede showsource Seniormester
09. december 2006 - 11:50 #13
tror jeg er med nu.
Du vil gerne gi' alle brugere adgang til en bestemt side, mens andre sider er det kun hvad der står i adgang, de har lov til at se?

På den side hvor alle kan kikke, behøver du jo ikke lave noget tjek på hvad adgang indeholder.
Avatar billede bravida Nybegynder
09. december 2006 - 11:53 #14
Jo, da det er en administrator side, er det kun disse brugere som må logge sig ind. Andre som prøver at åbne siden får derved ingen adgang.
Avatar billede bravida Nybegynder
09. december 2006 - 11:55 #15
Eksp. så kunne du jo åbne siden, hvis du kendte adressen, og derfor denne beskyttelse af siden.
Avatar billede showsource Seniormester
09. december 2006 - 12:25 #16
De brugere som ikke må se siden, de har vel intet stående i adgang?
Avatar billede bravida Nybegynder
09. december 2006 - 12:33 #17
Hvis der ikke er beskyttelse på siden, ville alle med adgang til internettet og samtidigt kendte adressen kunne åbne siden.
Avatar billede showsource Seniormester
09. december 2006 - 13:02 #18
hmm, ja, men jeg er ikke lige helt med på hvordan du har bygget det op?
Har hver bruger kun et nr i "adgang"?
Avatar billede simplus Nybegynder
09. december 2006 - 13:04 #19
Hvis almindelige bruger ikke har noget stående i adgang feltet, så kan denne bruges:

<?php
session_start();

$username = $_SESSION['brugernavn'];

$sql = mysql_query("select * from brugere WHERE brugernavn = '$username'") or die(mysql_error());
$row=mysql_fetch_array($sql);
$adgang = $row[adgang];

if ($adgang == "") {
    //ikke adgang
}else{
    //adgang
}
?>

felterne skal så bare lige tilpasses til dine navne
Avatar billede simplus Nybegynder
09. december 2006 - 13:07 #20
Og hvis der nu står noget i feltet adgang ud for en almindelig bruger, så skal du bare indsætte tallet mellem apostrofferne i denne:

if ($adgang == "") {
Avatar billede bravida Nybegynder
09. december 2006 - 13:11 #21
simplus: prøv lige at vise hvordan at du vil give adgang for brugere med din kode som har adgang 1 og op til 5, så kun disse kan åbne siden
Avatar billede simplus Nybegynder
09. december 2006 - 13:19 #22
Nemt nok, det min kode gør er det omvendte. Den tjekker om der _ikke_ står noget i feltet adgang.. hvis ikke der gør det, jamen så har man ikke adgang (dermed er man almindelig bruger) og hvis der står noget så har man adgang..

Men som jeg siger så skal jeg vide hvad der står i feltet adgang ud for almindelige brugere.
Avatar billede bravida Nybegynder
09. december 2006 - 13:27 #23
Ja det kan jeg godt se, men man kan jo til enhver tid gå bagom og åbne siden direkte uden at skulle igennem et login, derfor vil jeg havde dette stykke kode indsat på siden så man derved låser siden total og skal igennem login.
Avatar billede simplus Nybegynder
09. december 2006 - 13:31 #24
Så har du ikke helt forstået koden.. Den søger jo gennem ens session.. dvs at hvis man ikke er logget ind, så finder den heller intet adgangsnummer.. dermed har man ikke adgang til siden.. så simpelt er det.. men hvis du nu så gerne vil have vist en tekst hvor man får at vide at man ikke har adgang, jamen så værsgod:

<?php
session_start();

$username = $_SESSION['brugernavn'];

if ($username == "") {
echo "Du er ikke logget ind, og har derfor ikke adgang til denne side!";
}else{

$sql = mysql_query("select * from brugere WHERE brugernavn = '$username'") or die(mysql_error());
$row=mysql_fetch_array($sql);
$adgang = $row[adgang];

if ($adgang == "") {
    //ikke adgang
}else{
    //adgang
}

}
?>

Og får 3. gang spørger jeg dig: hvad står der i feltet adgang for almindelige brugere?
Avatar billede bravida Nybegynder
09. december 2006 - 13:35 #25
almindelige brugere: det er alle som logger sig på internettet og finder frem til min webside.
Avatar billede simplus Nybegynder
09. december 2006 - 13:37 #26
og hvad med oprettede brugere på din side? går ikke ud fra at du kun har admins :-)
Avatar billede bravida Nybegynder
09. december 2006 - 13:41 #27
simplus: jo det er kun admins som er oprettet. Måske du bedre forstår når jeg fortæller at programmet er et CMS program som jeg har lavet, hvor der er oprettet 5 admin som administrator selv kan bestemme hvad de skal havde adgang til.
Avatar billede simplus Nybegynder
09. december 2006 - 13:42 #28
Aha, perfekt.. Har du prøvet mit eksempel? Hvis du ændre navnene til dine navne så burde det virke.. ellers så kopier lige min kode som du bruger herind!
Avatar billede bravida Nybegynder
09. december 2006 - 13:46 #29
Jeg bruger denne kode her.

<?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 - 13:52 #30
Ja, det er næsten rigtigt. Du skal ikke sige:
if ($row['adgang'] != "1") {
Så tjekker du jo bare om man har adgang nr 1?

Så vidt jeg har forstået skal det spærre adgang for udefra kommene brugere.. dvs hos dem står der intet i feltet adgang.. dit script spærre jo også for admins med adgang nr 2,3,4 og 5

skriv istedet:

if ($row['adgang'] == "") {
Avatar billede bravida Nybegynder
09. december 2006 - 13:57 #31
Ja den spærer adgang udefra, men skulle tillade dem med adgang 1 og 2 og o.s.v adgang
Avatar billede bravida Nybegynder
09. december 2006 - 14:01 #32
tror den er der nu, brugte dette som du skrev: if ($row['adgang'] == "") {

jeg afprøver og tjekker det lige.
Avatar billede bravida Nybegynder
09. december 2006 - 14:06 #33
simplus: ja det virker perfekt, lige som jeg ville havde dette.
Du lægger lige et svar.

Jeg har endnu et spørgsmål som jeg gerne vil om du kunne klare, men opretter det i en ny tråd. Dette har også med admin at gøre.
Avatar billede simplus Nybegynder
09. december 2006 - 14:07 #34
Jeg samler ikke på point, tak.
Avatar billede bravida Nybegynder
09. december 2006 - 14:11 #35
Så lægger jeg disse point oveni næste spørgsmål, men endnu tak for din hjælp.
Avatar billede simplus Nybegynder
09. december 2006 - 14:15 #36
Det var så lidt.
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