sql >> Databáze >  >> RDS >> Mysql

Jak uložit data relace uživatele

Můžete napsat své přihlašovací PHP jako,

<?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();
    }
?>

Potom můžete kliknout na adresy URL, které můžete použít jQuery a AJAX. Měli byste ve svém CSS deklarovat třídu jako "link-block" a napsat adresy URL takto

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

a po zahrnutí skriptů jQuery k těmto prvkům DIV v onReady Javascriptu stránky přidejte obslužný program kliknutí:

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

Obslužný program pro zvýšení bodu potřebuje otevřít relaci, což je stejný kód jako výše (takže jej můžete vložit do externího include "session.php"), a otevřít připojení k databázi (další include...), pak:

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

nebo pokud máte pouze uživatelské jméno (ujistěte se, že je správně zakódováno)

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

Mimochodem, musím přidat standardní mysql_* odmítnutí podpory .

Poté můžete vrátit aktuální body k zobrazení do DIV s id "points-block":

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

jeho vrácením v JSON po jejich dotazování z databáze (nebo je můžete ponechat v relaci a aktualizovat DB i relaci; ušetří vám to jeden dotaz)

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

Můžete to udělat i jinými způsoby, ale ve vašem odkazovém divu jsem neviděl žádnou kotvu, takže předpokládám, že chcete něco dynamického, což většinou znamená AJAX.




  1. Jak (MySQL) vynásobit sloupce a poté součtové řádky?

  2. Problém s $_POST, pokud isset() a mysql_fetch_assoc():echo vrací správnou hodnotu, zdroj stránky vždy vrací hodnotu else

  3. Sloučit datum z jednoho data a času z jiného data a času

  4. Jak mohu do tabulky přidat omezení ON DELETE?