Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menyimpan data sesi pengguna

Anda dapat menulis login PHP Anda seperti,

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

Kemudian untuk mengklik URL Anda mungkin bisa menggunakan jQuery dan AJAX. Anda harus mendeklarasikan kelas seperti "link-block" di CSS Anda, dan menulis URL seperti ini

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

dan tambahkan pengendali klik ke DIV tersebut di Javascript onReady halaman, setelah menyertakan skrip jQuery:

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

Handler peningkatan poin perlu membuka sesi, yang merupakan kode yang sama seperti yang Anda miliki di atas (sehingga Anda dapat memasukkannya ke dalam include eksternal "session.php"), dan membuka koneksi database (include lainnya...), lalu:

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

atau jika Anda hanya memiliki nama pengguna (pastikan nama pengguna diloloskan dengan benar)

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

Omong-omong, saya perlu menambahkan standar mysql_* penafian penghentian .

Setelah itu, Anda dapat mengembalikan poin saat ini untuk ditampilkan ke dalam DIV dengan id "poin-blok":

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

dengan mengembalikannya di JSON setelah menanyakannya dari database (atau Anda dapat menyimpannya dalam sesi dan memperbarui DB dan sesi; ini menghemat satu kueri)

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

Anda juga dapat melakukan ini dengan cara lain, tetapi saya tidak melihat jangkar di div tautan Anda, jadi saya rasa Anda menginginkan sesuatu yang dinamis, yang sebagian besar berarti 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. Indeks tidak terdefinisi:nama pengguna di C:\wamp\www\Website\storeadmin\admin_login.php..dan sama untuk kata sandi

  2. memanggil prosedur tersimpan dengan parameter keluaran

  3. sambungkan mysql ke postgresql

  4. Bagaimana cara memasukkan skema database MySQL di GitHub?

  5. Penampilan nilai tertinggi dalam setiap grup