我正在建立一个主持在线游戏的网站。在这个游戏中有很多角色和怪物。其中每个都有自己的基数组,以确定每个特定字符的详细信息。我有一个主角色表/管理页面来更改/修改这些字符。
目标:
当前解决方案:
问题:
问题:
我已经看到如何将所有这些cookie传递给客户端,这大大节省了服务器资源和时间。但是,一直记录我的用户是一种糟糕的用户体验,我真的需要纠正。
网站是在apache服务器,mysql,php,jQuery,js,ajax,wordpress base(执行此操作的页面都是自定义模板)。
感谢您的建议和帮助。如果我能提供任何其他信息,请告诉我。
这只是cookie构建功能的一部分。
function fyxt_setActiveCharCookie ($charID, $fyxtAccountID) {
global $wpdb;
setcookie("charID",$charID);
$charLvl = curBaseCharLvl($charID);
setcookie("charLvl", $charLvl); //sets session var
//Begin to build character information /////////////////////////////////////////////////////////////////////
$isNPC = isNPC($charID);
setcookie("isNPC", $isNPC); //sets session var
if ($isNPC == 1) {
$hordeSize = hordeSize($charID);
setcookie("hordeSize", $hordeSize); //sets session var
$charL1Info = getNPCInfo($charID);
foreach ($charL1Info as $n=>$v) {
setcookie($n, $v); //loop to set vars for all char info
}
}
}
取消设置功能
function fyxt_unsetActiveCharCookie () {
foreach ($_COOKIES as $c_id => $c_value)
{
if ((strpos($c_id,'wordpress') !== false) || (strpos($c_id,'wp') !== false) || (strpos($c_id,'phpbb3') !== false) || (strpos($c_id,'__ut') !== false) || (strpos($c_id,'PHPSESSID') !== false)) {
//don't delete
} else {
setcookie($c_id, NULL, 1, "/fyxt-rpg-tools/", ".fyxtrpg.com");
}
}
}
答案 0 :(得分:1)
建议不要将Cookie用作逻辑,权限或敏感信息(如字符)等任何信息的存储空间。使用会话或文件,并仅为cookie中的用户提供唯一ID以引用此文件。但要确保文件不会被劫持(我指的是会话劫持)。
要将信息保存在文件中,请使用序列化的php数组,并将其与PHP5函数一起写入文件,然后再从中读取并将其保存在数组中,以便在脚本中进一步使用。
http://ch1.php.net/manual/en/function.serialize.php http://ch1.php.net/manual/en/function.unserialize.php http://ch1.php.net/manual/en/function.file-get-contents.php http://ch1.php.net/manual/en/function.file-put-contents.php
答案 1 :(得分:0)
看了这个并尝试了一些事情后我决定在数据库中添加一个中间表。在此表中,我将存储计算出的角色统计数据。然后我可以通过一个选择轻松检索这些。
此中间表也有助于解决我在保持多个字符“在内存中”以进行更高级的计算和比较时遇到的问题。这种方式存储在一个可以被引用的表中,而不是在服务器或用户的计算机上存储一堆变量。
这似乎也对服务器负载产生了很好的影响。我检索字符信息并在升级或其他字符更改后重写表中的这一行。如果没有更改,我可以保存最初从此中间表中检索的数组。