Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Gestire aree riservate

  1. #1

    Gestire aree riservate

    Ciao a tutti

    Il mio problema è questo: ho un CMS in cui si entra normalmente inserendo login e password.
    Per gestire l'accesso ho usato uno script preso dalla raccolta script di html.it (Page Password Protect http://php.html.it/script/vedi/4210/...ssword-protect )
    Vi riporto il codice:

    Codice PHP:
    <?php
    ##################################################################
    #  SETTINGS START
    ##################################################################

    // Add login/password pairs below, like described above
    // NOTE: all rows except last must have comma "," at the end of line
    $LOGIN_INFORMATION = array(
      
    'admin' => 'adminpsw',
      
    'user' => 'userpsw'
    );

    //$LOGIN_INFORMATION[] = $row;

    // request login? true - show login and password boxes, false - password box only
    define('USE_USERNAME'true);

    // User will be redirected to this page after logout
    define('LOGOUT_URL''index.php');

    // time out after NN minutes of inactivity. Set to 0 to not timeout
    define('TIMEOUT_MINUTES'15);

    // This parameter is only useful when TIMEOUT_MINUTES is not zero
    // true - timeout time from last activity, false - timeout time from login
    define('TIMEOUT_CHECK_ACTIVITY'true);

    ##################################################################
    #  SETTINGS END
    ##################################################################


    ///////////////////////////////////////////////////////
    // do not change code below
    ///////////////////////////////////////////////////////

    // show usage example
    if(isset($_GET['help'])) {
      die(
    'Includi questa riga di codice all\'inizio di ogni pagina che vuoi proteggere:
    &lt;?php include("' 
    str_replace('\\','\\\\',__FILE__) . '"); ?&gt;');
    }

    // timeout in seconds
    $timeout = (TIMEOUT_MINUTES == time() + TIMEOUT_MINUTES 60);

    // logout?
    if(isset($_GET['logout'])) {
      
    setcookie("verify"''$timeout'/'); // clear password;
      
    header('Location: ' LOGOUT_URL);
      exit();
    }

    if(!
    function_exists('showLoginPasswordProtect')) {

    // show login form
    function showLoginPasswordProtect($error_msg) {
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
    <head>
    <title>Pagina di accesso</title>
    </head>
    <body>
    <div id="container">
                    <div id="banner">
                    [img]img/banner.jpg[/img]
                     </div>
                     <div id="menu">
                     </div>
                     <div id="content">
                     <h2>Accesso al pannello di amministrazione</h2>
                    <form method="post">
                    <fieldset>
                    <legend>Inserire le credenziali d'accesso</legend>
        
        <font color="red"><?php echo $error_msg?></font>

    <?php if (USE_USERNAME) echo '<label for="access_login">Login:</label>
    <input type="input" name="access_login" />

    <label for="access_password">Password:</label>
     '
    ?><input type="password" name="access_password" /></fieldset><fieldset class="submit"><input type="submit" name="Submit" value="Entra" /></fieldset>
      </form>
      

      </div>
      </body>
    </html>

    <?php
      
    // stop at this point
      
    die();
    }
    }

    // user provided password
    if (isset($_POST['access_password'])) {

      
    $login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
      
    $pass $_POST['access_password'];
      if (!
    USE_USERNAME && !in_array($pass$LOGIN_INFORMATION)
      || (
    USE_USERNAME && ( !array_key_exists($login$LOGIN_INFORMATION) || $LOGIN_INFORMATION[$login] != $pass ) ) 
      ) {
        
    showLoginPasswordProtect("Dati inseriti non corretti");
      }
      else {
        
    // set cookie if password was validated
        
    setcookie("verify"md5($login.'%'.$pass), $timeout'/');
        
        
    // Some programs (like Form1 Bilder) check $_POST array to see if parameters passed
        // So need to clear password protector variables
        
    unset($_POST['access_login']);
        unset(
    $_POST['access_password']);
        unset(
    $_POST['Submit']);
      }

    }

    else {

      
    // check if password cookie is set
      
    if (!isset($_COOKIE['verify'])) {
        
    showLoginPasswordProtect("");
      }

      
    // check if cookie is good
      
    $found false;
      foreach(
    $LOGIN_INFORMATION as $key=>$val) {
        
    $lp = (USE_USERNAME $key '') .'%'.$val;
        if (
    $_COOKIE['verify'] == md5($lp)) {
          
    $found true;
          
    // prolong timeout
          
    if (TIMEOUT_CHECK_ACTIVITY) {
            
    setcookie("verify"md5($lp), $timeout'/');
          }
          break;
        }
      }
      if (!
    $found) {
        
    showLoginPasswordProtect("");
      }

    }
    ?>
    Per proteggere una pagina basta richiamare questa con un include.

    Io vorrei però che per utenti diversi fosse riservato l'accesso a diverse aree del sito.
    Nella condizione in cui è ora, il codice da un accesso identico sia a "admin" che a "user". Io vorrei che se "user" cerca di entrare ad esempio in un'area di amministrazione ricevesse un messaggio del tipo "Non hai i privilegi per accedere a questa pagina".

    Come posso fare? Qual è il codice che devo aggiungere in quelle righe sopra e all'interno delle altre pagine per fare in modo da avere accessi discriminati? Serve una sessione?

    Un'altra cosa.
    I dati di accesso, come mostrato, sono inclusi direttamente all'interno del codice

    Codice PHP:
    // Add login/password pairs below, like described above
    // NOTE: all rows except last must have comma "," at the end of line
    $LOGIN_INFORMATION = array(
      
    'admin' => 'adminpsw',
      
    'user' => 'userpsw'
    ); 
    Come potrei fare se invece volessi richiamare i dati da database, considerando di avere una tabella UTENTI con campi ID, USER e PSW?

    Grazie dell'aiuto!

  2. #2
    Up! Aiutatemi vi prego

  3. #3
    Scusate se lo riporto su ma sono ancora in alto mare, aiuto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.