Home > Programmazione > Creare pagine protette da password

Creare pagine protette da password

Rieccomi… dopo tanto tempo, impegnato nelle mille cose della vita, ritorno a pubblicare su questo blog, e come al solito, cosa potrebbe essere se non qualcosa di programmazione!

Dopo in convenevoli di turno, passiamo al post vero è proprio:

A chi non è mai capitato di aver bisogno di una zona riservata all’interno del proprio sito accessibile solamente tramite password?! Io personalmente conosco tanta gente, ma molti di loro, si affidano a funzioni Javascript, che se sono belle da vedere e velocissime da implementare, sono troppo poco sicure. Chinque con un minimo di conoscenza, potrebbe vedervi la password e accedere ai vostri dati, questo perchè il codice Javascript, viene eseguito dal browser, e quindi la password in chiaro, si trova all’interno del codice stesso.

Per aiutarvi ad ovviare a questi problemi, di seguito, vi spiego come creare delle pagine protette tramite password, ma con script PHP.

Come al solito, vi conviene testare il tutto in fase di creazione su un server locale (se non sai installarlo, clicca qui), cosi da potervi studiare per bene il funzionamento del tutto. Incominciamo:

Prima di tutto facciamo l’elenco delle pagine che dovremmo creare:

  • form.php
  • login.php
  • logout.php
  • controllo.php
  • errore.php

Partiamo subito con la prima pagina, controllo.php, che controlla se ci si è loggato oppure no.

<?php
/* Serve per aprire la sessione. Prima di questa istruzione, non va stampato niente, neanche i
commenti html */

session_start();
/* Controlla se si può accedere alle pagine riservate del sito,
nel caso non si possegga i requisiti necessari reindirizza ad una pagina di errore.
Il valore 0 sta per non autorizzato, mentre il valore 1 sta per autorizzato
*/

if($_SESSION['autorizzato'] == 0){
header(“Location: errore.php”, true);
}
?>

Questa pagina, andrà poi inclusa nelle pagine, che desideriamo tener protette dalla password (con la funzione include(‘controllo.php’); che va messa prima di qualunque altra istruzione). Andrà inclusa per prima senza scrivere nient’altro prima dell’inclusione. In caso contrario il server vi restituirà un errore. Come al solito per la spiegazione approfondita delle singole istruzioni, vi rimando al sito php.net.

Ora creiamo la pagina errore.php, questa è una semplice pagina che stamperà il messaggio di errore, per esempio potrà essere fatta cosi:

<?php
/* Serve per aprire la sessione. Prima di questa istruzione, non va stampato niente, neanche i
commenti html */

session_start();
?>
Non sei autorizzato ad entrare nella zona riservata

L’unica cosa che verrà stampata, sarà “Non sei autorizzato ad entrare nella zona riservata”, cosi da tenere segreti i vostri documenti personali protetti da password. Logicamente, potete sbizzarrirvi, con i messaggi di errore, mettendone di nuovi, o mettendo gif, faccine, musica ecc… siete limitati dalla vostra sola fantasia.

Adesso siamo giunti alla pagina del form (form.php), questa, vi permetterà di inserire i vostri dati per loggarvi (nel caso non lo siate già) o di andare alla pagina di logout, nel caso siate già loggati, eccovi il codice:

<?php
/* Serve per aprire la sessione. Prima di questa istruzione, non va stampato niente, neanche i
commenti html */

session_start();
/*Qui controlliamo se siamo già loggati oppure no, con la stessa modalità usata nella pagina
controllo.php
Nel caso si è loggati, compare un link per la pagina di logout, in caso contrario appare il form
per l’inserimento dei dati */

if($_SESSION['autorizzato'] == 0){ ?>
<form action=”login.php” method=”post”><br/>
Nome: <input type=”text” name=”Nome” /><br/>
Password: <input type=”password” name=”Pass” /><br/>
<input type=”submit” name=”Submit” value=”Login” />
</form>
<?php }else{ ?>
Siete già loggato<br/>
<a href=”logout.php”>logout</a>
<?php }
?>

Siamo quasi giunti alla fine, mancano solo due pagine, due pagine che si possono definire il cuore di tutto quanto, ma al contempo molto facili da creare.

Passiamo quindi senza indugiare oltre alla pagina login.php

<?php
/* Serve per aprire la sessione. Prima di questa istruzione, non va stampato niente, neanche i
commenti html */

session_start();
/* Qui impostiamo il nickame e la password. Potete mettere il valore che volete, sta a voi inventarne
di nuovi */

$admin = “gestore”;
$pass = “password”;    /*catturiamo i valori passati dalla pagina precedente, tramite il form.
La funzione htmlspecialchars, serve per evitare spiacevoli sorprese da
parte di malintenzionati */

$nome = htmlspecialchars($_POST['Nome']);
$password = htmlspecialchars($_POST['Pass']);
/* controlliamo che nome e pass inseriti, corrispondano a quelli da noi scelti */
if($nome == $admin && $password == $pass){
/* Impostiamo l’autorizzazione a 1 */
$_SESSION['autorizzato'] = 1;
echo(“Benvenuto.<br/>&Egrave; appena entrato nella zona riservata del sito”);
}else{
echo(“Accesso negato!<br/>Controlli i dati inseriti”);
}
?>

Siamo giunti all’ultima pagina, quella di logout, dopotutto, se entriamo, dobbiamo poter pur uscire dal forum, mica possiamo tenere la gente intrappolata nel nostro sito, e cosi passiamo all’ultimo codice

<?php
/* Serve per aprire la sessione. Prima di questa istruzione, non va stampato niente, neanche i
commenti html */

session_start();
/*Controlliamo se la persona è loggata, nel caso lo sia, mettiamo l’autorizzazione a 0
e stampiamo un messaggio di saluti, in caso contrario, ci limitiamo a stampare un
messaggio di errore */

if($_SESSION['autorizzato'] == 1){
$_SESSION['autorizzato'] = 0;
echo(“Arrivederci.<br/>&Egrave; uscito dalla sezione di amministrazione del sito”);
}else{
echo(“Non pu&ograve; uscire dall&acute;amministrazione del sito non essendosi loggato”);
}
?>

Ed eccoci giunti alla fine, avete visto, non c’è nulla di difficile, ed è molto veloce da implementare, quasi quanto quei codici javascript che trovate già pronti in rete, ma in più, vi da la sicurezza che solo un linguaggio di programmazione lato server può darvi.

Logicamente, partendo dalla mia base, potete lasciar andare la fantasia e implementare frasi e cornici di codice in html cosi da rendere il tutto programmabile. Il mio è solo il codice di base, diciamo il motore, la carrozzeria, tocca a voi farla. Quindi buon lavoro e buona programmazione, e continuate a seguirmi su questo blog o sul mio portfolio (ancora in costruzione).

  1. Sandfjöll Hafsteinn
    18 Luglio 2008 alle 11:37 | #1

    Hai anche una soluzione per chi non ha spazi web NON supportati dal php???
    In tal caso mi sarebbe proprio utile!

    Fjæderhöf!

    Sandsjöen86

  2. 19 Luglio 2008 alle 13:17 | #2

    Un qualsiasi linguaggio lato client è sempre poco sicuro e facilmente aggirabile se si hanno le conoscenze adeguate.

    Il consiglio che posso darti e di passare ad uno spazio web che supporti il php. C’è ne sono diversi anche gratuiti, tra cui il più famoso è sicuramente Altervista, ma ci sono anche netsons e helloweb

  3. Mark
    3 Ottobre 2008 alle 13:31 | #3

    grazie oggi stesso vedrò di provarci! Spero mi riesca facilmente! poi ti faccio sapere. Volevo chiederti anche se sai come creare uno spazio in cui automaticamente si può richiedere la registrazione al sito e poi confermando l’account si può entrare in quell’area protetta. Fammi sapere al + presto, ciao e ancora grazie!

  4. 3 Ottobre 2008 alle 17:37 | #4

    Certo, è molto semplice, si usano sempre mysql e php, appena ho un attimo di tempo, provvederò a fare un nuovo articolo riguardante tale funzione

  5. Mark
    3 Ottobre 2008 alle 22:59 | #5

    Golars ho bisogno del tuo aiuto allora!!!! Ho un problema….devo finire il lavoro entro martedì o al massimo entro mercoledì….quindi se magari ti lascio il mio indirizzo email o cmq il contatto messenger: raziel8@hotmail.it tu mi aggiungi se ce l’hai altrimenti mi mandi una mail che ti devo chiedere un sacco di cose!!!! Hai un’anima che si sta penando da quasi una settimana a cercare di studiare le miriadi di materie del quinto e contemporaneamente studiare l’html e dedicarsi a un sito…Grazie cmq in anticipo! Ciao!

  6. gab
    27 Dicembre 2008 alle 16:59 | #6

    Ciao!

    Mi da il seguente errore:

    Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:\xampp\htdocs\sito vaiano\form.php:10) in C:\xampp\htdocs\sito vaiano\form.php on line 13

    Che devo fare secondo te??

  7. claudio
    19 Gennaio 2009 alle 17:39 | #7

    apprezzo moltoiltuoaiutoe e le tue spiegazioni…..mi chiedosolouna cosa se volessi applicare lo script ad un sito che necessita di accesso a pagine private per ogni login diverso si possono fare modifiche per l’indirizzamento separato.
    grazie per l’attenzione

  8. 20 Gennaio 2009 alle 23:06 | #8

    Si questo è solo uno script di partenza, poi con le dovute modifiche si può fare tranquillamente quello che desideri.

    Per rispondere a quello sopra. Probabilmente ti da l’errore perchè hai scritto qualcosa prima di session_start();

  9. Pasquale
    7 Luglio 2009 alle 08:51 | #9

    una info anche nel circuito web blogspot è possibile creare all’interno del sito una pagina web con password d’accesso?
    se si mi dite come
    Grazie

  1. No trackbacks yet.