68 lines
2.7 KiB
PHP
68 lines
2.7 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>Z111 - Ramka ze znaków</title>
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>Zadanie Z111</h1>
|
|
<h2>Autor: Jakub Grzegorczyk</h2>
|
|
</header>
|
|
<div class="box">
|
|
<p>Napisz program, który rysuje ramkę według podanego schematu, gdzie a oznacza szerokość, a b wysokość ramki. Ramka powinna składać się wyłącznie z znaków pionowych (|) dla wszystkich krawędzi, z wypełnieniem spacjami wewnątrz. Użytkownik podaje a i b w formularzu, a program weryfikuje, czy wartości są liczbami całkowitymi dodatnimi. Dla przypadku a=1 i b=1 ramka powinna być pojedynczym znakiem |.</p>
|
|
<h3>Wskazówki dla ucznia:</h3>
|
|
<ul>
|
|
<li>Sprawdź, czy a i b są liczbami całkowitymi za pomocą is_numeric() i weryfikacji, czy po konwersji na int nie tracą wartości.</li>
|
|
<li>Zweryfikuj, czy a i b są dodatnie (większe od 0).</li>
|
|
<li>Użyj pętli do generowania wierszy ramki: dla a=1 i b=1 zwróć pojedynczy |, w przeciwnym razie górny i dolny wiersz z |, a środkowe z | i spacjami.</li>
|
|
<li>Wyświetl wynik w elemencie <pre>, aby zachować formatowanie tekstu.</li>
|
|
<li>Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.</li>
|
|
</ul>
|
|
</div>
|
|
<div class="box">
|
|
<form action="index.php" method="post">
|
|
<fieldset>
|
|
<legend>Wymiary ramki:</legend>
|
|
<label for="a">Szerokość (a):</label>
|
|
<input type="number" name="a" id="a" required>
|
|
<label for="b">Wysokość (b):</label>
|
|
<input type="number" name="b" id="b" required>
|
|
</fieldset>
|
|
<button type="submit">Wyślij</button>
|
|
</form>
|
|
</div>
|
|
<?php
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|
$a = htmlspecialchars($_POST['a']);
|
|
$b = htmlspecialchars($_POST['b']);
|
|
echo '<div class="box">';
|
|
echo "<p>Szerokość (a): $a <br>Wysokość (b): $b <br>Rezultat: </p>";
|
|
echo '<pre>';
|
|
if ($a > 0 && $b > 0) {
|
|
if ($a == 1 && $b == 1) {
|
|
echo '|';
|
|
} elseif ($b == 1) {
|
|
echo str_repeat('|', $a);
|
|
} elseif ($a == 1) {
|
|
for ($i = 0; $i < $b; $i++) {
|
|
echo "|\n";
|
|
}
|
|
} else {
|
|
echo str_repeat('|', $a) . "\n";
|
|
for ($i = 0; $i < $b - 2; $i++) {
|
|
echo '|' . str_repeat(' ', $a - 2) . "|\n";
|
|
}
|
|
echo str_repeat('|', $a);
|
|
}
|
|
}
|
|
echo '</pre>';
|
|
}
|
|
?>
|
|
</body>
|
|
</html>
|