簡體   English   中英

如何存儲用戶的會話數據

[英]How to Store session data of user

該網站的第一個問題(我是這個網站的新手)被認為發布了我最困難的問題.....

成功登錄后,我的網站上有登錄系統。僅在登錄后才顯示受保護的頁面,我想添加$ _SESSION ['point']來存儲用戶的點。並將其保存到數據庫中,如果用戶登錄,該點將增加點擊鏈接。 我想將此增加的點存儲到我的userdb.php中。 我保留的所有注冊信息的位置。(我沒有使用MySql進行注冊,我使用過userdb.php文件)我受保護的頁面php代碼是

<?php
if (session_id() == "")
{
   session_start();
}
if (!isset($_SESSION['username']))
{
   header('Location: #');
   exit;
}
if (isset($_SESSION['expires_by']))
{
   $expires_by = intval($_SESSION['expires_by']);
   if (time() < $expires_by)
   {
      $_SESSION['expires_by'] = time() + intval($_SESSION['expires_timeout']);
   }
   else
   {
      unset($_SESSION['username']);
      unset($_SESSION['expires_by']);
      unset($_SESSION['expires_timeout']);
      header('Location: #');
      exit;
   }
}
if (session_id() == "")
{
   session_start();
}
if (session_id() == "")
{
   session_start();
}
?>

我的display.php顯示網址

<?php

mysql_connect('Server', 'user', 'passs');
mysql_select_db('add');
$query =mysql_query('select * from addimage');

while( $row = mysql_fetch_assoc($query) )
{

echo ' 
<div style="min-width:300px;height:100px;border:red 5px;float:left;">'.$row['url']. '</div>';
}

?>

您可以像這樣編寫登錄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。 您應該在CSS中聲明一個類似於“ link-block”的類,並編寫如下網址

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

並在添加jQuery腳本之后,向頁面的onReady Javascript中的那些DIV添加點擊處理程序:

$('.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_*棄用免責聲明

之后,您可以將要顯示的當前點返回到ID為“ points-block”的DIV中:

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

通過從數據庫查詢它們后以JSON返回它(或者您可以將它們保留在會話中並更新數據庫和會話;它為您節省了一個查詢)

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

您也可以通過其他方式執行此操作,但是我在鏈接div中看不到錨,因此我想您需要動態的東西,這主要意味着AJAX。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM