Avatar billede djicep Nybegynder
27. november 2006 - 18:14 Der er 48 kommentarer og
1 løsning

Angående sessions

Hejsa Eksperter.

Er stadig på begynder stadiet af PHP og leger lidt med sessions.
Mit spørgsmål er så om jeg kan få en side til at gå ind og tjekke session[admin] om den står til 0, 1 eller 2 i en db hvor den så gerne skulle vise det der har med 0 og 1 og 2 at gøre. f.eks 2 er Admin, 1 er Co-admin og 0 er alm bruger.

Håber i forstår mit spørgsmål og evt. kan hjælpe mig?

På forhånd tak
Avatar billede djicep Nybegynder
27. november 2006 - 18:16 #1
f.eks at hvis værdien i DB er større en 0 skal den vise en admin menu. men jeg kan sQ ikke finde ud af det sessions værk og hvordan det virker helt
Avatar billede jens12 Nybegynder
27. november 2006 - 18:19 #2
Mit bud er dette her,hvis jeg forstår dig korrekt.
<? if($_SESSION[admin] == "1"){ ?>
// vis admin menu
<? }else if($_SESSION[admin] == "2"){ ?>
//vis co-admin
<?
}else{
?>
Du har ikke adgang til admin sektionen!
<?
}
?>
Avatar billede djicep Nybegynder
27. november 2006 - 18:34 #3
Ahhh okay

Men hvordan ved session den skal gå i min DB og finde informationen ?? Det er det jeg mener ?? :P
Avatar billede djicep Nybegynder
27. november 2006 - 18:35 #4
Men ja du har fat i nået
Avatar billede intenz Novice
27. november 2006 - 18:46 #5
Det kommer jo lidt an på hvordan dine mysql tabeller er sat sammen.

Men noget i stil med:
$res = mysql_query("select * from TABEL"); // hvor tabel er din tabel med admin adgang
$row = mysql_fetch_assoc($res);

$admin_session = $_SESSION['admin']; // admin værdien sat i session
$admin_database = $row['admin']; // admin værdien sat i databasen

// gør noget her


Jeg kan ikke helt lure hvad du vil have den skal gøre, men det her giver dig måske en ide til det.
Avatar billede intenz Novice
27. november 2006 - 18:47 #6
Måske dette her:
$res = mysql_query("select * from TABEL where admin='$_SESSION['admin']'"); // finder det i tabellen hvor admin er den værdi der er sat i session
Avatar billede intenz Novice
27. november 2006 - 18:48 #7
Den giver dig nok en fejl, prøv den her i stedet:

$admin_session = $_SESSION['admin'];
$res = mysql_query("select * from TABEL where admin='$admin_session'"); // finder det i tabellen hvor admin er den værdi der er sat i session
Avatar billede djicep Nybegynder
27. november 2006 - 18:51 #8
ARGH ved ikke rigtigt hvordan jeg kan forklare det anderledes.. Altså jens12 har fat i nået af det rigtige til siderne, men $_SESSION[admin]; skal jo gå ind og se i DB for den enkelte bruger om han enten har 0,1 eller 2 stående i den der hedder admin i brugere.

Håber du forstår intenz
Avatar billede djicep Nybegynder
27. november 2006 - 18:57 #9
oki den giver ikke fejl den du har skrevet den giver bare ikke resultat.
Avatar billede intenz Novice
27. november 2006 - 19:00 #10
$_SESSION['admin']; kan ikke selv gå ind og se hvad brugerens admin er. Du skal bruge den jeg skrev til sidst:

$admin_session = $_SESSION['admin'];
$res = mysql_query("select * from brugere where brugernavn='$brugernavn' admin='$admin_session'");
$num = mysql_num_rows($res);

if ($num == 0) {
// brugeren har ikke den adgang der er i $_SESSION['admin'];
} else {
// brugeren har adgang
}

brugernavn='$brugernavn' er så hvor du finder brugernavnet hvor du skal se hvad admin er sat til. Jeg ved ikke hvad den hedder i din tabel.

Den ser om brugeren har den adgang der er sat i $_SESSION['admin'];


Hvis du bare vil se hvilken adgang brugeren har, skal du bruge:
$res = mysql_query("select admin from brugere brugernavn='$brugernavn'");
$row = mysql_fetch_assoc($res);
$admin_database = $row['admin']; // admin værdien sat i databasen

$admin_database indeholder så den adgang brugeren har i databasen
Avatar billede djicep Nybegynder
27. november 2006 - 19:01 #11
Sådan her ser koderne ud:
$admin_session = $_SESSION['admin'];
$res = mysql_query("SELECT * FROM brugere WHERE admin='$admin_session'"); //

<? if($_SESSION[admin] == "1"){ ?>
// vis admin menu
<? }else if($_SESSION[admin] == "2"){ ?>
//vis co-admin
<?
}else{
?>
Du har ikke adgang til admin sektionen!
<?
}
?>

Men jeg mangler sikkert et eller andet ?? Siden den ikke giver nået som helst
Avatar billede djicep Nybegynder
27. november 2006 - 19:08 #12
oki den fatter jeg ikke helt
Avatar billede djicep Nybegynder
27. november 2006 - 19:09 #13
Jeg vil ha det sådan på den side jeg har lavet. At hvis brugeren har nr 2 i admin- så skal den vise et billede som linker til en admin side. hvis brugeren har 1 skal den linke og vise billede fra Co-Admin siden og hvis der er 0 eller hvis der ingenting står skal den ikke vise nået ??
Avatar billede intenz Novice
27. november 2006 - 19:09 #14
Har du allerede hævet session ud af databasen en gang og gemt den i $_SESSION['admin']; ?
Avatar billede djicep Nybegynder
27. november 2006 - 19:10 #15
fra co-admin = til co-admin
Avatar billede intenz Novice
27. november 2006 - 19:11 #16
okay, når brugeren er logget ind, må du have hans brugernavn et sted, ikk?
f.eks.
$brugernavn = "et_eller_andet";

Hvad hedder det felt i databasen hvor brugernavnet er gemt?
Avatar billede djicep Nybegynder
27. november 2006 - 19:11 #17
Nope...

Du får lige hele min side så håber jeg du kan se hvad det er jeg vil:

<? include("head.php"); ?>
<br />
<h3>
<?
    if( isset($_SESSION[nick]) )
    {
        echo "<b>$_SESSION[nick]'s</b> Hjem: ";   
    }

    $admin_session = $_SESSION['admin'];
    $res = mysql_query("SELECT * brugere WHERE userNick='$userNick' admin='$admin_session'");
    $num = mysql_num_rows($res);

?>

</h3><br />
Her på denne side kan du finde alt der har med din profil at gøre!<br /><br />
<table height="90" width="550" id="profil" cellspacing="0" cellpadding="0">
    <tr>
        <td width=110 class=myprof><center><a href="profil.php"><img src="pix/profil.gif"></a></center></td>
        <td width=110 class=myprof><center><a href="changeprofile.php"><img src="pix/changeprofile.gif"></a></center></td>
        <td widht=110 class=myprof><center><a href="galleri.php"><img src="pix/galleri.gif"></a></center></td>
        <td widht=110 class=myprof><center><a href="profil.php"><img src="pix/privatgal.gif"></a></center></td>
        <td widht=110 class=myprof><center><a href="profil.php"><img src="pix/favorit.gif"></a></center></td>
    </tr>
    <tr>
        <td widht=110 class=myprof><center><a href="profil.php">Min Profil</a></center></td>
        <td widht=110 class=myprof><center><a href="changeprofile.php">Ændre Profil</a></center></td>
        <td widht=110 class=myprof><center><a href="galleri.php">Galleri</a></center></td>
        <td widht=110 class=myprof><center><a href="privatgal.php">Privat Galleri</a></center></td>
        <td widht=110 class=myprof><center><a href="favorit.php">Favorit Liste</a></center></td>
    </tr>
</table>
<br />
<table height="90" width="550" id="profil" cellspacing="0" cellpadding="0">
    <tr>
        <td width=110 class=myprof><center><a href="filter.php"><img src="pix/filter.gif"></a></center></td>
        <td width=110 class=myprof><center><a href="changelayout.php"><img src="pix/layout.gif"></a></center></td>
        <td widht=110 class=myprof><center><a href="help.php"><img src="pix/sporg.gif"></a></center></td>
        <td widht=110 class=myprof><center><a href="soeg.php"><img src="pix/soeg.gif"></a></center></td>
        <td widht=110 class=myprof><center><a href="forum.php"><img src="pix/forum.gif"></a></center></td>
    </tr>
    <tr>
        <td widht=110 class=myprof><center><a href="filter.php">Filter</a></center></td>
        <td widht=110 class=myprof><center><a href="changelayout.php">Ændre Layout</a></center></td>
        <td widht=110 class=myprof><center><a href="help.php">Spørgsmål og Svar</a></center></td>
        <td widht=110 class=myprof><center><a href="soeg.php">Søg Brugere</a></center></td>
        <td widht=110 class=myprof><center><a href="forum.php">Forum</a></center></td>
    </tr>
</table>
<br />
<table height="90" width="550" id="profil" cellspacing="0" cellpadding="0">
    <tr>
        <td width=110 class=myprof><center><a href="post.php"><img src="pix/mail.gif"></a></td>
        <td widht=110 class=myprof><center><a href="deluser.php"><img src="pix/deluser.gif"></a></center></td>
        <td widht=110 class=myprof><center><? if($_SESSION[admin] == "2"){ ?>
                        <a href="admin/admin.php"><img src="pix/admin.gif"></a>
                        <? }else if($_SESSION[admin] == "1"){ ?>
                        <a href="admin/admin.php"><img src="pix/admin.gif"></a>
                        <?
                        }else{
                        ?>
                        <img src="pix/huhu.gif">
                        <?
                        }
                        ?></center></td>
        <td widht=110 class=myprof></td>
        <td widht=110 class=myprof></td>
    </tr>
    <tr>
        <td widht=110 class=myprof><center><a href="post.php">Post</a></center></td>
        <td widht=110 class=myprof><center><a href="deluser.php">Slet Bruger</a></center></td>
        <td widht=110 class=myprof><center><? if($_SESSION[admin] == "2"){ ?>
                        <a href="admin/admin.php">Admin</a>
                        <? }else if($_SESSION[admin] == "1"){ ?>
                        <a href="admin/admin.php">Co-Admin</a>
                        <?
                        }else{
                        ?>
                        <?
                        }
                        ?></td>
        <td widht=110 class=myprof><img src="pix/huhu.gif"></td>
        <td widht=110 class=myprof><img src="pix/huhu.gif"></td>
    </tr>
</table>
<? include("foot.php"); ?>
Avatar billede intenz Novice
27. november 2006 - 19:14 #18
Ja det kan jeg godt se.

Har du en fil der laver et logind, altså hvor brugeren logger ind så du kan se hvem det er?
Avatar billede intenz Novice
27. november 2006 - 19:15 #19
skriv lige koden til den også
Avatar billede djicep Nybegynder
27. november 2006 - 19:16 #20
Ja jeg er logget ind med min bruger lige nu, jeg vil bare ha at hvis du er admin eller co-admin skal du kunne se det link der linker til admin siden.
Avatar billede djicep Nybegynder
27. november 2006 - 19:17 #21
function loginUser($nick, $pass)
    {
        $nick = addslashes($nick);
        $pass = addslashes($pass);
       
        $ip = $_SERVER[REMOTE_ADDR];
       
        $bRes = mysql_query("SELECT ip, bantime FROM brugerbans WHERE ip='".$ip."'");
       
        if( mysql_num_rows($bRes) == 1 )
        {
            $bRes = mysql_fetch_array($bRes);
            $nu = time();
            $tLeft = $bRes[bantime]-$nu;
            header("Location: fejl.php?str=Du er bannet!<br>Tid tilbage: ".dTime($tLeft));
            exit;
        }
       
        $res = mysql_query("SELECT userNick, userId FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'");
       
        if( mysql_num_rows($res) )
        {
            $uRow = mysql_fetch_array($res);
           
            $bRes = mysql_query("SELECT userId, bantime FROM brugerbans WHERE userId='".$uRow[userId]."'");
       
            if( mysql_num_rows($bRes) == 1 )
            {
                $bRes = mysql_fetch_array($bRes);
                $nu = time();
                $tLeft = $bRes[bantime]-$nu;
                header("Location: fejl.php?str=Du er bannet!<br>Tid tilbage: ".dTime($tLeft));
                exit;
            }
           
            mysql_query("UPDATE brugere SET lastLogin='".time()."' WHERE userId=".$uRow[userId]."") or die(mysql_error());
           
            $_SESSION[nick] = $uRow[userNick];
            $_SESSION[userId] = $uRow[userId];
           
            header("Location: hjemmeside/index.php");   
        }
               
        else
        {
            header("Location: fejl.php?str=Forkert login!");
        }
    }
Avatar billede intenz Novice
27. november 2006 - 19:17 #22
Det er jeg med på, men hvis jeg kan se den kode du bruger til at logge ind, kan jeg skrive det ind på den som gør at sessions vil virke
Avatar billede intenz Novice
27. november 2006 - 19:21 #23
Okay.

I logind filen ændrer du:
$res = mysql_query("SELECT userNick, userId FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'");

til

$res = mysql_query("SELECT userNick, userId, admin FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'");


Og:
$_SESSION[nick] = $uRow[userNick];
$_SESSION[userId] = $uRow[userId];

til:
$_SESSION[nick] = $uRow[userNick];
$_SESSION[userId] = $uRow[userId];
$_SESSION[admin] = $uRow[admin];


Det gør at du gemmer admin til din session.


I din "side" fil, fjerner du:
    $admin_session = $_SESSION['admin'];
    $res = mysql_query("SELECT * brugere WHERE userNick='$userNick' admin='$admin_session'");
    $num = mysql_num_rows($res);
Avatar billede djicep Nybegynder
27. november 2006 - 19:24 #24
Så er det gjort. Uden fejl men stadig ikke med nået resultat
Avatar billede djicep Nybegynder
27. november 2006 - 19:29 #25
Altså jeg har valgt jeg er 2 i admin og der burde jo være kommet et billede plus et link til admin siden, men den er ikke kommet, det er det jeg mener med uden resultat
Avatar billede intenz Novice
27. november 2006 - 19:31 #26
Okay, et par ting.

Du er sikker på du er logget ind?
Skriver den "<b>$_SESSION[nick]'s</b> Hjem: "
når du er logget ind?

Det kan være du ikke har startet din session, indsæt:
<?
session_start();
?>

øverst i head.php

Den fil der kalder functionen skal også have den kode øverst, hvis ikke:
<? include("head.php"); ?>
står der i forvejen.

Og ændre:
function loginUser($nick, $pass)
    {

til:
function loginUser($nick, $pass)
    {
global $_SESSION[nick], $_SESSION[userId], $_SESSION[admin];


Jeg ved ikke om det betyder noget, med prøv det
Avatar billede djicep Nybegynder
27. november 2006 - 19:34 #27
Ja den skriver brugernavns hjem så session er startet ??Skal jeg stadig sætte global ind ??
Avatar billede simplus Nybegynder
27. november 2006 - 19:35 #28
Nu har jeg ikke gidet læse hele tråden, men jeg formoder at du har en session ved navn 'admin' og du skal ved hjælp af if statements finde ud af hvad brugeren skal have adgang til. Værdierne hentes fra databasen..

Dette kunne være et bud:

<?php
session_start();

$user = mysql_real_escape_string($_SESSION[admin]);

$sql = mysql_query("SELECT * FROM database WHERE brugernavn = '$user'") or die(mysql_error());
$row=mysql_fetch_array($sql);

$status = $row['status'];

if ($status == "0") {
//alm bruger
}
if ($status == "1") {
//co-admin
}
if ($status == "2") {
//admin
}
?>
Avatar billede djicep Nybegynder
27. november 2006 - 19:35 #29
Og i den der kalder functionerne er settings.php hvor db oplysninger plus session start findes
Avatar billede intenz Novice
27. november 2006 - 19:35 #30
nej, det behøver du ikke mere.

Har du prøvet at logge ud og logge ind igen efter du rettede det jeg skrev sidst
Avatar billede djicep Nybegynder
27. november 2006 - 19:36 #31
Nope det gør jeg lige
Avatar billede intenz Novice
27. november 2006 - 19:36 #32
simplus -> der har vi været ;)
Avatar billede simplus Nybegynder
27. november 2006 - 19:37 #33
Har du prøvet mit djicep?
Avatar billede simplus Nybegynder
27. november 2006 - 19:37 #34
Iorden
Avatar billede djicep Nybegynder
27. november 2006 - 19:37 #35
Oki så kom der fejl nu :P
Avatar billede intenz Novice
27. november 2006 - 19:38 #36
hvilken?
Avatar billede djicep Nybegynder
27. november 2006 - 19:40 #37
function loginUser($nick, $pass)
    {
        $nick = addslashes($nick);
        $pass = addslashes($pass);
       
        $ip = $_SERVER[REMOTE_ADDR];
       
        $bRes = mysql_query("SELECT ip, bantime FROM brugere WHERE ip='".$ip."'");
       
        if( mysql_num_rows($bRes) == 1 )
        {
            $bRes = mysql_fetch_array($bRes);
            $nu = time();
            $tLeft = $bRes[bantime]-$nu;
            header("Location: fejl.php?str=Du er bannet!<br>Tid tilbage: ".dTime($tLeft));
            exit;
        }
       
        $res = mysql_query("SELECT userNick, userId, admin FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'");
       
        Fejlen her  - >if( mysql_num_rows($res) )
        {
            $uRow = mysql_fetch_array($res);
           
            $bRes = mysql_query("SELECT userId, bantime FROM brugerbans WHERE userId='".$uRow[userId]."'");
       
            if( mysql_num_rows($bRes) == 1 )
            {
                $bRes = mysql_fetch_array($bRes);
                $nu = time();
                $tLeft = $bRes[bantime]-$nu;
                header("Location: fejl.php?str=Du er bannet!<br>Tid tilbage: ".dTime($tLeft));
                exit;
            }
           
            mysql_query("UPDATE brugere SET lastLogin='".time()."' WHERE userId=".$uRow[userId]."") or die(mysql_error());
           
            $_SESSION[nick] = $uRow[userNick];
            $_SESSION[userId] = $uRow[userId];
            $_SESSION[admin] = $uRow[admin];
           
            header("Location: hjemmeside/index.php");   
        }
               
        else
        {
            header("Location: fejl.php?str=Forkert login!");
        }
    }
Avatar billede djicep Nybegynder
27. november 2006 - 19:41 #38
mysql_num_rows(): supplied argument is not a valid MySQL result resource in
Avatar billede intenz Novice
27. november 2006 - 19:42 #39
Hvis fejlen ikke var der før, ligger den i det du ændrede her:
$res = mysql_query("SELECT userNick, userId, admin FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'");

Du er sikker på du har et felt der hedder admin i tabellen brugere?
Avatar billede djicep Nybegynder
27. november 2006 - 19:43 #40
Jeps og har ikke gjort andet end det du sagde. og det virkede fint før
Avatar billede intenz Novice
27. november 2006 - 19:43 #41
Og hvis du har, så ændre:
$res = mysql_query("SELECT userNick, userId, admin FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'");

til
$res = mysql_query("SELECT userNick, userId, admin FROM brugere WHERE userNick='".$nick."' AND userPass='".$pass."'") or die(mysql_error());

og se hvilken fejl den så skriver
Avatar billede djicep Nybegynder
27. november 2006 - 19:44 #42
Altså dvs det virkede med login før jeg samme session[admin] ind
Avatar billede intenz Novice
27. november 2006 - 19:45 #43
Og du har fjernet:
$admin_session = $_SESSION['admin'];
$res = mysql_query("SELECT * brugere WHERE userNick='$userNick' admin='$admin_session'");
$num = mysql_num_rows($res);


fra siden?
Avatar billede djicep Nybegynder
27. november 2006 - 19:46 #44
SÅDANNER :P Så virker det sQ.
Avatar billede intenz Novice
27. november 2006 - 19:48 #45
yes! :D
Avatar billede intenz Novice
27. november 2006 - 19:50 #46
Her kommer er svar
Avatar billede djicep Nybegynder
27. november 2006 - 19:50 #47
Super mange tak intenz :)
Avatar billede intenz Novice
27. november 2006 - 19:52 #48
Det er i orden, godt det kom til at virke
Avatar billede djicep Nybegynder
27. november 2006 - 19:56 #49
Jepper :P
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