Diventa il massimo esponente della letteratura condominiale nella tua zona usando PHP e la programmazione orientata agli oggetti

area riservata protetta da sessione

All’ indirizzo http://umbriawayformazione.altervista.org/phpoop_project_awards/ umbriaway consulting ha messo in piedi questo CMS con PHP OOP (Object Oriented Programming) per monitorare i risultati nell’ ambito della letteratura condominiale, dove spesso mi vengono attribuiti dei riconoscimenti tra i tanti premi organizzati nella nostra penisola. L’oggetto del post è la tecnologia, ossia come posso io monitorare, tenere traccia, costruire un sistema di lavoro pro-attivo per ottenere dei risultati nel tempo e usando poi il CMS stesso come leva motivazionale per migliorare le performances, idea che si può applicare in tutti i campi e non solo alla letteratura. Vediamo prima come è articolato il sistema di protezione dell’ area riservata, ossia usando le sessioni. Partiamo dal form costruiuto sfruttando il supporto del W3S:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}
form {border: 3px solid #f1f1f1;}

input[type=text], input[type=password] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

button {
  background-color: #4CAF50;
  color: white;
  padding: 14px 20px;
  margin: 8px 0;
  border: none;
  cursor: pointer;
  width: 100%;
}

button:hover {
  opacity: 0.8;
}

.cancelbtn {
  width: auto;
  padding: 10px 18px;
  background-color: #f44336;
}

.imgcontainer {
  text-align: center;
  margin: 24px 0 12px 0;
}

img.alias {
  width: 20%;
  border-radius: 50%;
}

.container {
  padding: 16px;
}

span.psw {
  float: right;
  padding-top: 16px;
}

/* Change styles for span and cancel button on extra small screens */
@media screen and (max-width: 300px) {
  span.psw {
     display: block;
     float: none;
  }
  .cancelbtn {
     width: 100%;
  }
}
</style>
</head>
<body>

<div class="container" style="width:30%;align:center;margin:0 35%">
<center><h2>Login Form</h2></center>
<form name="login" action="gestisci.php" method="POST">

  <div class="imgcontainer">
    <img src="img/alias.jpg" alt="alias" class="alias">
  </div>

  <div class="container">
    <label for="uname"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="nomeutente" required>

    <label for="psw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="pwd" required>

    <button type="submit">Login</button>
  </div>

</form>
</div>

</body>
</html>

questa pagina spedisce i dati a gestisci.php usando action e il metodo POST, ossia i dati in transito viaggiano nascosti e non visibili sulla URL come avverrebbe usando invece GET. Si noterà che i campi del form hanno un nome identificativo come nomeutente e pwd, elementi molto importanti quelli inseriti nell’ attributo name. Che cosa fa la pagina gestisci.php?

<?
$nomeutente = "nomeutentescelto";
$pwd = "miapasswordscelta";

if ($_POST['nomeutente'] == $nomeutente && $_POST['pwd'] == $pwd) {
  session_start();
  $_SESSION['login'] = "ok";
  header("Location: home.php");
} else {
  header("Location: form.php");
}
?>

ossia se avrò digitato nel form i due valori settati per $nomeutente e $pwd partirà la sessione che in PHP corrisponde alla memoria che i servizi REST non hanno e verrà confermato il login con conseguente reindirizzamento alla pagina di atterraggio che corrisponde all’ area riservata. A questo punto è molto interessante vedere la porzione di codice nascosta in home.php perchè di fatto la pagina si comporterà in un modo se la sessione è attiva mostrando una barra di navigazione estesa e invece mostrerà una barra di navigazione ridotta se la sessione non è stata attivata e la pagina non consentirà nessuna navigazione a sezioni riservate:

<?
session_start();
if ($_SESSION['login'] == "ok") {
include("include/barranav1.php");
} else {
include("include/barranav.php");
} ?>

Questa semplice istruzione condizionale ci consentirà di catturare l’attivazione della session start che a sua volta ci consente di fare una scelta sulla barra di navigazione da caricare e non è cosa da poco. Da notare che se dopo il login su un browser tipo Firefox e andassi a copiare il contenuto della URL su un altro browser come explorer di fatto vedrei la barra di navigazione con le voci di menù ridotte che NON mi consentono di navigare sull’ area riservata, proprio perchè le sessioni consentono questo tipo di protezione dei dati. A questo punto posso creare un file che mi servirà da copiare come inclusione in tutte le pagine che voglio proteggere e questo file avrà al suo interno una istruzione di negazione che dirà se la sessione NON è stata attivata (espresso con il simbolo !=) reindirizza l’utente alla pagina del form per costringerlo a loggarsi!

<?
session_start();

if ($_SESSION['login'] != "ok") {
  header("Location: form.php");
}
?>

quindi mi basterà prendere tutti i file che voglio proteggere e scrivere in alto:

<?php include("fileinclusionescelto.php"); ?>

A questo punto manca il logout che distrugge le sessioni e riporta a zero la memoria del protocollo HTTP, quindi nel file logout.php richiamabili dai vari link della pagina base attivata con le sessioni, scriverò come contenuto:

<?php
session_start();
$_SESSION = array();
session_destroy();
$msg = "LOG-OUT EFFETTUATO.";
$msg = urlencode($msg); // non ci possono essere spazi nell'URL
header("location: home.php?msg=$msg");
exit();
?>

in questo modo la barra visualizzata tornerà ad essere quella con le opzioni ridotte che nasconde quella estesa che caratterizza l’area riservata. Fatte queste semplici operazioni non ci resta che analizzare il blocco OOP messo in piedi per il CRUD in una delle prossime sessioni di approfondimento con umbriaway consulting.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo:
close-alt close collapse comment ellipsis expand gallery heart lock menu next pinned previous reply search share star