Avatar billede -padde- Nybegynder
18. august 2004 - 10:58 Der er 25 kommentarer og
1 løsning

Simpel login m

Hejsa, jeg har et simpelt login script, som er lavet i php og så med bruger i mysql.

Jeg kunne godt tænke mig at have sådan flere niveua...sådan måske

n1 = kan alt
n2 = kan lave nyheder
n3 = kan lave artikler
n4 = kan lave aktiviteter

jeg kan ikke smide mine koder i andet end en zip som jeg håber i vil downloade...jeg kan heller ikke smide dem op på min side, da jeg sidder på Handelsskole hvor der er lukket for ftp adgangen :'(

mine koder ligger (håber jeg) på
http://upit.dk/u/login.zip

Jeg har sat en kode på den er expdk - for så kan kun folk på exp få den :)
Avatar billede dennismp Nybegynder
18. august 2004 - 11:21 #1
tilføj et niveau kolonne til login tabellen (det skal bare være et heltal).
fx:
ALTER TABLE login ADD niveau smallint;

i tjek_login.php rette du så, så den ser sådan her ud:
                if($number == 1){
                        $sql2 = "SELECT kode, niveau FROM login WHERE navn='$navn'";  // **RETTET**
                        db_tilslut();
                        $res2 = mysql_query($sql2) or die(mysql_error());
                        db_afslut();
                        $db_pass = mysql_fetch_array($res2);
                        if($db_pass['kode'] == $kode){
                                session_start();
                                $_SESSION['login'] = 1;
                                $_SESSION['niveau'] = $db_pass['niveau']; // **RETTET**
                        }else{
                                header("location: login.php?msg=forkert kode");
                        }


tilføj til funcs.php:

function niveauCheck($kraevet) {
  if( $_SESSION['login'] != 1 ) {
    header("Location: login.php?msg=" . urlencode("Du skal logge ind først"));
    exit;
  }

  if( $_SESSION['niveau'] < $kraevet )
    die("Du har ikke adgang til denne side.");  //evt redirect til en side med en fejlbesked.
}

.. I resten af dine filer skriver du så (fx tilføj aktiviteter)

niveauCheck(4);

så vil den enten redirect til login, hvis man ikke er logget på. Eller komem med en fejlbesked, hvis man ikke har adgang til siden..
Avatar billede -padde- Nybegynder
18. august 2004 - 15:04 #2
Dennismp - kan jeg lave sådan fx


<?
if($currentuser->4){
?>
<td height="110" class="main2">
<a href="/make-aktivitet.php">Opret aktivitet</a><br>
<a href="/aktivitet/liste.php">Redigér aktivitet</a><br>
<a href="/aktivitet/del.php">Slet aktivitet</a><br>
<a href="/logud.php">Logud</a>
</font></td>
<? } ?>
Avatar billede dennismp Nybegynder
18. august 2004 - 15:11 #3
if($currentuser->4){

Ikke helt.. Men du kan:

if($currentuser >= 4){

så fremt at $currentuser indeholder "niveau"
Avatar billede -padde- Nybegynder
18. august 2004 - 15:14 #4
og skal lige forstå den helt :P altså lige nu...skriver jeg

<?
    session_start();
    if($_SESSION['login'] != 1){   
        header("location: login.php");
    } else {
?>

det skal jeg ændre til
<?
niveauCheck(4);
header("location: /login.php");
?>
eller ?
Avatar billede -padde- Nybegynder
18. august 2004 - 15:15 #5
nåå....Dennismp (15:11:07) kan du lave den funktion ? altså er den svær ?
Avatar billede dennismp Nybegynder
18. august 2004 - 15:26 #6
dette

<?
    session_start();
    if($_SESSION['login'] != 1){   
        header("location: login.php");
    } else {
?>


burde du kunne erstatte med:

<?php session_start(); niveauCheck(4); ?>
Avatar billede -padde- Nybegynder
18. august 2004 - 15:27 #7
kan ikke få det til at virke :(

har en som kun skal ses af n2

<? require_once('top.php'); ?>
<?
require_once('tjek_login.php');
niveauCheck(2);
header("location: /login.php");
?>
<html>
<head>
<title>Adminside</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<a href="/galleri/1/upload.php">Klubben</a><br>
<a href="/galleri/2/upload.php">Graduering</a><br>
<a href="/galleri/3/upload.php">Opvisning</a><br>
<a href="/galleri/4/upload.php">Seminar</a><br>
<a href="/galleri/5/upload.php">Diverse</a><br>
<a href="/admin.php">Tilbage</a><br>
</body>
</html>
<? require_once('bund.php'); ?>

når jeg logger ind og så vil ind på..så kommer den til (1) niveua og den kommer ikke ind på n2's område, og prøver den det, så bliver den bedt om at logge ud igen :S
Avatar billede -padde- Nybegynder
18. august 2004 - 15:31 #8
<? require_once('top.php');
require_once('tjek_login.php');
session_start(); niveauCheck(2); ?>
<html>
<head>
<title>Adminside</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<a href="/galleri/1/upload.php">Klubben</a><br>
<a href="/galleri/2/upload.php">Graduering</a><br>
<a href="/galleri/3/upload.php">Opvisning</a><br>
<a href="/galleri/4/upload.php">Seminar</a><br>
<a href="/galleri/5/upload.php">Diverse</a><br>
<a href="/admin.php">Tilbage</a><br>
</body>
</html>
<? require_once('bund.php'); ?>

nu er den sådan der, men virker stadig ikke :(
Avatar billede dennismp Nybegynder
18. august 2004 - 15:48 #9
<?
session_start();
require_once('funcs.php');
niveauCheck(2);
require_once('top.php');
?>
<html>
<head>
...
Avatar billede -padde- Nybegynder
18. august 2004 - 20:50 #10
den vidre stiller til admin.php :S kan du ikke lave en funktion som den jeg nævnte ?

<?
if($currentuser->4){
?>
<td height="110" class="main2">
<a href="/make-aktivitet.php">Opret aktivitet</a><br>
<a href="/aktivitet/liste.php">Redigér aktivitet</a><br>
<a href="/aktivitet/del.php">Slet aktivitet</a><br>
<a href="/logud.php">Logud</a>
</font></td>
<? } ?>

for så er det jo bare at lave en menu for værd, så skal jeg ikke lave en side for det...bare en menu :) skal nok smide max point så :)
Avatar billede dennismp Nybegynder
18. august 2004 - 22:42 #11
function lavMenu($niveau) {
  $menu = array();
  $menu[] = array('navn' => 'Opret aktivitet', 'url' => '/make-aktivitet.php', 'niveau'=4 );
  $menu[] = array('navn' => 'Redigér aktivitet', 'url' => '/aktivitet/liste.php', 'niveau'=4 );
  .. tilføj evt flere.

  foreach($menu as $item) {
    if($item['niveau'] >= $niveau )
      print '<a href="'.$item['url'].'">'.$item['navn'].'</a><br>';
  }
}

...

det kode jeg har lavet, viderstiller da ikke til nogen admin.php ?
Avatar billede -padde- Nybegynder
18. august 2004 - 23:00 #12
jow :( ? helt nede i bunden :S


<?
    require('funcs.php');
    $navn = $_REQUEST['navn'];
    $kode = $_REQUEST['kode'];

    if(!$navn OR !$kode){
        header("location: login.php?msg=et eller flere felter er ikke udfyldt");
    }else{
        $sql = "SELECT navn FROM login WHERE navn='$navn'";
        db_tilslut();
        $res = mysql_query($sql) or die(mysql_error());
        db_afslut();
       
        $number = mysql_num_rows($res);
        if($number == 1){
        $sql2 = "SELECT kode, niveau FROM login WHERE navn='$navn'";  // **RETTET**
        db_tilslut();
        $res2 = mysql_query($sql2) or die(mysql_error());
        db_afslut();
        $db_pass = mysql_fetch_array($res2);
        if($db_pass['kode'] == $kode){
        session_start();
        $_SESSION['login'] = 1;
        $_SESSION['niveau'] = $db_pass['niveau']; // **RETTET**
        }else{
        header("location: login.php?msg=forkert kode");
        }
        }else{
            header("location: login.php?msg=brugeren findes ikke");
        }
    }
    if($_SESSION['login'] == 1){
        header("location: admin.php");
    }
?>
Avatar billede dennismp Nybegynder
18. august 2004 - 23:02 #13
Ah noget af det gamle kode :)..

Er det ikke meningen at brugeren skal ind i admin.php når han er logget ind? .. Hvis det ikke er, så fjerner du bare de 3 linjer (if($_SESSION['login']==1) .. og de 2 efterfølgende
Avatar billede -padde- Nybegynder
18. august 2004 - 23:08 #14
prøver at se om jeg kan samle det (så jeg selv forstår :P)

Jeg vil gerne have sådan at når n1 logger ind, så har han en "side/menu" for sig selv n1 kan se og gøre alt :) (skal jo bare smide alt ind så ;))

n2 skal kun kunne lave,slette og rette nyheder og have sin egen nyhedsmenu
n3 skal kun kunne lave,slette og rette aktiviteter og have sin egen aktivitetsmenu
n4 skal kun kunne lave,slette og rette billeder og have sin egen billedemenu :)

og n2,3 og 4 skal KUN kunne se deres egne menuer.. :) N1 kan se alt :)
Avatar billede -padde- Nybegynder
18. august 2004 - 23:17 #15
måske osse menes sådan her :
n1 = admin.php
n2 = na.php
n3 = aa.php
n4 = ba.php
Avatar billede dennismp Nybegynder
18. august 2004 - 23:18 #16
aha - så skal der jo rettes lidt.

function lavMenu($niveau) {
  $menu = array();
  $menu[] = array('navn' => 'Opret aktivitet', 'url' => '/make-aktivitet.php', 'niveau'=4 );
  $menu[] = array('navn' => 'Redigér aktivitet', 'url' => '/aktivitet/liste.php', 'niveau'=4 );
  .. tilføj evt flere.

  foreach($menu as $item) {
    if($item['niveau'] == $niveau || $niveau == 1 )
      print '<a href="'.$item['url'].'">'.$item['navn'].'</a><br>';
  }
}

function niveauCheck($kraevet) {
  if( $_SESSION['login'] != 1 ) {
    header("Location: login.php?msg=" . urlencode("Du skal logge ind først"));
    exit;
  }

  if( !($_SESSION['niveau'] == $kraevet || $_SESSION['niveau'] == 1) )
    die("Du har ikke adgang til denne side.");  //evt redirect til en side med en fejlbesked.
}
Avatar billede dennismp Nybegynder
18. august 2004 - 23:18 #17
din sidste kommentar, forstår jeg ikke :-|
Avatar billede -padde- Nybegynder
18. august 2004 - 23:22 #18
altså har selv tænkt sådan her på det :

        }
    }
    if($_SESSION['niveau'] == 1){
        header("location: admin.php");
    }
    if($_SESSION['niveau'] == 2){
        header("location: nyhed/na.php");
    }
?>

MEN MEN MEN!, så kan N2 jo osse se n1's og det er jo skidt ;P
Avatar billede dennismp Nybegynder
18. august 2004 - 23:32 #19
hvorfor kan han det ? Du kan vel bare kalde niveauCheck(1) øverst i admin.php ?
Avatar billede -padde- Nybegynder
18. august 2004 - 23:38 #20
prøver jeg lige :)
Avatar billede -padde- Nybegynder
18. august 2004 - 23:43 #21
bare

<?
require_once('funcs.php');
session_start();
niveauCheck(1);
?>

?
Avatar billede dennismp Nybegynder
18. august 2004 - 23:58 #22
ja
Avatar billede -padde- Nybegynder
19. august 2004 - 00:01 #23
og funcs.php ser sådan her ud ikke ? :

<?
    function db_tilslut(){
        $conn = mysql_connect("localhost", "user", "pass");
        mysql_select_db("db");
    }

    function db_afslut(){
        mysql_close();
    }
   
function niveauCheck($kraevet) {
  if( $_SESSION['login'] != 1 ) {
    header("Location: login.php?msg=" . urlencode("Du skal logge ind først"));
    exit;
  }

  if( $_SESSION['niveau'] < $kraevet )
    die("Du har ikke adgang til denne side.");  //evt redirect til en side med en fejlbesked.
}
?>
Avatar billede dennismp Nybegynder
19. august 2004 - 00:03 #24
Nej, for jeg har jo lige (23:18:01) rette niveauCheck().. Så den skal du lige opdatere
Avatar billede -padde- Nybegynder
19. august 2004 - 00:53 #25
jeg tror det virker nu..skal lige lave lektier...tjekker resten i morgen...
Avatar billede -padde- Nybegynder
20. august 2004 - 00:35 #26
takker det virker sq :)
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