Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lưu trữ dữ liệu phiên của người dùng

Bạn có thể viết thông tin đăng nhập PHP của mình như,

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

Sau đó, để nhấp vào các URL, bạn có thể sử dụng jQuery và AJAX. Bạn nên khai báo một lớp như "khối liên kết" trong CSS của mình và viết các URL như thế này

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

và thêm trình xử lý nhấp chuột vào các DIV đó trong Javascript onReady của trang, sau khi bao gồm các tập lệnh jQuery:

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

Trình xử lý điểm tăng cần mở phiên, mã này giống như mã bạn có ở trên (vì vậy bạn có thể đặt nó vào một bên ngoài bao gồm "session.php") và mở kết nối cơ sở dữ liệu (một bao gồm khác ...), sau đó:

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

hoặc nếu bạn chỉ có tên người dùng (đảm bảo tên người dùng được thoát đúng cách)

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

Nhân tiện, tôi cần thêm tiêu chuẩn mysql_* tuyên bố từ chối trách nhiệm không dùng nữa .

Sau đó, bạn có thể trả lại các điểm hiện tại sẽ được hiển thị thành DIV với id là "point-block":

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

bằng cách trả lại nó trong JSON sau khi truy vấn chúng từ cơ sở dữ liệu (hoặc bạn có thể giữ chúng trong phiên và cập nhật cả DB và phiên; nó giúp bạn tiết kiệm một truy vấn)

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

Bạn cũng có thể làm điều này theo những cách khác, nhưng tôi không thấy neo trong div liên kết của bạn, vì vậy tôi đoán bạn muốn thứ gì đó động, chủ yếu có nghĩa là 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 &PHP - Cách chuyển đổi một chuỗi thành DATETIME

  2. Tòa nhà truy vấn động PDO

  3. JPA:Mối quan hệ nhiều đến nhiều - JsonMappingException:Đệ quy vô hạn

  4. Làm cách nào để giải mã băm mật khẩu trong PHP?

  5. chèn nhiều hàng vào mysql thông qua node.js