Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać dane sesji użytkownika

Możesz napisać swój login PHP jak,

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

Następnie, aby kliknąć adresy URL, możesz użyć jQuery i AJAX. Powinieneś zadeklarować klasę taką jak „link-block” w swoim CSS i pisać adresy URL w ten sposób

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

i dodaj obsługę kliknięć do tych DIV w JavaScript onReady strony, po dołączeniu skryptów jQuery:

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

Program obsługi punktu wzrostu musi otworzyć sesję, która jest tym samym kodem, co powyżej (abyś mógł umieścić go w zewnętrznym pliku "session.php") i otworzyć połączenie z bazą danych (kolejny plik ...), następnie:

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

lub jeśli masz tylko nazwę użytkownika (upewnij się, że jest poprawnie zmieniona)

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

Przy okazji muszę dodać standardowy mysql_* wyłączenie odpowiedzialności .

Następnie możesz zwrócić bieżące punkty do wyświetlenia do DIV o identyfikatorze "points-block":

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

zwracając je w JSON po zapytaniu o nie z bazy danych (lub możesz zachować je w sesji i zaktualizować zarówno bazę danych, jak i sesję; oszczędza to jedno zapytanie)

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

Możesz to zrobić również na inne sposoby, ale nie widziałem kotwicy w twoim linku div, więc myślę, że potrzebujesz czegoś dynamicznego, co oznacza głównie AJAX.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Potrzebujesz pomocy przy wstawianiu danych oddzielonych przecinkami w bazie danych mysql przy użyciu PHP

  2. Jak utworzyć przechowywaną funkcję agregującą MySQL?

  3. dodawanie ciągu do instrukcji SELECT, który ma być uwzględniony w zestawie wyników

  4. Zainstaluj Innotop, aby monitorować wydajność serwera MySQL

  5. Jak importować i eksportować bazę danych MySQL