nach countdown Befehl ausführen

DrySolution

Grünschnabel
Hallo tutorials.de Community.

Ich bin noch recht neu hier und weiß daher nicht ob meine Frage hier rein passt.

Ich suche ein Countdown Script welches einen Befehl ausführt sobald der Countdown auf 0 ist.
z.B. Wenn 5 Minuten abgelaufen sind, Soll ein User 50 Punkte bekommen.
Ich habe auch schon im Internet gesucht, aber ich habe einfach nichts passendes/funktionierendes gefunden.

Ich hoffe, dass ihr mir helfen könnt.

mit freundlichen Grüßen
DrySolution
 
Vielen Dank.
Ich habe das Problem gelöst, sieht aber leider etwas unsauber aus :)

Javascript:
<?php session_start(); ?>
<html>
<head>
<script type="text/javascript">
    var timer = {
    minutes :0,
    seconds : 0,
    elm :null,
    samay : null,
    sep : ':',
    init : function(m,s,elm)
    {
        m = parseInt(m,10);
        s = parseInt(s,10);
        if(m<0 || s<0 || isNaN(m) || isNaN(s)) { alert('Invalid Values'); return; }
        this.minutes = m;
        this.seconds = s;
        this.elm = document.getElementById(elm);
        timer.start();
    },
    start : function()
    {
        this.samay = setInterval((this.doCountDown),1000);
    },
    doCountDown : function()
    {
        if(timer.seconds == 0)
        {
            if(timer.minutes == 0)
            {
                clearInterval(timer.samay);
                timerComplete();
                return;
            }
            else
            {
                timer.seconds=60;
                timer.minutes--;
            }
        }
        timer.seconds--;
        timer.updateTimer(timer.minutes,timer.seconds);
    },
    updateTimer :  function(min,secs)
    {
        min = (min < 10 ? '0'+min : min);
        secs = (secs < 10 ? '0'+secs : secs);
        (this.elm).innerHTML = min+(this.sep)+secs;
    }
}
function timerComplete()
{
        document.write("<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "access";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "UPDATE `user` SET `user_points` = `user_points` + 100 WHERE `user_id` = '$_SESSION[user_id]'";

if ($conn->query($sql) === TRUE) {
    echo "Die Punkte wurden dir Erfolgreich gutgeschrieben";
} else {
    echo "Fehler " . $conn->error;
}

$conn->close();
?>");
}
    window.onload = init;
    function init()
    {
        timer.init(0,20,'container');
    }
</script>
</head>
<body>

    <p id='container'></p>

</body>
</html>

Nun ist mir aufgefallen sobald ich während des Countdowns die Seite aktualisiere, startet der Countdown von neuem, aber mir werden die Punkte trotzdem gutgeschrieben.
Wie kann ich das ändern?
 
Ich würde über Javascript ein Contdown einbauen und am Ende ein PHP-Script ankicken.
Und wenn ich das JS inspiziere und die Anfragen selbst absende, kann ich mir einfach selbst Punkte gutschreiben lassen.

Solch ein Problem muss auf der Serverseite gelöst werden bzw. der Anstoß muss von dort aus losgehen. Beim Client besteht die Möglichkeit des Betrugs. Du kannst aber selbstverständlich beim Client die Punktzahl erhöhen, um ohne Serveranfragen die Werte zu aktualisieren, jedoch dürfen bei jeder Aktion nur die Daten / Zeiten des Servers berücksichtigt werden.
 
Zurück