Salta ai contenuti

PHP e HTML

HTML descrive la pagina. PHP prepara dati e pezzi dinamici della pagina.

<?php
$titolo = "Benvenuto";
?>
<h1><?php echo $titolo; ?></h1>

PHP calcola il valore. HTML lo mostra.

Per stampare un valore puoi usare echo.

<?php
$nome = "Luca";
?>
<p>Ciao, <?php echo $nome; ?>!</p>

Esiste anche una forma breve:

<p>Ciao, <?= $nome ?>!</p>

<?= $nome ?> significa: stampa questo valore.

Cerca di preparare i dati prima dell’HTML.

<?php
$utente = [
"nome" => "Sara",
"ruolo" => "amministratrice",
];
?>
<h1><?= $utente["nome"] ?></h1>
<p>Ruolo: <?= $utente["ruolo"] ?></p>

Questo rende la pagina piu leggibile: prima organizzi i dati, poi li mostri.

<?php
$prodotti = ["Penna", "Quaderno", "Zaino"];
?>
<ul>
<?php foreach ($prodotti as $prodotto): ?>
<li><?= $prodotto ?></li>
<?php endforeach; ?>
</ul>

La sintassi con endforeach e comoda nei template HTML per evitare troppe parentesi graffe.

Quando stampi dati che arrivano da utenti, usa htmlspecialchars.

<p><?= htmlspecialchars($nome, ENT_QUOTES, 'UTF-8') ?></p>

E una piccola abitudine che evita molti problemi di sicurezza.

Quando lavori in una pagina mista, prova a pensare in due fasi:

  1. PHP prepara i dati
  2. HTML mostra i dati
<?php
$titolo = "Catalogo";
$numeroProdotti = 3;
?>
<h1><?= htmlspecialchars($titolo, ENT_QUOTES, 'UTF-8') ?></h1>
<p>Prodotti disponibili: <?= $numeroProdotti ?></p>

Questo ordine evita di infilare calcoli lunghi in mezzo al markup.

Puoi mostrare HTML diverso in base a una condizione.

<?php
$utenteLoggato = false;
?>
<?php if ($utenteLoggato): ?>
<p>Benvenuto nella tua area personale.</p>
<?php else: ?>
<p>Accedi per continuare.</p>
<?php endif; ?>

Questa forma e leggibile nei template perche separa bene il codice PHP dai pezzi HTML.

Se dentro l’HTML inizi ad avere molti calcoli, query al database o controlli lunghi, la pagina diventa difficile da mantenere. Prepara prima i dati in PHP, poi usa il template solo per mostrarli.