2012-10-22 20 views
0

我試圖創建一個PHP觸發器,當用戶查看我網站上的某些頁面時,它將更新部分中的用戶表。頁面瀏覽更新表格值?

我理解的過程將工作是這樣的

on page view > update user > where user id is (**get username from session**) > add 5 to points row 

任何人有任何想法如何設置爲給用戶來瀏覽網頁簡單點簡單的東西也是這樣嗎?

我的網站使用PHP和mySQL作爲數據庫。

回答

2

使用cookie或會話變量來跟蹤用戶的詳細信息,如用戶名或ID的網頁的功能。所以創建一個pageview觸發器就像在每個頁面頂部添加一個mysql查詢一樣簡單,該查詢將更新數據庫表的視圖。有點像論壇運作一樣。

E.g

<?php 

session_start(); 

$db_connection = mysqli_connect('host','username','password','db'); 
$user_id = $_SESSION['userid']; //That is asssuming that you had gotten the user id on login 

mysqli_query($db_connection, 'UPDATE page_views SET views_column=views_column+1 WHERE userid=$user_id'); 

?> 
+0

這看起來不錯,但它有多安全?主機,用戶名和密碼不會顯示在源文件中?非常感謝你,雖然隊友:) –

+0

沒有隊友。這只是一個簡單的過程,你可以做些什麼來實現簡單的頁面瀏覽觸發器。如果我想顯示安全代碼,我會添加諸如準備好的語句等。以上的目的僅僅是向你展示你應該使用的方法。 –

+0

無論如何,即使該數據庫連接變量是我如何把它放在最終的代碼中,主機,用戶名和密碼仍然不能被客戶端看到。 PHP是服務器端語言記住。 –

1

是的,你可以這樣做(如果你自己頁面的用戶具有訪問):

<?php 
$pointsForThisSite = 5; 
include "points_adder.php"; 
?> 

雖然Points_adder看起來$ pointsForThisSite是否定義和> 0,然後添加指向數據庫正如你所描述的那樣。

這是你在找什麼?

+0

這也是非常有效的!我喜歡這個設置。非常感謝:) –

1

創建一個php函數,並在用戶每次進入頁面時調用它。 您不需要mysql觸發器,因爲該操作位於網頁上。

function add_points($user, $page){ 
//If users visits too many maybe you don't want to gave him some points. 
//add points 
} 

,並調用你想得分

+0

這很棒,非常感謝你的這種方法! –

1

最不顯眼的方式做,這是一個AJAX調用的頁面加載後。該調用應該是執行數據庫更新操作的包含文件,並返回204響應,以便訪問者的瀏覽器不會等待響應內容。

對於Apache服務器;

header('HTTP/1.0 204 No Content'); ('Content-Length:0',true); ('Content-Type:text/html',true);

flush();

//在這裏做表更新