1
我正在開發一個簡單的內部使用cms。通過此cms,用戶可以創建和編輯某個產品的頁面。我想提醒用戶,嘗試編輯已被其他用戶打開的特定產品頁面。當它已經打開時鎖定頁面
我正在使用以下腳本,但我不知道如何輕鬆提醒第二個用戶,例如「ehi,此頁面正在被其他用戶編輯」,點擊「確定」按鈕並將其重定向到主頁。
我跟蹤所有信息正確,只是我不知道如何警告第二個用戶和他的鎖定頁面。
提前致謝!
產品的頁面
<script src="pages/includes/jsHandler.js"></script>
<script>
window.onload = function(){ return start('<?php echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['PATH_INFO']); ?>');};
window.onbeforeunload = function(){ return end(); };
window.onclose = function(){ return end(); };
</script>
jsHandler.js
function start(pageName) {
var xmlhttp3;
if (window.XMLHttpRequest) {
xmlhttp3 = new XMLHttpRequest();
} else {
xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp3.onreadystatechange=function() {
if (xmlhttp3.readyState==4 && xmlhttp3.status==200) {
}
}
xmlhttp3.open("GET","pages/includes/trackStart.php?pageName="+pageName,true);
xmlhttp3.send();
}
function end() {
var xmlhttp3;
if (window.XMLHttpRequest) {
xmlhttp3 = new XMLHttpRequest();
} else {
xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp3.onreadystatechange=function() {
if (xmlhttp3.readyState==4 && xmlhttp3.status==200) {
}
}
xmlhttp3.open("GET","pages/includes/trackEnd.php",true);
xmlhttp3.send();
}
trackStart.php
<?php session_start();
date_default_timezone_set("Europe/Rome");
require("dbHandler.php");
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['startTime'] = $_SERVER['REQUEST_TIME'];
$_SESSION['pageName'] = $_GET['pageName'];
if(isset($_SESSION['pageViews']))
{
$_SESSION['pageViews'] = $_SESSION['pageViews'] + 1;
}
else
{
$_SESSION['pageViews'] = 0;
}
$ip = $_SESSION['ip'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
$user_location = $details->city . " , " . $details->country;
saveData($_SESSION['ip'],$_SESSION['startTime'],'0',$_SESSION['pageName'],$_SESSION['pageViews'],'0','start',$user_location);
?>
trackEnd.php
<?php session_start();
date_default_timezone_set("Europe/Rome");
require("dbHandler.php");
$_SESSION['endTime'] = $_SERVER['REQUEST_TIME'];
$timeSpent = $_SESSION['endTime'] - $_SESSION['startTime'];
$timeSpent = $timeSpent . " seconds";
saveData($_SESSION['ip'],$_SESSION['startTime'],$_SESSION['endTime'],$_SESSION['pageName'],$_SESSION['pageViews'],$timeSpent,'end');
?>
dbHandler.php
<?php
function saveData($ip,$startTime,$endTime,$pageName,$viewCount,$timeSpent,$action,$location)
{
$mysqli = new mysqli("localhost", "blabla", "blabla", "blabla");
if($action == 'start')
{
$q = "INSERT INTO track_user(ip_address,start_time,end_time,page_name,view_count,time_spent,user_location) VALUES('$ip','$startTime','$endTime','$pageName','$viewCount','$timeSpent','$location')";
$mysqli->query($q);
}
else
{
$q = "UPDATE track_user SET end_time = '$endTime', time_spent = '$timeSpent' WHERE ip_address = '$ip' AND start_time = '$startTime' AND page_name = '$pageName'";
$mysqli->query($q);
}
}
?>
難道你不只是想阻止他們在第一個地方打開這個頁面,如果它已經被編輯了?否則,您不清楚具體問題是什麼 – charlietfl
例如,當您嘗試編輯其他用戶在該特定時刻正在編輯的帖子時,Wordpress會提示您。只是提醒第二位用戶該頁面已被另一個人打開。通過這種方式,頁面不能同時由2個或更多人編輯,但第一個用戶必須保存他的修改以允許第二個用戶編輯該頁面:) – Otto
所以如果它只是爲了視覺創建一個半透明覆蓋幷包含在頁面中,如果符合'editMode'條件 – charlietfl