Formuláře v PHP
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				 (Vytvoření stránky.)  | 
		m (→Uložení dat do souboru:  Doplněn odkaz na Ošetření vstupních proměnných)  | 
		||
| Řádka 19: | Řádka 19: | ||
** přepínače... volitelný parametr. <code>FILE_APPEND</code> zařídí, že pokud soubor už existuje, nepřepíše se, ale data se přiřadí na konec.  | ** přepínače... volitelný parametr. <code>FILE_APPEND</code> zařídí, že pokud soubor už existuje, nepřepíše se, ale data se přiřadí na konec.  | ||
* Následně provedeme přesměrování stránky tak, aby uživatel opětovným načtením stránky (klávesa F5) nemohl data zapsat vícekrát.  | * Následně provedeme přesměrování stránky tak, aby uživatel opětovným načtením stránky (klávesa F5) nemohl data zapsat vícekrát.  | ||
| + | |||
| + | <div class="Varovani">  | ||
| + | # Před použitím dat z formuláře bychom měli provést [[Ošetření vstupních proměnných| ošetření vstupních proměnných]].  | ||
| + | # Data pro ukládání bychom měli vždy předávat metodou POST, nikoli GET.  | ||
| + | </div>  | ||
<div class="Priklad">  | <div class="Priklad">  | ||
| Řádka 34: | Řádka 39: | ||
  ?>  |   ?>  | ||
; Poznámky:  | ; Poznámky:  | ||
| − | * <code>filter_var(...)</code>... ošetří vstupní text tak, aby nemohl obsahovat speciální znaky, které by šly zneužít pro code injection a podobné techniky.  | + | * <code>filter_var(...)</code>... [[Ošetření vstupních proměnných| ošetří vstupní text]] tak, aby nemohl obsahovat speciální znaky, které by šly zneužít pro code injection a podobné techniky.  | 
* <code>\t</code> a <code>\n</code>... znaky, zastupující tabulátor, resp. konec řádku.  | * <code>\t</code> a <code>\n</code>... znaky, zastupující tabulátor, resp. konec řádku.  | ||
* <code>header(...)</code>... odešle prohlížeči hlavičku protokolu HTTP s uvedeným názvem. V tomto případě požádá prohlížeč, aby načetl uvedenou stránku (nejspíš zde bude výpis hlášení, že zápis byl úspěšně proveden).  | * <code>header(...)</code>... odešle prohlížeči hlavičku protokolu HTTP s uvedeným názvem. V tomto případě požádá prohlížeč, aby načetl uvedenou stránku (nejspíš zde bude výpis hlášení, že zápis byl úspěšně proveden).  | ||
</div>  | </div>  | ||
Verze z 10. 12. 2014, 15:52
Vytvoření formuláře
- K vytvoření formuláře používáme jazyk HTML.
 - Viz w3schools.com → HTML Forms.
 
Zpracování dat
Uložení dat do souboru
- Pro uložení dat z formuláře používáme typicky databázi nebo soubor.
 -  Pro zápis do souboru použijeme funkci 
file_put_contents(...). -  Parametry funkce:
- název souboru... do kterého data uložíme
 - text... který se má zapsat
 -  přepínače... volitelný parametr. 
FILE_APPENDzařídí, že pokud soubor už existuje, nepřepíše se, ale data se přiřadí na konec. 
 - Následně provedeme přesměrování stránky tak, aby uživatel opětovným načtením stránky (klávesa F5) nemohl data zapsat vícekrát.
 
- Před použitím dat z formuláře bychom měli provést ošetření vstupních proměnných.
 - Data pro ukládání bychom měli vždy předávat metodou POST, nikoli GET.
 
- Ukázka skriptu action_store_data.php
 
<?php
   $novyRadek = filter_var($_POST["jmeno"], FILTER_SANITIZE_FULL_SPECIAL_CHARS)."\t";
   if ($_POST["souhlasi"] == "ano") $novyRadek .= "ano\t";
   else $novyRadek .= "ne\t";
   $novyRadek .= "\n";
   
   file_put_contents($NAZEV_SOUBORU, $novyRadek, FILE_APPEND);
   
   header("Location: /vyreseno.php");
   die();
?>
- Poznámky
 
-  
filter_var(...)... ošetří vstupní text tak, aby nemohl obsahovat speciální znaky, které by šly zneužít pro code injection a podobné techniky. -  
\ta\n... znaky, zastupující tabulátor, resp. konec řádku. -  
header(...)... odešle prohlížeči hlavičku protokolu HTTP s uvedeným názvem. V tomto případě požádá prohlížeč, aby načetl uvedenou stránku (nejspíš zde bude výpis hlášení, že zápis byl úspěšně proveden).