webForumDet fria alternativet

Separera admin från användare

PHP

29 svar · 911 visningar · startad av Tulork · sida 2 av 2

Frågan, av Tulork

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 sessionstart(); // Alltid överst på sidan //obstart();

Läs frågan i sin helhet →
Medlem sedan aug. 2004903 inlägg
#21

hehe, såg en rolig sak nu..(har inte ändrat nått till det du skrev sist) jag loggade in som admin...kom till konto.php, försökte skriva admin.php i adressfältet, kom till index.php..

*edit

fick inte utskriften utav det att funka..antagligen tom..

Medlem sedan aug. 2004903 inlägg
#22

men..skapar det inte problem att bara admin har ett värde i fältet userlevel..? eller..nä, det snurrar i mitt huvud nu, suttit hela dagen idag och glott på kod...vill bara få rätt på detta så jag kan gå o lägga mig

Medlem sedan juni 20006 031 inlägg
#23

Tom borde den ju inte vara. Borde ju innehålla antingen user eller admin.

/red
Ett litet förtydligande.
Även när du loggar in som vanlig användare så ska den ju inte vara tom eftersom userlevel har ett defaultvärde.

Medlem sedan aug. 2004903 inlägg
#24

iofs...har testat lite nu, jag skriver i konto.php

echo "$_SESSION['sess_userlevel']"; //funkar inte
echo ("$_SESSION['sess_userlevel']"); // funkar inte

Medlem sedan juni 20006 031 inlägg
#25

Hm, då verkar den inte få något värde

Är nog bättre att använda mysql_fetch_assoc istället för mysql_result när du sätter sessionerna.

$row = mysql_fetch_assoc($result);
   
$_SESSION['sess_id'] = $row['id'];
$_SESSION['sess_user'] = $_POST['user'];
$_SESSION['sess_userlevel'] = $row['userlevel'];

/red
Såg nu att jag hade skrivit
$_SESSION['sess_userlevel'] = mysql_result($result, 1, 'userlevel');
när det skulle ha varit
$_SESSION['sess_userlevel'] = mysql_result($result, 0, 'userlevel');

Kanske hjälper om du bara ändrar det!

Medlem sedan aug. 2004903 inlägg
#26

får inte rätt på det.. nu gör vi så här, jag postar allting

admin.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";

konto.php

<?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 userlevel = ".$_SESSION['sess_id']."";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML
echo "<p>Den inloggade är<p>";
//echo "$_SESSION['sess_userlevel'];";
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 "test $sess_userlevel";
}
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>

remove.php

<?php
ob_start();
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;
}
?>

<?php

include "conn.php";

if ($_POST['JA'] == "Ja" && strlen($_POST['delete']) && $_POST['delete'] != "6")
{
  mysql_query("DELETE FROM $mem_table WHERE id = '" . $_POST['delete'] . "'");
  header("Location: remove.php");
  exit;
}

// Performing SQL query
$query = 'SELECT * FROM members';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML
echo "<link rel=StyleSheet href=\"setts\style.css\" TYPE=\"text/css\">";
echo "<table>\n";
echo "<p class=\"text\">ID User Pass Name<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);

if (isset ($_POST ['submit'])){
  $delete = $_POST['delete'];
  if ($delete=="6"){
    echo "<p class=\"text2\">Du kan inte ta bort Admin kontot!<p>";
  }

//--------------------------------------------------------------

  else {
        echo "<body class=\"text\">
	<p>Är du säker på att du vill ta bort Användaren med id:$delete?<p>	
	<form method=\"post\" action=\"?\">
        <input type=\"submit\" name=\"JA\" value=\"Ja\">
        <input type=\"submit\" name=\"NEJ\" value=\"Nej\">
                 <input type=\"hidden\" name=\"delete\" value=\"$delete\">
        </form>
	</body>";

  }
}
ob_end_flush();
?>

<br><form method="post" action="?">
<label for="delete"> Vilket id vill du ta bort</label>
<input type="text" name="delete" />
<input type="submit" name="submit" value="Ta bort!"/>
</form><br>
<a href="admin.php">Tillbaka</a><br><br>
<?php
echo "<a href=\"index.php?logout=\">Logga ut</a>\n";
?>

Welcome.php

<?php
session_start(); // Alltid överst på sidan
ob_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

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

  $_POST = db_escape($_POST);

  // Tag bort eventuella blanksteg i början eller slutet
  foreach($_POST as $key => $val){
    $_POST[$key] = trim($val);
  }

  //Kolla efter tomma fält
  if (empty($_POST['user']) || empty($_POST['passwd']) ||
      empty($_POST['name'])) {
    $reg_error[] = 0;
  }
//|| empty($_POST['email'])
  
  // Kolla om användarnamnet är upptaget
  $sql = "SELECT COUNT(*) FROM $mem_table WHERE user='{$_POST['user']}'";
  $result = mysql_query($sql);
  if (mysql_result($result, 0) > 0) {
    $reg_error[] = 1;
  }
  
  // Kolla om e-post kan tänkas vara ok
 // if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,6}$/', $_POST['email'])) {
 //   $reg_error[] = 2;    
 // }

  //Kolla så att lösenorden är längre än 5 tecken
  if (strlen($_POST['passwd'])<5){
    $reg_error[] = 2;
  }
  // Kolla så att lösenorden stämmer överrens
  if ($_POST['passwd'] != $_POST['passwd2']) {
    $reg_error[] = 3;
  }
  
  // Inga fel? Spara
  if (!isset($reg_error)) {
	
    $sql = "INSERT INTO $mem_table(user, pass, name)
            VALUES('{$_POST['user']}', '{$_POST['passwd']}', '{$_POST['name']}')";
    		mysql_query($sql);
		
		// Detta gör så att man loggar in på den man registrerar
   		  // $_SESSION['sess_id'] = mysql_insert_id();
 		  // $_SESSION['sess_user'] = $_POST['user'];
		
		  //echo "$godkant";
   	  	  header("refresh: 5;url=welcome.php");
   	 	   echo "Användaren: {$_POST['user']}, har nu lagts till!, Du kommer att skickas tillbaka inom 5 sekunder.";
		  exit;    
	//die("test");	
		
  }
ob_end_flush();
}
 else {

  // Sätt variabler för tomt formulär
  for ($i=0; $i<4; $i++) {
    $back[$i] = "";
  }

}
//Meddelanden----------
$error_list[0] = "Alla fält är inte infyllda";
$error_list[1] = "Användarnamnet är upptaget";
$error_list[2] = "Lösenordet måste vara längre än 5 tecken";
$error_list[3] = "Lösenorden stämmer inte överrens";
//$godkant = "Godkännt!";
?>
<!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>Registrera dig</title>
</head>
<body>
<h3>Registrera dig</h3>
<?php
if (isset($reg_error)){

  echo "Något blev fel:<br>\n";
  echo "<ul>\n";
  for ($i=0; $i<sizeof($reg_error); $i++) {
    echo "<li>{$error_list[$reg_error[$i]]}</li>\n";
  }
  echo "</ul>\n";
  
  $back[0] = stripslashes($_POST['user']);
  $back[2] = stripslashes($_POST['name']);
 // $back[3] = stripslashes($_POST['email']);

}
?>
<form action="welcome.php" method="post">
<table cellspacing="3">

<tr>
<td>Användarnamn:</td>
<td><input type="text" name="user" value="<?=$back[0] ?>"></td>
</tr>

<tr>
<td>Lösenord:</td>
<td><input type="password" name="passwd" value=""></td>
</tr>

<tr>
<td>Repetera lösenord:</td>
<td><input type="password" name="passwd2" value=""></td>
</tr>

<tr>
<td>Kundens namn</td>
<td><input type="text" name="name" value="<?=$back[2] ?>"></td>
</tr>

<tr>
<td colspan="2" align="center">
  <input type="submit" name="submit" value="Lägg Till Användare">
</td>

</table>
</form>
<a href="admin.php">Tillbaka </a><br><br>
</body>
</html>
<?php
echo "<a href=\"index.php?logout=\">Logga ut</a>\n";
?>

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, userlevel FROM members
         WHERE user='{$_POST['user']}'
         AND pass='{$_POST['passwd']}'";
  $result = mysql_query($sql);
  $row = mysql_fetch_assoc($result);

  
  // 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'] = $row['id'];
  $_SESSION['sess_user'] = $_POST['user'];
  $_SESSION['sess_userlevel'] = $row['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>
Medlem sedan aug. 2004903 inlägg
#27

databasen ser ut så här
Mysql databasen ser ut så här

+-----+-----------------+----------+---------+-----------+
| id  | user            | pass     | name    | userlevel |
+-----+-----------------+----------+---------+-----------+
| 121 | admin           | dgt54r   | admin   | 15         |
| 123 | google          | google   | google  | user      |
| 124 | hej                | aaaaaa  | ada       | user      |
+-----+-----------------+----------+---------+-----------+

kika lite på det jag skickat om du e sugen, du har redan hjälp mig så mkt :)

kommer inte få ro i natt om det inte funkar..., antagligen får det bli mer i morgon..

när denna bite väl fungerar så ska jag ge mig på kryptering utav lösenorden.. yay :x

Medlem sedan juni 20006 031 inlägg
#28

Varför har admins userlevel ett värde på 15?
I koden kollar vi ju om den har värdet admin.

red
Kan tyvärr inte provköra din koder då jag inte har php installerat på den här datorn.

Medlem sedan aug. 2004903 inlägg
#29

ja du...trötthet :D

*EDIT

ändrade admin till 15..blev nu skickad till index.php ;)

Medlem sedan aug. 2004903 inlägg
#30

Tack för all hjälp igår! vi har fått det att funka nu. Ska ge mig på kryptering nu.

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)