PHP viena no galvenajām funkcijām ir HTML formu datu apstrāde servera pusē. Kad lietotājs aizpilda formu un nospiež pogu, dati tiek nosūtīti uz PHP skriptu apstrādei.

GET un POST metodes

Formu dati tiek nosūtīti ar vienu no divām metodēm:

  • GET — dati redzami URL adresē (piemēram, meklēšanai). Piemērots neliela apjoma datiem
  • POST — dati tiek nosūtīti slēptā veidā. Piemērots parolēm, veidlapām, lielākiem datiem

Vienkārša formas apstrāde

HTML forma (forma.html):

<form action="apstrade.php" method="post">
<label for="vards">Vārds:</label>
<input type="text" id="vards" name="vards">

<label for="epasts">E-pasts:</label>
<input type="email" id="epasts" name="epasts">

<button type="submit">Nosūtīt</button>
</form>

PHP apstrāde (apstrade.php):

<?php
$vards = $_POST['vards'];
$epasts = $_POST['epasts'];

echo "Sveiks, $vards!";
echo "Tavs e-pasts: $epasts";
?>

$_POST un $_GET ir superglobālie masīvi, kas satur formas datus.

Datu validācija un drošība

Nekad neuzticieties lietotāja datiem! Vienmēr pārbaudiet un attīriet ievadītos datus.

<?php
// Pārbaudīt, vai dati ir nosūtīti
if ($_SERVER['REQUEST_METHOD'] === 'POST') {

// Attīrīt tekstu
$vards = htmlspecialchars(trim($_POST['vards'] ?? ''), ENT_QUOTES, 'UTF-8');
$epasts = filter_input(INPUT_POST, 'epasts', FILTER_VALIDATE_EMAIL);

// Validēt
$kļūdas = [];

if (empty($vards)) {
$kļūdas[] = "Vārds ir obligāts.";
}
if ($epasts === false) {
$kļūdas[] = "Nederīga e-pasta adrese.";
}

if (empty($kļūdas)) {
echo "Paldies, $vards! Dati saņemti.";
} else {
foreach ($kļūdas as $kļūda) {
echo "<p style='color:red;'>$kļūda</p>";
}
}
}
?>

Forma un apstrāde vienā failā

<?php
$ziņojums = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$vards = htmlspecialchars(trim($_POST['vards'] ?? ''), ENT_QUOTES, 'UTF-8');
if (!empty($vards)) {
$ziņojums = "Sveiks, $vards!";
}
}
?>

<!DOCTYPE html>
<html lang="lv">
<head><meta charset="UTF-8"><title>Forma</title></head>
<body>
<?php if ($ziņojums): ?>
<p><?= $ziņojums ?></p>
<?php endif; ?>

<form method="post">
<label>Vārds: <input type="text" name="vards"></label>
<button type="submit">Nosūtīt</button>
</form>
</body>
</html>

Failu augšupielāde

<!-- HTML forma ar enctype -->
<form method="post" enctype="multipart/form-data">
<input type="file" name="fails">
<button type="submit">Augšupielādēt</button>
</form>

<?php
if (isset($_FILES['fails']) && $_FILES['fails']['error'] === UPLOAD_ERR_OK) {
$tmp = $_FILES['fails']['tmp_name'];
$nosaukums = basename($_FILES['fails']['name']);
$izmērs = $_FILES['fails']['size'];

// Pārbaudīt izmēru (maks. 2MB)
if ($izmērs > 2 * 1024 * 1024) {
echo "Fails ir par lielu!";
} else {
move_uploaded_file($tmp, "augšupielādes/$nosaukums");
echo "Fails '$nosaukums' augšupielādēts!";
}
}
?>