Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So speichern Sie Sitzungsdaten des Benutzers

Sie können Ihr Login in PHP schreiben wie,

<?php
    // if PHP > 5.4: if (PHP_SESSION_NONE == session_status()) {
    if ('' == session_id()) {
        session_start();
    }
    if (isset($_SESSION['expires_by'])) {
        $expires_by = intval($_SESSION['expires_by']);
        if (time() < $expires_by) {
            $_SESSION['expires_by'] = time() + intval($_SESSION['expires_timeout']);
        } else {
            session_destroy();
        }
    }
    if (!isset($_SESSION['username'])) {
        Header('Location: ' . $_SERVER['REQUEST_URI']);
        exit();
    }
?>

Um dann auf die URLs zu klicken, könnten Sie vielleicht jQuery und AJAX verwenden. Sie sollten eine Klasse wie "link-block" in Ihrem CSS deklarieren und die URLs so schreiben

echo '<div class="link-block">'.$row['url'].'</div>';

und fügen Sie diesen DIVs im onReady-JavaScript der Seite einen Click-Handler hinzu, nachdem Sie jQuery-Skripts eingefügt haben:

$('.link-block').on('click', function(e) {
    $.post('/increase-points.php', { }, function(retval){
        if (retval.newpoints) {
            $('#point-block').html(retval.newpoints);
        }
    });
});

Der Erhöhungspunkt-Handler muss die Sitzung öffnen, die derselbe Code wie oben ist (damit Sie ihn in ein externes Include "session.php" einfügen können), und die Datenbankverbindung öffnen (ein weiteres Include ...), dann:

UPDATE usertable SET points = points + 1 WHERE user_id = {$_SESSION['user_id']};

oder wenn Sie nur einen Benutzernamen haben (stellen Sie sicher, dass er richtig maskiert ist)

...WHERE username = '{$escapedSessionUsername}';

Übrigens muss ich den hinzufügen Standard mysql_* Verzichtserklärung .

Danach können Sie die anzuzeigenden aktuellen Punkte in ein DIV mit der ID „points-block“ zurückgeben:

    You have <span id="points-block"></span> points.

indem Sie es in JSON zurückgeben, nachdem Sie sie aus der Datenbank abgefragt haben (oder Sie können sie in Sitzung halten und sowohl DB als auch Sitzung aktualisieren; es erspart Ihnen eine Abfrage)

    // This in /update-points.php
    $retval = array('newpoints' => $updated_points);
    Header('Content-Type: application/json;charset=utf8');
    die(json_encode($retval));

Sie können dies auch auf andere Weise tun, aber ich habe keinen Anker in Ihrem Link-Div gesehen, also schätze ich, dass Sie etwas Dynamisches wollen, was meistens AJAX bedeutet.