sql >> Database >  >> RDS >> Mysql

Sessiegegevens van gebruiker opslaan

U kunt uw login PHP schrijven als,

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

Om vervolgens op de URL's te klikken, kunt u misschien jQuery en AJAX gebruiken. U moet een klasse als "link-block" declareren in uw CSS en de URL's als volgt schrijven

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

en voeg een klikhandler toe aan die DIV's in het onReady Javascript van de pagina, na het opnemen van jQuery-scripts:

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

De handler voor het verhogen van het punt moet de sessie openen, wat dezelfde code is als hierboven (dus je kunt het in een externe include "session.php" plaatsen), en de databaseverbinding openen (een andere include...), dan:

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

of als u alleen een gebruikersnaam heeft (zorg ervoor dat deze correct is voorzien van escapetekens)

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

Trouwens, ik moet de toevoegen standaard mysql_* disclaimer voor beëindiging .

Daarna kunt u de huidige punten die moeten worden weergegeven, retourneren in een DIV met id van "points-block":

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

door het in JSON te retourneren nadat u ze uit de database hebt opgevraagd (of u kunt ze in sessie houden en zowel DB als sessie bijwerken; het bespaart u één query)

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

Je kunt dit ook op andere manieren doen, maar ik zag geen anker in je link-div, dus ik denk dat je iets dynamischs wilt, wat meestal AJAX betekent.




  1. Hoe een pakket vanuit php aan te roepen met een procedure in oracle met behulp van oci-stuurprogramma's?

  2. Sqlite-gegevens en automatisch gemaakte knoppen op ScrollPane

  3. Oracle-uitvoerparameters retourneren vanuit een opgeslagen procedure in .NET

  4. Hoe exacte decimale waarden te hebben zonder afronding in MySQL