Avatar billede rdc Nybegynder
26. april 2003 - 15:48 Der er 11 kommentarer og
1 løsning

Admin Login

Hej allesammen


Jeg har et problem. Jeg er igang med at lave admin funktioner til mit brugersystem. Men jeg ved ikke hvordan man gør sådan at systemet, kan kende om det er en admin eller coadmin der logger ind. For admin skal kunne gå ind på den side hvor man kan slette brugere osv. CoAdmin skal kun kunne redigere brugernes profiler, og normale brugere skal ikke kunne noget specielt. Hvordan laver jeg et sådan "level" script?

PS: Mit brugersystem kører på MySQL, tabellen hvor brugerne ligger hedder users.
Avatar billede schaefner Juniormester
26. april 2003 - 15:49 #1
Du kunne tilføje et felt i din tabel som hedder status. Hvis den er lig med 1 er man bruger, 2 er man coadmin og 3 så er man admin. Den værdi kan du så gemme i en session og så tjekke på de forskellige sider hvad man må se/gøre.
Avatar billede rdc Nybegynder
26. april 2003 - 15:54 #2
schaefner, det du skriver er "sort" for mig. Vil du ikke prøve på at lave et eksempel, så ser jeg om jeg kan lave resten.
Avatar billede schaefner Juniormester
26. april 2003 - 16:00 #3
I din tabel i databasen tilføjer du et felt der hedder status.
Når folk logger ind, så laver du vel nogle sessions med brugernavn og deslign.
Der laver du også en session der ser nogenlunde sådan her ud:

$_SESSION['status'] = $row[status];
$row[status] indeholder så den status på den bruger der logger ind

Så kan du tjekke således
<?php
if($_SESSION['status'] == 3) {
echo "Das admin";
}
?>
Avatar billede schaefner Juniormester
26. april 2003 - 16:00 #4
Kan godt være det er endnu mere sort, men jeg gør mit bedste :)
Avatar billede rdc Nybegynder
26. april 2003 - 16:04 #5
Jamen jeg forstår ikke helt hvor der er jeg skal sætte det her ind:

$_SESSION['status'] = $row[status];
$row[status] indeholder så den status på den bruger der logger ind

og hvor jeg skal sætte det her ind:

$_SESSION['status'] = $row[status];
$row[status] indeholder så den status på den bruger der logger ind


Nu når du skriver felt: mener du så tabel? hvis ja, hvilke egenskaber skal tabellen have?
Avatar billede rdc Nybegynder
26. april 2003 - 16:05 #6
ups, jeg mente:

Jamen jeg forstår ikke helt hvor der er jeg skal sætte det her ind:

$_SESSION['status'] = $row[status];
$row[status] indeholder så den status på den bruger der logger ind

og hvor jeg skal sætte det her ind:

<?php
if($_SESSION['status'] == 3) {
echo "Das admin";
}
?>

Nu når du skriver felt: mener du så tabel? hvis ja, hvilke egenskaber skal tabellen have?
Avatar billede rdc Nybegynder
26. april 2003 - 16:05 #7
forresten kan du ikke logge ind på icq, så kan du nemmere hjælpe.
Avatar billede schaefner Juniormester
26. april 2003 - 16:08 #8
Noget ala det her:

<?php
$check = mysq_query("SELECT status FROM users WHERE brugernavn='$_POST[navn]' AND password='$_POST[password]'") or die(mysql_error());
if(mysql_num_rows($check) == 1) {
  $row = mysql_fetch_array($check);
  // Laver tre sessions med brugernavn, kodeord og status.
  $_SESSION['status'] = $row[status];
  $_SESSION['navn'] = $_POST['navn'];
  $_SESSION['password'] = $_POST['password'];
  header("location: loggetind.php");
} else{
  echo "Password og brugernavn stemte ikke overens";
}
?>

Håber du kan se i ideén.

I din tabel "users" tilføjer du et felt kaldet status og sætter type til tinyint.
Avatar billede rdc Nybegynder
26. april 2003 - 16:27 #9
Faktisk så forstår jeg det ikke. Vil du se kildefilen af login.php?
Avatar billede schaefner Juniormester
26. april 2003 - 16:31 #10
ja
Avatar billede rdc Nybegynder
26. april 2003 - 16:34 #11
Den ser sådan her ud:
<?

if ($action == "login"){

    $id = GetID();

    $sesid = GetSESID();

    $opret_nick = TjekNick($nick);

    if ($opret_nick == no){

        print "Dit nick er enten for kort(3tegn) eller for langt(16tegn)<br><br>";

    }

    else {

        $ip = $REMOTE_ADDR;

        $nick = OrdneNick($nick);

        $nick1 = addslashes($nick);

        $pass1 = addslashes($pass);

        $login = login($id,$sesid,$nick1,$pass1,$ip);

        if ($login == ok){?>

            <META HTTP-EQUIV="Refresh" CONTENT="0; URL=inde.php?id=<?echo $id;?>&sesid=<?echo $sesid;?>" target=_self>

        <?

        }

        else {

            print "$msg<br>";

        }

    }

}

else {

?>

<br><br><br><br><form name="form1" method="post" action="<? print "$PHP_SELF";?>" target="_parent">

<table align="center">
  <tr>
    <td><small>Brugernavn :</small></td>
    <td width="120"><input type="text" name="nick"></td>
  </tr>
  <tr>
    <td><small>Password :</small></td>
    <td width="100"><input type="password" name="pass"></td>
  </tr>
  <tr>
    <td><input type="hidden" name="action" value="login"><input type="submit" name="Login-knap" value="Log ind"></td>
  </tr>
  </table>
</form>
<table align="middle">
<tr>
<td><small>Ingen Bruger? <a href=?side=opret target=_self>Opret en her</a>!<br></small></td>
</tr>
<tr>
<td><small>Har du glemt dit password? <a href=?side=glemt_kode target=_self>Så kan du få det her</a>!</small></td></tr></table><br><br><br><br>

<?

}

?>
Avatar billede rdc Nybegynder
08. september 2003 - 20:41 #12
lukker
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