Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да съхранявате данни за сесията на потребителя

Можете да напишете вашите данни за вход в PHP като,

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

След това, за да щракнете върху URL адресите, бихте могли да използвате jQuery и AJAX. Трябва да декларирате клас като „link-block“ във вашия CSS и да напишете URL адресите по този начин

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

и добавете манипулатор на кликване към тези DIV в onReady Javascript на страницата, след като включите jQuery скриптове:

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

Манипулаторът на увеличаване на точката трябва да отвори сесията, която е същият код като вашия по-горе (така че можете да го поставите във външно включване "session.php") и да отвори връзката с базата данни (друго включване...), след това:

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

или ако имате само потребителско име (уверете се, че е правилно екранирано)

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

Между другото, трябва да добавя стандартен mysql_* декларация за отказ от отговорноста .

След което можете да върнете текущите точки, които да бъдат показани в DIV с идентификатор на "points-block":

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

като го върнете в JSON, след като ги заявите от базата данни (или можете да ги запазите в сесия и да актуализирате както DB, така и сесията; това ви спестява една заявка)

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

Можете да направите това и по други начини, но не видях котва във вашия div за връзка, така че предполагам, че искате нещо динамично, което най-вече означава 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. Предупреждение:mysql_num_rows() очаква параметър 1 да бъде ресурс, булев, даден в /home/folder/public_html/folder/folder/login.php на ред 18

  2. приложението не успява да се свърже с mysql библиотеки (CentOS)

  3. Пренареждане на данни от колони в mysql

  4. създайте изглед, който получава ранг, потребителско име и брой потребителски записи

  5. Преобразуване на таблици, чувствителни към регистъра на MySQL