Il codice che avevo promesso... sono tre file, un index.php, un chiedinome.html e un saluta.html. Il famoso "Ciao tuo nome" riproposto in uno scadente modello mcv. Dovrebbe comunque rendere un po' l'idea di cosa si parla. Come puoi vedere il codice PHP è tutto in un file ed in più distingui l'accesso ai dati, dalla visualizzazione dalla logica del programma. I file di presentazione (HTML) sono totalmente separati. Utilizzo dei segnaposti per le sostituzioni. Questo comunque è solo un esempio didattico, mai lo userei nella realtà.
Per brevità non ho commentato, ma se occorre chiedi e ti sarà dato!
Ciao!
File INDEX.PHP
codice:
<?php
session_start();
class controller{
private $model;
private $viewer;
public function Inizializza(){
$this->model=new model();
$this->viewer=new viewer();
if(isset ($_POST['nome']))
$this->model->Aggiorna($this,"SalvaNome");
else
$this->viewer->Seleziona ($this->model,"ChiediNome");
}
public function Notifica($value){
switch ($value) {
case "SalvatoNome":
$this->viewer->Seleziona($this->model,"Saluta");
break;
default:
break;
}
}
}
class model{
public function Aggiorna($controller,$cosa){
switch ($cosa) {
case "SalvaNome":
$_SESSION['nome']=htmlspecialchars(trim($_POST['nome']));
$controller->Notifica("SalvatoNome");
break;
default:
die('Operazione non gestita');
break;
}
}
public function Leggi($cosa){
return $_SESSION[$cosa];
}
}
class viewer{
private $model;
public function Seleziona($model,$cosa){
$this->model=$model;
$this->$cosa();
}
private function Saluta(){
$str=file_get_contents("saluta.html");
echo str_replace("$1$", $this->model->Leggi('nome'), $str);
}
private function ChiediNome(){
echo file_get_contents("chiedinome.html");
}
}
$controller=new controller();
$controller->Inizializza();
?>
File CHIEDINOME.HTML
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="index.php" method="post">
Nome: <input type="text" name="nome">
<input type="submit" value="Invia">
</form>
</body>
</html>
File SALUTA.HTML
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Ciao $1$
</body>
</html>