area admin a più livelli

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao a tutti,
mi servirebbe una piccola mano per questa area admin che sto facendo ....

O meglio mi servirebbe capire come poter dare i livelli agli utenti:

es admin è amministratore e ha delle pagine che può' vedere solo lui

searedone è un utente normale e può' vedere solo le pagine dell'utente ...

vi posto il codice

db

PHP:
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `livello` tinyint(5) NOT NULL,  //  ho pensato un campo tynyint 5 per mettere il livello 
  `nome` varchar(200) NOT NULL,
  `cognome` varchar(200) NOT NULL,
  `telefono` varchar(50) NOT NULL,
  `email` varchar(100) NOT NULL,
  `web_site` varchar(200) NOT NULL,
  `regione` varchar(50) NOT NULL,
  `provincia` varchar(50) NOT NULL,
  `comune` varchar(50) NOT NULL,
  `cap` varchar(50) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `level` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


login.php

PHP:
<?php 
//connessione al databese
include 'db_connect.php';

//parte la sessione
session_start ();

//controllo dei dati inviati 
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) 
{ 
$result=$_SESSION['user_id'];

// form per il login
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
User: <input type=\"text\" name=\"username\"><br> 
Password: <input type=\"password\" name=\"password\"><br> 
<input type=\"submit\" value=\"Invia\"></form>"; 
}else{ 

// query tabella utenti
$sql = mysql_query("SELECT * FROM users WHERE username='".$_POST['username']."' AND password=('".$_POST['password']."')");
while ($prova = mysql_fetch_array($sql)) {
$num= $prova[0];

if (mysql_num_rows($sql)>0)
{
$_SESSION['username']=$_POST['username']; 
$_SESSION['password']=$_POST['password'];
$_SESSION['user_id']=$prova[0];
//passo la variabile con ID dell'utente 
header("Location: mypage.php?id=$prova[0]");
}
else {echo "Login errato";} 
}
}
?>

mypage.php

PHP:
<?php
//connessione al database
include 'db_connect.php';
$result=$_SESSION['user_id'];

//inizio sessione per l'utente che ha effettuato il login
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{

echo "Benvenuto " . $_SESSION['username']; 

}else{
header("Location: form.php");

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<head>
<title>prova</title>
<link rel="stylesheet" href="stile.css" type="text/css">
<link rel="shortcut" href="http://localhost/favicon.ico">
</head>
<body>
<div id="contenitore">

<br />
<br />
<br />
  <?php
include 'db_connect.php';

$jokelist = @mysql_query( 

    'SELECT * 
    FROM users  WHERE id='.$_SESSION['user_id'].''); 
if (!$jokelist) { 
  exit('<p>Error performing query: ' . mysql_error() . '</p>'); 
} 

while ($joke = mysql_fetch_array($jokelist)) { 

  $id = $joke['id'];
  $nome = $joke['nome'];
  $cognome = $joke['cognome'];
  $tel = $joke['tel'];
  $address = $joke['address'];
   $country = $joke['country'];
    $website = $joke['website'];
     $fax = $joke['fax'];
      $date = $joke['date'];

   
  // Display dove printo le informazioni
     echo "cod cliente:  $id<br />";
    echo "Nome:  $nome<br />";
      echo "Cognome:  $cognome<br />";
        echo "Email<a href='mailto:$email'>$email</a><br />";
       
        echo "Data registrazione:$ts<br />";
  
}  






?>

<?php echo $_SESSION['user_id'];?>
<?php echo $_SESSION['username'];?>

  <a href="logout.php">Logout </a>


non guardate i campi che sono ovviamente solo di prova..
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Vedo che nella tua tabella hai già un campo level, quindi cosa ti manca? Non devi far altro che controllare il valore del campo:
PHP:
<?php

// supponendo che i dati dell'utente siano contenuti in $user

if ($user['level'] != 'admin') {
    die('Non sei autorizzato ad accedere a questa pagina.');
}

// ...
Comunque, qualche consiglio/domanda:
  • Perché usi le variabili $joke e $jokelist? Non erano meglio $query e $row?
  • Nel tuo codice molte parti si ripetono, come il caricamento dei dati dell'utente. Crea delle funzioni/classi.
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Comunque, qualche consiglio/domanda:
Perché usi le variabili $joke e $jokelist? Non erano meglio $query e $row?
Nel tuo codice molte parti si ripetono, come il caricamento dei dati dell'utente. Crea delle funzioni/classi.

Ciao grazie per la risposta ...

ho usato coke e jokelist solo perché per fare prima questa mattina ho utilizzato un precedente script che avevo fatto..

creare delle funzioni classi.. magari non sono ancora così avanti ... :(

tornando al post ho messo un campo livelli perché immaginavo che ci andasse ma non sapevo come farlo funzionare ecco perché il post ...

se non ho capito male questa parte di script che mi hai postato devo metterla prima della pagina che deve vedere solo l'administrator ???
PHP:
<?php 

// supponendo che i dati dell'utente siano contenuti in $user 

if ($user['level'] != 'admin') { 
    die('Non sei autorizzato ad accedere a questa pagina.'); 
}

es admin level 2 // 2 sta per area amministratore
es searedone level 1 // sta per area utente

vedendo il tuo script suppongo che dove c'è level devo mettere il numero corretto ???
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
ho provato così ma non funziona

PHP:
<?php
//connessione al database
include 'db_connect.php';
$result=$_SESSION['user_id'];

//inizio sessione per l'utente che ha effettuato il login
session_start();
if ($user['2'] != 'admin') {  
    die('Non sei autorizzato ad accedere a questa pagina.');  
}

echo "Benvenuto " . $_SESSION['username']; 

}else{
header("Location: form.php");

}

?>
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Alex ho sistemato query e row ...

solo una curiosità ho cambiato il campo level in un campo enum dove di default il valore è uno e in caso voglia invece dare dei permessi diversi agli amministratori lo trasformo in 2
e fino qui perfetto ....

ma in questo script che ti posto ( pagina mypage.php ) dove vado a finire dopo il login, e fino a qui perfetto ....... ma come faccio dato che ho provato come mi hai suggerito ma non funge a far si che quando mi loggo come admin che ho level 2 a vedere delle altre cose nella pagina ????

es

nella pagina di seraredone vedo i suoi dati ecc ecc

nella pagina di admin posso vedere i miei dati ma posso vedere una serie di funzioni che gli lari che non hanno questo permesso possono vederle .......

PHP:
<?php
//connessione al database
include 'db_connect.php';
$result=$_SESSION['user_id'];

//inizio sessione per l'utente che ha effettuato il login
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{

echo "Benvenuto " . $_SESSION['username']; 

}else{
header("Location: form.php");

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<head>
<title>prova</title>
<link rel="stylesheet" href="stile.css" type="text/css">
<link rel="shortcut" href="http://localhost/favicon.ico">
</head>
<body>
<div id="contenitore">

<br />
<br />
<br />
  <?php
include 'db_connect.php';

$query = @mysql_query( 

    'SELECT * 
    FROM users  WHERE id='.$_SESSION['user_id'].''); 
if (!$query) { 
  exit('<p>Error performing query: ' . mysql_error() . '</p>'); 
} 

while ($row = mysql_fetch_array($query)) { 

  $id = $row['id'];
  $nome = $row['nome'];
  $cognome = $row['cognome'];
  $telefono = $row['telefono'];
  $email = $row['email'];
  $web_site = $row['web_site'];
     $regione = $row['regione'];
      $provincia = $row['provincia'];
      $comune = $row['comune'];
      $cap = $row['cap'];
      $ts = $row['ts'];

   
  // Display the joke with author information 
     echo "cod cliente:  $id<br />";
    echo "Nome:  $nome<br />";
      echo "Cognome:  $cognome<br />";
       echo "Telefono:  $telefono<br />";
        echo "Email:  <a href='mailto:$email'>$email</a><br />";
         echo "Website:  <a href=http://$web_site>$web_site</a><br />";
          echo "Regione:  $regione<br />";
           echo "Provincia:  $provincia<br />";
            echo "Comune:  $comune<br />";
             echo "Cap:  $cap<br />";
       
        echo "Data di registrazione:$ts<br />";
  
}  






?>

<?php echo $_SESSION['user_id'];?>
<?php echo $_SESSION['username'];?>

  <a href="logout.php">Logout </a>
  

 es // io vorrei che questa parte la veda solo admin e non tutti ???? come devo impostarla la cosa ??? 
   <a href="admin.php">admin </a>

riposto il db corretto con un piccolo dump di prova

PHP:
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `nome` varchar(200) NOT NULL,
  `cognome` varchar(200) NOT NULL,
  `telefono` varchar(50) NOT NULL,
  `email` varchar(100) NOT NULL,
  `web_site` varchar(200) NOT NULL,
  `regione` varchar(50) NOT NULL,
  `provincia` varchar(50) NOT NULL,
  `comune` varchar(50) NOT NULL,
  `cap` varchar(50) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `level` enum('1','2') NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dump dei dati per la tabella `users`
--

INSERT INTO `users` (`id`, `username`, `password`, `nome`, `cognome`, `telefono`, `email`, `web_site`, `regione`, `provincia`, `comune`, `cap`, `ts`, `level`) VALUES
(1, 'searedone', 'pippalippa', '', '', '', '', '', '', '', '', '', '0000-00-00 00:00:00', '1'),
(2, 'pippo', 'pippo', 'pippo', 'pippo', '', '', '', '', '', '', '', '2011-12-08 09:49:26', '1'),
(4, 'admin', 'admin', 'a', 'a', '774747477', '[email protected]', 'www.admin.it', 'lombardia', 'milano', 'milano', '20100', '2011-12-08 11:42:27', '2');
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
nada de nada ....

pagina bianca :(

PHP:
<?php
//connessione al database
include 'db_connect.php';
$result=$_SESSION['user_id'];

//inizio sessione per l'utente che ha effettuato il login
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{

echo "Benvenuto " . $_SESSION['username']; 

}else{
header("Location: form.php");

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<head>
<title>prova</title>
<link rel="stylesheet" href="stile.css" type="text/css">
<link rel="shortcut" href="http://localhost/favicon.ico">
</head>
<body>
<div id="contenitore">

<br />
<br />
<br />
  <?php
include 'db_connect.php';

$query = @mysql_query( 

    'SELECT * 
    FROM users  WHERE id='.$_SESSION['user_id'].''); 
if (!$query) { 
  exit('<p>Error performing query: ' . mysql_error() . '</p>'); 
} 

while ($row = mysql_fetch_array($query)) { 

  $id = $row['id'];
  $nome = $row['nome'];
  $cognome = $row['cognome'];
  $telefono = $row['telefono'];
  $email = $row['email'];
  $web_site = $row['web_site'];
     $regione = $row['regione'];
      $provincia = $row['provincia'];
      $comune = $row['comune'];
      $cap = $row['cap'];
      $ts = $row['ts'];

   
  // Display the joke with author information 
     echo "cod cliente:  $id<br />";
    echo "Nome:  $nome<br />";
      echo "Cognome:  $cognome<br />";
       echo "Telefono:  $telefono<br />";
        echo "Email:  <a href='mailto:$email'>$email</a><br />";
         echo "Website:  <a href=http://$web_site>$web_site</a><br />";
          echo "Regione:  $regione<br />";
           echo "Provincia:  $provincia<br />";
            echo "Comune:  $comune<br />";
             echo "Cap:  $cap<br />";
       
        echo "Data di registrazione:$ts<br />";
  
}  






?>

<?php echo $_SESSION['user_id'];?>
<?php echo $_SESSION['username'];?>

  <a href="logout.php">Logout </a>
  
  <?php 
if ($user['level'] == 2) { 
    echo <<<EOF 
<a href="admin.php">admin</a> 
EOF; 
} 
?>

Tra l'altro forse non mi sono spiegato bene, io ho bisogno non solo di vedere quello ma di vedere tante cose in quella pagina che può' vedere solo l'utente di livello 2 :(
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Guarda che nella variabile $user devi caricare i dati dell'utente che recuperi dal database, altrimenti è ovvio che non funziona. Se hai bisogno di inserire più cose per l'amministratore basta che aggiungi altri controlli, oppure che aggiungi i link a quello esistente.
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
???

Alex abbi pazienza ma io nn ho tutte queste capacita' al momento ;(
Mi piacerebbe ;)

Nn saresti cosi gentile da farmi un esempio o altro ..
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
help .....

login.php

PHP:
<?php 
//connessione al databese
include 'db_connect.php';

//parte la sessione
session_start ();

//controllo dei dati inviati 
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) 
{ 
$result=$_SESSION['user_id'];

// form per il login
echo "<form method=\"post\" action=\"login.php\"> 
Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br> 
Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br> 
<input type=\"submit\" value=\"Invia\"></form>"; 
}else{ 

// query tabella utenti
$sql = mysql_query("SELECT * FROM users WHERE username='".$_POST['username']."' AND password=('".$_POST['password']."')");
if (mysql_num_rows($sql)>0)
{
while ($prova = mysql_fetch_array($sql)) {  
    $num= $prova[0];  
    $_SESSION['username']=$_POST['username'];   
    $_SESSION['password']=$_POST['password'];   
    $_SESSION['user_id']=$prova[0];  
    $_SESSION['level'] = intval($prova[15]);  // ho provato sia così che 
    $_SESSION['level'] =$_POST['level']; 
    header("Location: mypage.php?id=$prova[0]");  
}
}else{
echo "Login errato <br /><br /> <a href='login.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>";
} 
}
?>


mypage.php



PHP:
<?php
//connessione al database
include 'db_connect.php';
$result=$_SESSION['user_id'];


//inizio sessione per l'utente che ha effettuato il login
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{
 $_SESSION['username']; 

}else{
header("Location: login.php");

}

?>

 <?php echo "Cod Cliente  "   . $_SESSION['user_id'];?><br />
<?php echo "Cliente  "   . $_SESSION['username'];?><br />

  <a href="logout.php">Logout </a>
 <br /> 
<?php if($_SESSION['level'] == 2): ?>   
   <a href="admin.php">admin </a>    
<?php endif; ?>
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
la cosa incredibile è:


se provo a mettere

PHP:
<?php echo  . $_SESSION['level'];?><br />

Non mi restituisce 2 0 1 ma la data 2011 ?? il campo è enum 1 default nel caso posso mettere a 2

???????
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Risolto :)

login.php

PHP:
 $_SESSION['level'] = $prova[14];

mypage.php

PHP:
<?php if($_SESSION['level'] == '2'): ?>   
   <a href="admin.php">admin </a>    
<?php endif; ?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [PHP] Reindirizzare utenti alla propria area personale PHP 1
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
KOMODO_JOE [WordPress] Area privata per ogni utente su altervista WordPress 1
M [WordPress] [HTML] AREA RISERVATA CON PROFILAZIONE WordPress 2
F [Photoshop] come riempire un area selezionata su un layer trasparente con colore solido Photoshop 0
D [Javascript] Text area visibile Javascript 0
F [PHP] Creare un'area web riservata PHP 13
W Area riservata sicura PHP MySQL PHP 12
Z Semplice area privata in php PHP 6
I Area riservata in PHP PHP 2
I [PHP] CURL per accesso ad area riservata PHP 6
I [WordPress] area membri WordPress 1
S [WordPress] [HTML] Bordo di selezione area - Link di ancoraggio WordPress 3
W. YouneS Area riservata con php e mysql PHP 0
trattorino [Javascript] [HTML] risultato imput dentro text area Javascript 2
4potere [WordPress] Plugin raccolta clienti, area dedicata ad ogni cliente WordPress 0
W [ASP] Password Login per area riservata Classic ASP 13
T Richiamare il click su un input type="image" alla pressione del tasto invio su una text area. PHP 0
JohnnyIbiza021a Programmare area personale per singolo utente PHP 12
Recover Area riservata con database PHP 11
gandalf1959 problema con header in area riservata PHP 4
A area riservata in php senza data base PHP 19
Giuliana Signorello WP: Creare un booking multi-struttura con area agenzie annessa WordPress 0
V area ripetuta e cambiamento background in foto PHP 0
Recover db in sola lettura su area riservata WordPress 1
L Accesso area riservata tramite QR code WordPress 3
felino Disattivare gli annunci temporaneamente dell'area amministrativa Google AdSense 0
A accesso area riservata nn funziona più PHP 1
A Area riservata con login e mysql ma nn mi logga PHP 1
E consigli per piccola area riservata PHP 4
Elisacau Area riservata.. WordPress 2
M problema creazione nuova area widget WordPress 0
I Area riservata con contenuto personalizzato per i registrati? CMS (Content Management System) 0
S realizzare un' area di login completa costo... Offerte e Richieste di Lavoro e/o Collaborazione 2
P mouseOver su area map Javascript 8
A [RISOLTO]Ripulire una text-area con un click Javascript 4
B Area Riservata/Download per Wordpress WordPress 3
M Come verificare accesso ad area http auth basic? PHP 7
S Plugin login/ registrazione Wordpress con area download privata WordPress 3
M Problema con form per accesso area riservata ai soci PHP 2
A problema con area riservata PHP 6
G Problema nella creazione di un'area protetta PHP 10
N Primo accesso area riservata PHP 1
neo996sps PHP + MYSQL: Errore su accesso area riservata PHP 1
S Log login area privata PHP 6
P Area riservata con frontpage PHP 10
S js per calcolo area [Aiuto per programmino!!] Javascript 15
Sargon Php e My Sql Area ristretta con password PHP 5
S Area riservata PHP PHP 3
C Creazione pagina area protetta PHP 62

Discussioni simili