Ich habe ein Formular, und ich möchte ein Benutzer es einmal am Tag senden. Wenn der Benutzer die Nachricht von mehr als einem Mal an einem Tag abschickt, wird die Nachricht zeigen, dass Sie es bereits getan haben!Beschränken Sie den Benutzer, um ein Formular einmal am Tag mit JQuery oder J.S oder
Antwort
Sie könnten dies tun, aber wenn der Benutzer die Seite wechselt, sind die Daten verschwunden. dies ist etwas, das Sie Javascript/jquery nicht umgehen sollte:
einen versteckten Eingang machen, wenn einreichen gedrückt wird, haben eine einreichen Funktion:
<form id=theForm>
<input type=hidden name=last id=last></input>
<input type=button onclick="submitFunction()"></input>
</form>
dann ein Skript
<script>
submitFunction = function() {
var ONE_DAY = 60 * 60 * 1000 * 24; /* ms */
var lastTime = document.getElementById('last').value;
document.getElementById('last').value = new Date();
if (lastTime == "" || !lastTime)
{
document.getElementById('last').value = new Date();
document.getElementById('theForm').submit();
}
else if (((new Date()) - lastTime) < ONE_DAY)
{
alert('you must wait one day');
}
else {
document.getElementById('theForm').submit();
}
}
</script>
zu löse dieses Problem richtig Ich schlage vor, PHP mit einer Datenbankaufnahme zu verwenden, wenn der Benutzer das Formular zuletzt absendet. Auf diese Weise werden Daten dauerhaft gespeichert.
Um dies mit PHP zu tun: zuerst erstellen Sie eine Datenbank; für dieses Beispiel werde ich es Test-Datenbank nennen und Tabelle wird lastcheck aufgerufen werden. in der Formulartabelle haben eine Spalte: last_time als Zeitstempel festgelegt; dann nur
<?php
$last = "";
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "test";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("Select last_time from test.lastcheck order by last_time asc limit 1");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach($stmt->fetchAll() as $k=>$v) {
$last = $v;
}
}
catch(PDOException $e) {
$conn = null;
}
$conn = null;
echo '<form id=theForm>
<input type=hidden value="'.$last.'" name=last id=last></input>
<input type=button onclick="submitFunction()"></input>
</form>';
?>
<script>
submitFunction = function() {
var ONE_DAY = 60 * 60 * 1000 * 24; /* ms */
var lastTime = document.getElementById('last').value;
document.getElementById('last').value = new Date();
if (lastTime == "" || !lastTime)
{
document.getElementById('last').value = new Date();
document.getElementById('theForm').submit();
}
else if (((new Date()) - lastTime) < ONE_DAY)
{
alert('you must wait one day');
}
else {
document.getElementById('theForm').submit();
}
}
</script>
Im Grunde alles, das verlassen nun ein Verfahren für Ihre Form ist. sollte eine Aktion haben, die zu einer neuen PHP-Seite führt, die ein neues Datum in der Datenbank speichert und den Code ausführt, der beim Senden des Formulars ausgeführt werden soll, oder Sie können einfach auf die vorherige Seite umschalten, nachdem Sie ein neues Datum in der Datenbank gespeichert haben. usw.
wenn du das mit ** php ** machst zeige mir den ** code ** in php –
fertig. Das ist schnell geschrieben, aber ich bin sicher, dass Sie die Logik verstehen können, die ich zu verwenden versuche. Im Grunde ist alles, was übrig bleibt, eine Methode für Ihre Form.
Sie können nicht überprüfen, ob ein Benutzer ein Formular mit NUR JS oder jQuery eingereicht, weil sie Client-basierten Sprachen sind ...
Sie müssen, dass von Server-Seite tun.
Zum Beispiel könnten Sie PHP und/oder eine Datenbank oder Cookies verwenden, um zu speichern, wenn sich jemand beworben hat, und dann überprüfen, ob er zwischen einem Tag eingereicht hat.
ok wenn du eine lösung in php hast dann hilf mir ** –
- 1. Den Benutzer einmal am Tag zur Ein-/Auszeit auffordern?
- 2. jQuery, Formular-Tag-Bug?
- 3. Benutzer auf ein Video beschränken
- 4. jQuery oder JavaScript-Lösung Spezifische Tag aber lassen den Rest
- 5. Android: AlarmManager recuring Aufgaben einmal am Tag um Mitternacht
- 6. Eine Variable einmal am Tag dekrementieren - Javascript
- 7. Beschränken Sie den ElementTreeSelectionDialog
- 8. Beschränken Sie jeden Benutzer nur einmal abstimmen (Umfragen, Django, Python)
- 9. Formular-Generator wie Zend_Form_Html oder ExtJS Formular für JQuery
- 10. Mit jQuery .attr oder .prop, um Attributwert nicht funktioniert
- 11. jQuery Validierung ohne Formular-Tag
- 12. Verwenden Sie jQuery, um ein langes vertikales Formular zu scrollen
- 13. Jquery Validierung - mit Formular-Tag
- 14. Beschränken Sie den statischen Dateizugriff auf angemeldete Benutzer
- 15. Am leichtesten Zoomen in CSS oder jQuery?
- 16. Wie kann ich ein eindeutiges Modellobjekt erstellen oder erstellen, wenn ein Benutzer ein Formular abschickt?
- 17. Datumsvergleich, um den Benutzer auf das aktuelle Datum zu beschränken
- 18. Embedded-Formular in einem Steuer- oder Formular als Benutzer Control
- 19. Loggen Sie die Anmeldung Windows nur einmal für den Tag
- 20. jquery außerhalb Selektor-Tag (Klasse oder id)
- 21. jQuery oder JS: Wählen Sie Eingabefelder mit 2 Ebenenklammern?
- 22. Wie kann ich ein Anchor-Tag verwenden, um ein Formular mit jquery zu senden
- 23. Agg Mit am häufigsten Benutzer pro Tag finden
- 24. Ein Formular mit jQuery senden
- 25. Wie Basisklassenmethode beschränken nur einmal
- 26. Um Ausnahme mit jedem Formular oder nur bei Haupt
- 27. Ein einmal gültiges Formular posten?
- 28. Wie man den Cursor am Ende des Textes des td-Tags mit Javascript oder jquery bewegt
- 29. Beitrag mit jQuery aus Formular öffnen Tag
- 30. Wie kann man die Anzeige der gallery-Datei für den Upload von Blueimp-jquery-Dateien pro Benutzer oder IP beschränken?
Sie können nur sichere Einschränkungen auf dem Server implementieren. – SLaks
aber ich will es in ** client-side ** @SLaks –
Nicht ein Guru, aber ich denke, das Beste, was Sie tun können client-seitige speichern einige Cookie ... aber das ist nicht vertrauenswürdig – DaniP