Files
2025-09-24 08:59:35 +02:00

78 lines
2.9 KiB
PHP

<!doctype html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>T59b</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>Zadanie T59b</h1>
<h2>Autor: Jakub Grzegorczyk</h2>
</header>
<div class="box">
<p>PHP Przesyłanie danych użytkownika <br><br>
(Podstawowa wersja rozwiązania) <br>
Utwórz skrypt, który dane użytkownika przesyłane za pomocą formularza będzie przekazywał do utworzonego pliku cookie. Formularz powinien zawierać imię i nazwisko użytkownika.
<br><br>
(Wersja rozszerzona)<br>
Dodatkowo przekazana jest również data urodzin użytkownika. Skrypt powinien wyświetlać informację, za ile dni użytkownik będzie obchodził urodziny.</p>
</div>
<div class="box">
<form action="index.php" method="post">
<label for="imie">Imie: </label><br>
<input type="text" name="imie" id="imie"><br>
<label for="nazwisko">Nazwisko: </label><br>
<input type="text" name="nazwisko" id="nazwisko"><br>
<label for="data">Data urodzin: </label><br>
<input type="date" name="data" id="data"><br>
<button type="submit">Wyślij</button>
</form>
</div>
<div class="box">
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
setcookie('imie', $_POST['imie'], time() + 3600);
setcookie('nazwisko', $_POST['nazwisko'], time() + 3600);
setcookie('data', $_POST['data'], time() + 3600);
}
if (isset($_COOKIE['imie']) && isset($_COOKIE['nazwisko']) && isset($_COOKIE['data'])) {
function daysUntilNextBirthday(string $birthDate): ?int
{
$parts = explode('-', $birthDate);
if (count($parts) !== 3) {
return null;
}
$now = time();
$currentYear = (int)date('Y');
$parts[0] = (string)$currentYear;
$candidate = implode('-', $parts);
$target = strtotime($candidate);
if ($target === false) {
return null;
}
if ($target < $now) {
$parts[0] = (string)($currentYear + 1);
$candidate = implode('-', $parts);
$target = strtotime($candidate);
if ($target === false) {
return null;
}
}
return (int)ceil(($target - $now) / 86400);
}
echo "Witaj " . $_COOKIE['imie'] . " " . $_COOKIE['nazwisko'];
echo "<br>";
echo "Twoje urodziny będą za " . (daysUntilNextBirthday($_COOKIE['data'])) . " dni.";
}
?>
</div>
</body>
</html>