Hosting Solutions
 
Azienda  |  Listino  |  Assistenza  |  Rinnova servizi  |  Area Utenti ]
Rss Feed Twitter Facebook Tel: 055.3031.2626
info@hostingsolutions.it
Domini Email Hosting Virtual Private Server Server  dedicati E-commerce Site Generator Rivenditori
Domande frequenti
Guide on-line
Assistenza tecnica on-line

Hosting php MySQL

Piano Silver Linux
Registrazione dominio
1 GB Spazio web
20 GB traffico mensile
Ampiezza banda no limit
S.O. Linux
Supporto php, Perl
20 MB db mySQL
10 email da 250 MB
Statistiche Easy Stats

€ 65 +iva/anno

Dettagli
Ordina

Protezione di pagine con PHP tramite variabili di sessione

proteggere aree del vostro sito con php non è troppo difficile. Si possono usare a tale scopo le variabili di sessione. L'esempio qui riportato utilizza quattro file:

più tutte le pagine protette (nel nostro esempio solamente inizia.php). Il principio è piuttosto semplice: verificato il login, viene impostata una variabile di sessione, in particolare autorizzato, che verrà poi testata in ogni pagina da proteggere. Il controllo avviene tramite il minuscolo script check.php, che deve essere incluso in tutte le pagine riservate, prima del tag <html>. Tutti i nomi utente e password sono contenuti in un file di testo. Tale file (pasx.txt) in questo esempio, per semplificare, è leggibile in chiaro, ma si può aumentare notevolmente il livello di sicurezza criptando sia il nome utente che la password tramite, ad esempio, la codifica MD5: http://www.php.net/manual/en/function.md5.php

Un ulteriore grado di protezione può essere introdotto posizionando il file pasx.txt all'interno di una cartella dedicata, e rendendolo inaccessibile alla lettura via web tramite il pannello di controllo sui piani windows, e tramite il file .htaccess su linux. La soluzione ottimale è naturalmente quella di conservare i dati di accesso in un database.

La struttura di pasx.txt è la seguente:

pasx.txt

prova~:~prova
test~:~test
tentativo~:~tentativo

ogni riga del file contiene una coppia (userid,passwd) separata dai caratteri speciali ~:~

login.php

<?php
session_start();
if (isset($_POST["invio"])) {
  $puntatore = fopen("testi/pasx.txt", "r");
  $trovato = 0;
  while ((!feof($puntatore)) && (!$trovato)) {
    $linea = fgets($puntatore);
    $trovato = stristr($linea, $_POST["userid"]);
    $puntatore++;
  }
  fclose($puntatore);
  list($nomeutente, $password) = split("~:~", $linea);
  if (($trovato)  && ($_POST["passwd"] == trim($password))) {
    session_register('autorizzato');
    $_SESSION["autorizzato"] = 1;
    $destinazione = "inizia.php";
  } else {
    $destinazione = "destroy.php";
  }
  echo '<script language=javascript>document.location.href="'.$destinazione.'"</script>';
} else {
  // HTML ?>
  
  <html>
  <head>
  <title>Prova Login php</title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  </head>
  <body>
  <form method=post action="login.php">
    <table width="300" cellpadding="4" cellspacing="1" border="0">
      <tr>
        <td colspan="2" align="left">
          <u>inserite nome utente e password</u>:
        </td>
      </tr>
      <tr>
        <td>
          nome utente: 
        </td>
        <td>
          <input type="text" name="userid">
        </td>
      </tr>
      <tr>
        <td>
          password: 
        </td>
        <td>
          <input type="password" name="passwd">
        </td>
      </tr>
      <tr>
        <td colspan="2">
          <input type="submit" name="invio" value="invio">
          &nbsp;&nbsp;
          <input type="reset" name="cancella" value="cancella">
        </td>
      </tr>
    </table>
    <br>
  </form>
  </body>
  </html>
<? //fine HTML
}
?>

Lo script login.php si preoccupa di mostrare all'utente il form di immissione dati (userid e passwd) e di verificare che i valori immessi corrispondano ad una delle coppie presenti nel file pasx.txt. Se l'utente viene riconosciuto, lo script, dopo aver inizializzato sia la sessione che la variabile autorizzato, indirizza il browser verso la prima pagina protetta inizia.php, altrimenti richiama lo script destroy.php che elimina tutto il contenuto della sessione aperta. E' importantissimo, per il funzionamento del sistema, che la pagina login.php riporti la riga di codice:

<? session_start(); ?> prima del tag <html>.

check.php

<?php
session_start();
if (!session_is_registered('autorizzato')) {
  echo "<h1><span class="titoloparagrafo">Area riservata - accesso negato</span></h1>";
  die;
}
?>

Una volta attivata la variabile di sessione autorizzato, ogni pagina che includerà lo script check.php verrà visualizzata senza problemi. Se il login non ha avuto successo, invece, viene mostrato un messaggio di errore.

Tutte le pagine protette dovranno contenere, prima del tag <html>, questa riga di codice:

<? include("check.php"); ?> La sessione viene terminata in due modi, chiudendo il browser, o richiamando lo script destroy.php.

destroy.php

<?php
session_start();
session_unset();
session_destroy();
?>
<script language="JavaScript">
document.location.href = "login.php"
</script>

Gli script mostrati in questo breve esempio non sono completi, e devono essere integrati nelle vostre pagine. Qui di seguito un esempio di pagina protetta dalla variabile di sessione autorizzato:

inizia.php

<? include("check.php"); ?>
 
<html>
<head>
<title> Pagina di test - PHP login </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
Esempio: login effettuato con successo
</body>
</html>
 
[ Hosting Solutions | Copyright © 1999 - 2010 Genesys Informatica Srl. P.iva 02002750483 | Privacy | Regolamentazione | Mappa del sito ]
Associazione Hosters Registrars Italiani