---
title: "Separera admin från användare"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/155787-separera-admin-från-användare"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Tulork"
published: "2007-01-09T17:08:13.000Z"
updated: "2007-01-10T10:28:55.000Z"
replies: 29
views: 917
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/155787-separera-admin-från-användare"
---

# Separera admin från användare

_Sida 1 av 2._

## #1 — Tulork, 2007-01-09T17:08Z

Vid det här laget hade vi tänkt att separera ut administratorn ur member tablen..vi har en annan tabell som heter admin där lösen och användare heter,  skriver man då in rätt lösen och användare komemr man till administrations sidan, annars om man loggar in som användare komemr man till respektive konto.

Inloggningen (index.php)

```
<?php
session_start(); // Alltid överst på sidan
//ob_start();
include "conn.php"; // Databasanslutningen

// Inloggning
if (isset($_POST['submit'])){

  $_POST = db_escape($_POST);
  $sql = "SELECT id FROM members
         WHERE user='{$_POST['user']}'
         AND pass='{$_POST['passwd']}'";
  $result = mysql_query($sql);

  
  // Hittades inte användarnamn och lösenord
  // skicka till formulär med felmeddelande
  if (mysql_num_rows($result) == 0){
    header("Location: index.php?badlogin=");
    exit;
  }
//---------------------------------------------------------------
 // elseif {$_POST = db_escape($_POST);
  //$sql = "SELECT id FROM admin
//         WHERE user='{$_POST['user']}'
 //        AND pass='{$_POST['passwd']}'";
//  $result = mysql_query($sql);
  // Sätt sessionen med unikt index
//  $_SESSION['sess_id'] = mysql_result($result, 0, 'id');
//  $_SESSION['sess_user'] = $_POST['user'];
//  header("Location: admin.php");
//  exit;
//---------------------------------------------------------------
//}
 // Sätt sessionen med unikt index
  $_SESSION['sess_id'] = mysql_result($result, 0, 'id');
  $_SESSION['sess_user'] = $_POST['user'];
  header("Location: konto.php");
  exit;

}

// Utloggning
if (isset($_GET['logout'])){
  session_unset();
  session_destroy();
  header("Location: index.php");
  exit;
}//ob_end_flush();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
  content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php

// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){

  echo "<h3>Logga in</h3>\n";
  
  // Visa felmeddelande vid felaktig inloggning
  if (isset($_GET['badlogin'])){
    echo "Fel användarnamn eller lösenord!<br>\n";
    echo "Försök igen!\n";
  }
  
?>
<form action="index.php" method="post">
Användarnamn:<br>
<input type="text" name="user"><br>
Lösenord:<br>
<input type="password" name="passwd"><br>
<input type="submit" name="submit" value="Logga in">
</form>

<?php

} else {

  echo "<a href=\"index.php?logout=\">Logga ut</a>\n";

}

?>
</body>
</html>
```

konto.php(fylls med respektives information beroende på användare)

```
<?php
ob_start();
session_start();
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])){
  header("Location: index.php");
  exit;
}
if (isset($_GET['logout'])){
  session_unset();
  session_destroy();
  header("Location: index.php");
  exit;
}
?>
<?php
include "conn.php"; // Databasanslutningen

// Performing SQL query sh
$query = "SELECT * FROM $mem_table WHERE id = ".$_SESSION['sess_id']."";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML
echo "<p>Den inloggade är<p>";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

// Free resultset
mysql_free_result($result);

ob_end_flush();
?>
<?php
echo "<br><a href=\"index.php?logout=\">Logga ut</a>\n<br><br>";
?>
//<a href="admin.php">Tillbaka </a><br><br>
```

conn.php

```
<?php

// Byt ut mot dina inloggningsuppgifter och databas
$mysql_server = "localhost";
$mysql_user = "root";
$mysql_password = "ppmibEy@";
$mysql_database = "members";
$mem_table = "members";
$conn = mysql_connect($mysql_server, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $conn);

// En funktion att användas när magic_quotes_gpc inte är satt. För att förhindra SQL-injections, eller i lidrigare fall MySQl-fel.
function db_escape ($post)
{
   if (is_string($post)) {
     if (get_magic_quotes_gpc()) {
        $post = stripslashes($post);
     }
     return mysql_real_escape_string($post);
   }
   
   foreach ($post as $key => $val) {
      $post[$key] = db_escape($val);
   }
   
   return $post;
}

/*
   Se till att det inte finns några dolda tecken, typ radbyte
   eller mellanslag, efter den avslutande PHP-taggen !!!
*/
?>
```

som ni ser så har jag markerat bort det jag försökt med i index.php...när jag gör på det sättet får jag sql fel, function fel, header fel..och den försöker dessutom skicka mig till konto.php, även fast jag loggar in som admin.

tanken är alltså att om admin loggar in, ska han komma till admin.php och om en användare loggar in ska han Endast komma till konto.php och inte kunna gå till adminsidorna...

Permalänk: https://www.webforum.nu/p/155787

## #2 — Pedda, 2007-01-09T17:20Z

Jag skulle ha både medlemmar och administratörer i samma tabell, bara lägga till ett fält till members med ett värde som avgör vilket man tillhör.
När man loggar in så skulle jag sätta en extra session med värdet som avgör vad man tillhör.

Permalänk: https://www.webforum.nu/p/1919318

## #3 — Tulork, 2007-01-09T17:29Z

hmm ok, men när jag listar medlemmarna på sidan där vi tar bort användare så kommer admin med där..då får jag lägga tillbaka en funktion vi hade där som avbröt om man försökte ta bort admin id't...men det du skriver låter bra..hur gör jag det? :D

Permalänk: https://www.webforum.nu/p/1919321

## #4 — Tulork, 2007-01-09T17:30Z

om det var otydligt så menade jag att funktionen som omöjligjorde borttagningen utav admin ur tabellen har jag redan

Permalänk: https://www.webforum.nu/p/1919322

## #5 — Pedda, 2007-01-09T18:02Z

på sidan du raderar ifrån är det ju bara att kolla vad dom är admin eller inte

Permalänk: https://www.webforum.nu/p/1919334

## #6 — Tulork, 2007-01-09T18:09Z

jo, men hur gör jag det andra du beskriver?..användarna får ju inte kunna bara skriva admin.php o sen komma in där...admin loggar in=admin.php, användare loggar in=konto.php...användare skriver <http://blabla/blabla/admin.php=> du måste vara inloggad som administratör... om du förstår hur jag menar. Hur gör jag det kodmässigt?

Permalänk: https://www.webforum.nu/p/1919341

## #7 — Pedda, 2007-01-09T18:19Z

När du kollar namn o lösen så har du 

```php
$sql = "SELECT id, userlevel FROM members
         WHERE user='{$_POST['user']}'
         AND pass='{$_POST['passwd']}'";
  $result = mysql_query($sql);
```

Sen har du en if-sats där du kollar vad userlevel har för värde. Om värdet är för admin så skickar du vidare till admin.php annars till konto.php

/red
glömde skriva allt ;)

i admin.php, kolla så man har rätt userlevel

```php
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_userlevel']) || $_SESSION['sess_userlevel'] != "admin") {
  header("Location: index.php");
  // eller
  // echo "Du har inte behörighet till den här sidan";
  exit;
}
```

Permalänk: https://www.webforum.nu/p/1919345

## #8 — Tulork, 2007-01-09T18:53Z

tro det eller ej, men jag förstår precis hur du menar, men jag har problem med att baka in det i koden. Först så måste jag ju ha ett nytt fält i members tablen, user_level fältet, och där admin står, sätter jag det till ett värde...när man loggar in och userlevel har ett värde,sätts en session med user_level värdet, sen skickas man till admin.php, på admin.php kollar man så att user_level värdet är det samma som står i databasen...

jag har väl förstått rätt?? men när jag sitter nu o testar snurrar det bara i huvudet   :birp

Permalänk: https://www.webforum.nu/p/1919367

## #9 — Pedda, 2007-01-09T19:05Z

Du verkar förstå.

Skapa tabellen userlevel (ange gärna user som defaultvärde)
Ändra select satsen i index.php så du hämtar ut värdet på userlevel från databasen.
Sätt en session med värdet på userlevel i index.php
Ändra koden i alla sidor som endast admin ska ha tillgång till med koden jag bifogade.

Permalänk: https://www.webforum.nu/p/1919374

## #10 — Tulork, 2007-01-09T19:13Z

låter bra, ska testa snart..ska bara lista ut ett sätt att lägga till user_level i tablen members i databasen utan att göra om hela tablen..

Permalänk: https://www.webforum.nu/p/1919376

## #11 — Pedda, 2007-01-09T19:17Z

Har du inte phpmyadmin eller någon annat för att hantera mySQL?
Bara att lägga till fältet i så fall ju.

Permalänk: https://www.webforum.nu/p/1919378

## #12 — Tulork, 2007-01-09T19:21Z

orka phpMyadmin :) det är ett bra probram, men jag kör vnc dirrekt mot test servern o har mysql igång i en terminal..vad gör jag för fel här? 

add \[column\] user_level varchar(10) default''\[AFTER name\];

Permalänk: https://www.webforum.nu/p/1919380

## #13 — Pedda, 2007-01-09T19:40Z

Du måste använda ALTER TABLE för att ändra i en tabell, men jag har aldrig gjort det i mySQL.

Men det borde vara nåt sånt här

alter table members add column userlevel varchar(10) Default 'user';

men du måste ha alter rättighet till databasen, men det kanske du har?

Permalänk: https://www.webforum.nu/p/1919387

## #14 — Tulork, 2007-01-09T19:50Z

aa...iom att det är vår egen server vi jobbar mot så ;)

Permalänk: https://www.webforum.nu/p/1919390

## #15 — Tulork, 2007-01-09T20:23Z

okej, så här har jag gjort nu, hakar upp mig på den sista saken du beskriver..kan du illustrera med admin.php koden jag bifogat? i databasen ligger nu ett userlevel fält med default 'user', bara admin har en userlevel (15), resten har inget. Det som då återstår är själva kontrollen av sessionen om det är admin eller användare och beroende utav det, konto.php eller admin.php....

index.php

```
<?php
session_start(); // Alltid överst på sidan
//ob_start();
include "conn.php"; // Databasanslutningen

// Inloggning
if (isset($_POST['submit'])){

  $_POST = db_escape($_POST);
  $sql = "SELECT userlevel FROM members
         WHERE user='{$_POST['user']}'
         AND pass='{$_POST['passwd']}'";
  $result = mysql_query($sql);

  
  // Hittades inte användarnamn och lösenord
  // skicka till formulär med felmeddelande
  if (mysql_num_rows($result) == 0){
    header("Location: index.php?badlogin=");
    exit;
  }
 // Sätt sessionen med unikt index
  $_SESSION['sess_id'] = mysql_result($result, 0, 'userlevel');
  $_SESSION['sess_user'] = $_POST['user'];
  header("Location: admin.php");
  exit;

}

// Utloggning
if (isset($_GET['logout'])){
  session_unset();
  session_destroy();
  header("Location: index.php");
  exit;
}//ob_end_flush();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
  content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php

// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){

  echo "<h3>Logga in</h3>\n";
  
  // Visa felmeddelande vid felaktig inloggning
  if (isset($_GET['badlogin'])){
    echo "Fel användarnamn eller lösenord!<br>\n";
    echo "Försök igen!\n";
  }
  
?>
<form action="index.php" method="post">
Användarnamn:<br>
<input type="text" name="user"><br>
Lösenord:<br>
<input type="password" name="passwd"><br>
<input type="submit" name="submit" value="Logga in">
</form>

<?php

} else {

  echo "<a href=\"index.php?logout=\">Logga ut</a>\n";

}

?>
</body>
</html>
```

EDIT\*\*
Glömde admin koden :D

```
<?php
session_start(); // Alltid överst på sidan

// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])){
  header("Location: index.php");
  exit;

if (isset($_GET['logout'])){
  session_unset();
  session_destroy();
  header("Location: index.php");
  exit;
}
}

?>

<html>
<head>
<!--
.style4{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9px;
}
.style6{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9px; font-weight:bold;
}
-->
</style>
</head>

<body>
<span class="style6">Administrations funktioner</span><br>

<span class="style4"><a href="welcome.php">Lägg till en användare</a><br>
<a href="remove.php">Ta bort en användare</a><br>
<a href="konto.php">Konto</a>
</span><br><br>
</body>
</html>
<?php
echo "<a href=\"index.php?logout=\">Logga ut</a>\n";
```

Permalänk: https://www.webforum.nu/p/1919400

## #16 — Pedda, 2007-01-09T20:31Z

index.php

```php
<?php
session_start(); // Alltid överst på sidan
//ob_start();
include "conn.php"; // Databasanslutningen

// Inloggning
if (isset($_POST['submit'])){

  $_POST = db_escape($_POST);
   $sql = "SELECT id, userlevel FROM members
         WHERE user='{$_POST['user']}'
         AND pass='{$_POST['passwd']}'";
  $result = mysql_query($sql); 

  
  // Hittades inte användarnamn och lösenord
  // skicka till formulär med felmeddelande
  if (mysql_num_rows($result) == 0){
    header("Location: index.php?badlogin=");
    exit;
  }
 // Sätt sessionen med unikt index
  $_SESSION['sess_id'] = mysql_result($result, 0, 'id');
  $_SESSION['sess_user'] = $_POST['user'];
  $_SESSION['sess_userlevel'] = mysql_result($result, 0, 'userlevel');

  if($_SESSION['sess_userlevel'] == "admin") {
    header("Location: admin.php");
    exit;
  }
  else
  {
    header("Location: konto.php");
    exit;
  }
}

// Utloggning
if (isset($_GET['logout'])){
  session_unset();
  session_destroy();
  header("Location: index.php");
  exit;
}//ob_end_flush();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
  content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php

// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){

  echo "<h3>Logga in</h3>\n";
  
  // Visa felmeddelande vid felaktig inloggning
  if (isset($_GET['badlogin'])){
    echo "Fel användarnamn eller lösenord!<br>\n";
    echo "Försök igen!\n";
  }
  
?>
<form action="index.php" method="post">
Användarnamn:<br>
<input type="text" name="user"><br>
Lösenord:<br>
<input type="password" name="passwd"><br>
<input type="submit" name="submit" value="Logga in">
</form>

<?php

} else {

  echo "<a href=\"index.php?logout=\">Logga ut</a>\n";

}

?>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/1919404

## #17 — Pedda, 2007-01-09T20:35Z

admin.php

```php
<?php
session_start(); // Alltid överst på sidan

// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_userlevel']) || $_SESSION['sess_userlevel'] != "admin") {
  header("Location: index.php");
  // eller
  // echo "Du har inte behörighet till den här sidan";
  exit;
} 

// tog bort logout eftersom du har den i index.php

?>

<html>
<head>
<!--
.style4{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9px;
}
.style6{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 9px; font-weight:bold;
}
-->
</style>
</head>

<body>
<span class="style6">Administrations funktioner</span><br>

<span class="style4"><a href="welcome.php">Lägg till en användare</a><br>
<a href="remove.php">Ta bort en användare</a><br>
<a href="konto.php">Konto</a>
</span><br><br>
</body>
</html>
<?php
echo "<a href=\"index.php?logout=\">Logga ut</a>\n";
```

Permalänk: https://www.webforum.nu/p/1919407

## #18 — Tulork, 2007-01-09T20:43Z

hmm, det funkar inte riktigt :( jag va tvungen till att sätta tillbaka ob flush grejjet för att inte få function och header fel..samt så skickar den alltid in den inloggade till konto.php..och oavsett vem jag loggar in som så har alla tillgång till administrations sidorna.

Permalänk: https://www.webforum.nu/p/1919412

## #19 — Tulork, 2007-01-09T20:49Z

jag måste påpka det också att jag uppskattar verkligen den snabba hjälpen jag får utav dig! verkligen jättesnällt!! Detta projektet betyder en hel del för oss..inte penga mässigt, men en erfarenhet som är värt mkt!

Permalänk: https://www.webforum.nu/p/1919415

## #20 — Pedda, 2007-01-09T20:53Z

Att alla skickas till konto.php kan bero på att man inte kan läsa $\_SESSION\['sess_userlevel'\] från direkt efter att den är satt. Var faktiskt osäker på att det skulle funka. :)

Men du borde inte komma in på admin.php
Testa att skriva ut  $\_SESSION\['sess_userlevel'\] i konto.php för att se vad den har fått för värde när du loggar in på olika konton.

Permalänk: https://www.webforum.nu/p/1919416

---

Tråden på webben: https://www.webforum.nu/amne/php/155787-separera-admin-från-användare  
Nästa sida: https://www.webforum.nu/amne/php/155787-separera-admin-från-användare/page2.md
