Diskuze: Časově omezený formulář
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Trošku to upřesni. Čeho chceš docílit, jak to aktuálně vypadá, pokud už máš formulář a jen ho chceš časově omezit apod.
Pokud ti jde jen jednoduše o to, aby formulář šel uložit jen v určitém časovém intervalu, tak nejjednodušší řešení je dát si do formuláře skryté políčko se zašifrovaným časem a po odeslání formuláře kontrolovat, jestli je čas po rozšifrování v povoleném časovém intervalu.
Potřebuješ skryté políčko s ID, které si uložíš na serveru. To bude
identifikovat konkrétní otevření formuláře a nést si informaci o tom, kdy
byl formulář spuštěn. Po odeslání kontroluješ, zda byl čas přesáhnut a
pokud bude delší, než 40 minut, tak formulář zahodíš (s rezervou
několika vteřin, kvůli prodlevě v odeslání)
Dále by se hodilo přidat políčko s časem spuštění i do formuláře, aby
jsi ho mohl vytáhnout javascriptem a podle toho uživateli zobrazit odpočet
času.
Diky za nasmerovani. ID mam v databazi. Akorad si lamu hlavu jak to zapsat v PHP a Java Scriptu. Mam chabe zkusenosti .
Zdravím,
zkouším rozjet na localu tento odpočet, ale nějak se mi to nedaří.
Odpočet se skládá ze dvou souborů odpocet.php a odpocet.js . Nějaká rada
prosím, kde dělám chybu?
odpocet.php
<html>
<BODY>
<head>
<title>neco</title>
<link rel="stylesheet" type="text/css" href="pokus.css">
</head>
<form action="neco.php" method="post">
<p id="odpocet" data-konec="12/24/2063 15:18:40" data-hlaska="Čas vypršel!" data-zbyva="Do odpočtu zbývá:"></p>
<script>
odpocet(document.getElementById('odpocet'));
</script>
<?php
?>
<!-- Tlačítko pro výpočet IQ -->
<input type="image" name="imageButton" id="imageButton" alt="..." src="images/ikona_spocitej Iq.jpg">
</form>
</BODY>
</html>
odpocet.js
var vterina = 1000;
var minuta = vterina * 60;
var hodina = minuta * 60;
var den = hodina * 24;
var rok = den * 365.24219;
var slova = {
roku: ["rok", "roky", "let"],
dnu: ["den", "dny", "dnů"],
hodin: ["hodina", "hodiny", "hodin"],
minut: ["minuta", "minuty", "minut"],
vterin: ["vteřina", "vteřiny", "vteřin"]
};
function sklonovani(pocet, co) {
if (pocet == 1) return slova[co][0];
if (pocet < 5 && pocet > 0) return slova[co][1];
return slova[co][2];
}
function odpocet(el) {
var konec = new Date(el.getAttribute("data-konec"));
var ted = new Date();
var rozdil = konec - ted;
if (rozdil < vterina) {
el.innerHTML = el.getAttribute("data-hlaska");
return;
}
var zbyva = {
roku: Math.floor(rozdil / rok),
dnu: Math.floor(rozdil % rok / den),
hodin: Math.floor((rozdil % den) / hodina),
minut: Math.floor((rozdil % hodina) / minuta),
vterin: Math.floor((rozdil % minuta) / vterina)
}
var vypis = el.getAttribute("data-zbyva");
for (co in zbyva) {
var pocet = zbyva[co];
if (pocet > 0) vypis += " " + pocet + " " + sklonovani(pocet, co);
}
el.innerHTML = vypis;
setTimeout(function() {
odpocet(el);
}, vterina);
}
Zobrazeno 8 zpráv z 8.