95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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 (?, ?, ?, ?, ?)";
 | 
						|
 | 
						|
    $connection = connectionDB();
 | 
						|
 | 
						|
 | 
						|
    $statement = mysqli_prepare($connection, $sgl);
 | 
						|
 | 
						|
    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";
 | 
						|
            /**..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);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
?>
 | 
						|
<!DOCTYPE html>
 | 
						|
<html lang="cs">
 | 
						|
<head>
 | 
						|
    <meta charset="UTF-8">
 | 
						|
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
						|
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
    <title>Document</title>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<?php require "assets/header.php" ?>
 | 
						|
 | 
						|
<main>
 | 
						|
    <section class="add-form">
 | 
						|
    <?php require "assets/formular-zak.php"; ?>   
 | 
						|
 | 
						|
    </section>
 | 
						|
 | 
						|
</main>
 | 
						|
 | 
						|
 | 
						|
<?php require "assets/footer.php" ?>
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 |