113 ochrana proti vložení skriptu, přesměrování

This commit is contained in:
kankys
2024-10-01 17:57:35 +02:00
parent 06061f84dc
commit 9e16b335c9
3 changed files with 52 additions and 13 deletions

View File

@ -1,13 +1,33 @@
<?php
/** XSS - cross-site scripting (ochrana proti spuštění scriptu)
* konvertuje speciální znaky na HTML
* vložit ho do HTML jako < ?= htmlspecialchars($first_name);?> do values, p či h1 atd.
* Notno ošetřit kde pomocí php zobrazuji data
*
*/
global $connection;
require "assets/database.php";
/**....proměnné pro zapamatování hodnot formuláře.... */
$first_name = null;
$second_name = null;
$age = null;
$life = null;
$college = null;
if ($_SERVER ["REQUEST_METHOD"] === "POST") {
/**....nastavení proměnných formuláře co si má pamatovat ( html část Value.... */
$first_name = $_POST["first_name"];
$second_name = $_POST["second_name"];
$age = $_POST["age"];
$life = $_POST["life"];
$college = $_POST["college"];
/**....vytvoření SQL dotazu pro vložení nového žáka + ochrana proti SQL injection.... */
$sgl = "INSERT INTO student (first_name, second_name, age, life, college)
VALUES (?, ?, ?, ?, ?)";
@ -19,11 +39,29 @@ if ($_SERVER ["REQUEST_METHOD"] === "POST") {
if ($statement === false) {
echo mysqli_error($connection);
} else {
/**..ochrana SQL injecton pomocí types (jako integer či string..*/
mysqli_stmt_bind_param($statement, "ssiss", $_POST["first_name"], $_POST["second_name"], $_POST["age"], $_POST["life"], $_POST["college"]);
/**.. provedení SQL dotazu pro vložení žáka..*/
if (mysqli_stmt_execute($statement)) {
$id = mysqli_insert_id($connection);
echo "Úspěšně vložen žák s ID: $id";
// echo "Úspěšně vložen žák s ID: $id";
/**..Máš povolený https server? Pokud máš HTTPS nastavený a není vypnutý nastav header na HTTPS (!= nesmí být vypnutý)
* else jinak nastav http:// na headeru
* */
if (isset($_SERVER["HTTPS"]) and $_SERVER["HTTPS"] != "off") {
$url_protocol = "https";
} else {
$url_protocol = "http";
}
// localhost = $_SERVER["HTTP_HOST"];
/**..po úspěšném vložení žáka přesměrujeme na stránku onoho žáka (relativní cesta) apsolutní by byla https://... ..*/
// header("location: jeden-zak.php?id=$id");
/**.. varianta apsolutní adresy kdy na webu nahradím localhost už jen adresou */
header("location: $url_protocol://" . $_SERVER["HTTP_HOST"] . "/PHP_DS_Project/www2databaze/jeden-zak.php?id=$id");
} else {
echo mysgli_stmt_error($statement);
}
@ -44,15 +82,16 @@ if ($_SERVER ["REQUEST_METHOD"] === "POST") {
<main>
<section class="add-form">
<form action="pridat-zaka.php" method="POST">
<input type="text" name="first_name" placeholder="Křestní jméno" required>
<input type="text" name="first_name" placeholder="Křestní jméno" required value="<?= htmlspecialchars($first_name )?>">
<br>
<input type="text" name="second_name" placeholder="Příjmení" required>
<input type="text" name="second_name" placeholder="Příjmení" value="<?= htmlspecialchars($second_name) ?>" required>
<br>
<input type="number" name="age" placeholder="Věk" min="10" required>
<input type="number" name="age" placeholder="Věk" min="10" value="<?= htmlspecialchars($age)?>" required>
<br>
<textarea name="life" placeholder="Podrobnosti o žákovi" required></textarea>
<!-- text area pamatovátko vložit mezi tagy -->
<textarea name="life" placeholder="Podrobnosti o žákovi" required><?= htmlspecialchars($life)?></textarea>
<br>
<input type="text" name="college" placeholder="Kolej" required>
<input type="text" name="college" placeholder="Kolej" value="<?= htmlspecialchars($college) ?>" required>
<br>
<input type="submit" value="Přidat žáka">
</form>