Nel cercare in rete la strada per realizzare una pagina che sia riservata, che abbia accesso limitato solamente a chi conosce la password, mi sono spesso imbattuto nella frase "modi semplici non ce ne sono, se si vuole usare PHP".
Allora ho cercato, mischiando un po' di cose recuperate qua e là e usando un po' di logica con quei quattro comandi in php che conosco, di arrangiarmi provando a rendere la cosa più semplice possibile.

Credo di esserci riuscito. Infatti la situazione si riassume in DUE sole pagine da realizzare: una pagina di login, che conterrà anche il codice php "di controllo" e -chiaramente- la pagina protetta. Se ne può creare quante si vuole, basta aggiungere all'inizio di ogni pagina che si vuol proteggere (prima di ogni altra cosa) le istruzioni <?php session_start(); etc. etc. fino a ?>.
Le due pagine si chiameranno login.php e protetta.php ed eccone la composizione di base:

login.php

Codice PHP:
<?php
session_start
();
$password="xxxxxx"; /* inserire su questa riga la password voluta */
if (isset($_SESSION['login'])) {
if (isset(
$_POST['logout'])) {
unset(
$_SESSION['login']);
$messaggio = "Logout effettuato con successo! Arrivederci!";
} else {
header("Location: protetta.php");
}
} else {
if (isset(
$_POST['password'])) {
if (
$_POST['password'] == $password) {
$_SESSION['login'] = "verificata";
header("Location: protetta.php");
} else {
$messaggio = "Errore: password non corretta!";
}
}
}
?>

<html>
<head>
</head>
<body>


<form name="login" action="login.php" method="post">
<input type="password" name="password" value=""/> &nbsp; <input type="submit" value="Entra"/>
</form>


<?php
if(isset($messaggio)) {
echo
$messaggio;
unset(
$messaggio);
}
?>


</body>
</html>

protetta.php

Codice PHP:
<?php
session_start
();
if (!isset(
$_SESSION['login'])) {
header("Location: login.php");
}
?>

<html>
<head>
</head>
<body>


<form name="logout" action="login.php" method="post">
<input type="hidden" name="logout" value="esci"/>
<input type="submit" value="Logout"/>
</form>


</body>
</html>

Commento velocemente e in parole molto semplici (ricordo che il tutorial non è certo destinato a chi mastica bene un codice di programmazione) come funziona la cosa:

login.php inizia con il controllare se si è già loggati, cioè se si ha il "permesso di accesso" (cioè, esplicitamente, se la variabile di sessione login è settata). Se sì, si viene reindirizzati automaticamente alla pagina protetta, a meno che non si sia premuto il pulsante di logout (che cancella il permesso di accesso e stampa a video il messaggio "Logout effettuato con successo! Arrivederci!").
Se non si ha il permesso di accesso e l'utente digita la password, se questa è corretta si "carica" il permesso e si accede direttamente alla pagina protetta, se invece la password è sbagliata viene stampato il messaggio "Errore: password non corretta!"
Poi comincia il codice HTML (vestito con lo stile CSS che più piace) e, dove si vuole, si colloca il form per la password e il codice php dove si vuole vengano visualizzati i messaggi di cui sopra.

protetta.php inizia con il controllo del permesso di accesso, che, se non c'è, si viene reindirizzati alla pagina di login. Poi c'è tutto il codice HTML, con il contenuto che si desidera e che, ovviamente, sarà visibile se si ha il permesso. Poi, dove si vuole, si colloca il form, che è semplicemente un pulsante, per il Logout (che rimanderà alla pagina di login, cancellando il permesso di accesso).

Come si può osservare, questa è una guida per creare pagine protette da password davvero minimale e semplice da realizzare: non ci sono protezioni nel caso si ripeta più volte una password errata, non ci sono accessi ad un'area riservata con più utenti a livelli diversi di permesso... però sono quattro righe di codice, interpretabili con facilità e gestibili da chiunque abbia una dimestichezza di base con l'HTML, non serve un database... in pratica l'ideale per chi desidera farsi un sito da sé e voglia crearsi un'area riservata dove tenere i suoi file nascosti in maniera diciamo discretamente sicura (eviterei dati sensibili tipo carta di credito o simili).

Le istruzioni per il montaggio sono semplicemente quelle di caricare le due pagine su una stessa directory, ad esempio www.miosito.it/riservato in modo da poter bloccare con un file robots.txt tutta la directory (così Google e cugini non la indicizzano, vedi qui). Sul menu del sito, il link "Area Riservata" punterà alla pagina login.php (aggiungete anche l'attributo rel="nofollow", vedi qui): ci penserà lo script PHP a reindirizzare, qualora si abbia il permesso, alla pagina protetta. Il permesso scade -in genere- se si preme il pulsante di logout o si chiude il browser.

Nota bene: ricordarsi di scrivere il codice php che comincia con session_start() proprio all'inizio, prima di qualsiasi altra cosa.

Buon divertimento e buona sperimentazione!