安全地将Javascript变量传递给PHP(使用AJAX) - javascript

在概述问题之前,我要求答案不是服务器端验证,无论您有多大的胸怀都敦促您这样做。服务器端验证在这种情况下不起作用,但在大多数其他情况下将起作用。谢谢!

服务器端验证不起作用的原因是该脚本是一个游戏,它正在传递用户是否赢得了该游戏。还包括用户从中赢得了多少枚硬币:

if(result == 0){
    menu3.innerHTML = "0 Coins Gained";
    $.post("end.php", {
    coins: 0,
    won: "no",
    }, function(result) {
    console.log(result);
    });
...

因此,很明显,这超过了硬币的数量,并且如果它们使用AJAX获胜了。但是,某人可以轻松地执行许多操作,例如:

找零金额
自己编写脚本
变更结果编号
如果他们赢了就改变

但是,等等,还有更多的人!

好吧,不是真的,我可能会忘记一些东西。

在发布游戏的最终版本之前,我不能让人们坐在那里作弊!而且我确实忘记了一些东西,有人可以编写一个表格,将数据发送到该php脚本,然后对其中的内容进行垃圾邮件处理,从而在游戏中大赚一笔。

另外,如果不清楚,我是新手,因此,我们非常感谢您的帮助。谢谢!

参考方案

所有安全数据都必须保存在服务器上,它不能信任来自客户端的任何数据,因为用户可以更改它。服务器应始终验证从客户端发送的任何可能是作弊的数据。

例如,如果您正在编写纸牌游戏,则将客户端手中的纸牌列表发送给客户端(当然,不发送任何其他玩家的手牌,因为这会使他们“偷看”)。然后,当客户端发回“我在玩黑桃A”时,服务器必须在处理请求之前检查此卡是否在他们手中。

再举一个例子,如果您要编写涉及掷骰子的游戏,则必须在服务器上完成,服务器必须计算结果。它将结果发送给客户端,客户端将其显示给用户。如果这使用户可以选择操作,则客户端将显示一个菜单(或其他控件),然后将选择发送回服务器。然后,服务器确认这是用户可用的选择。

您可以在玩家登录时将该信息保存在PHP会话变量中。对于长期存储,例如玩家的银行存款和玩过的游戏历史,通常会使用数据库。

使用ajax Codeigniter从控制器发送值 - javascript

我有这样的JavaScript$(document).ready(function(){ $("input[type='checkbox']").change(function(){ var menu_id = this.value; if(this.checked) var statusvalue = "O…

jQuery val函数在隐藏字段上不起作用? - javascript

这是我的HTML代码:<div style='display:none;' id='allformid'> <div> <form action='#'> <input type='text' name='name' …

Javascript-Python:将动态生成的图像提供给客户端浏览器? - php

场景:用户加载页面,正在生成图像,显示加载栏,通知事件已发送到浏览器。我正在使用python代码生成图像。拥有启动脚本或将Web服务器代码嵌入python脚本的Web服务器是否理想?图像完成渲染后,客户端应收到一条消息,说明图像成功并显示图像。如何设计它以同时支持并发用户?是否只需为每个导航到该网页的新用户启动python脚本就足够了?在这种情况下拥有实时W…

在PHP服务器上从HTML进行数据挖掘 - javascript

我使用jQuery创建了一个不错的库,该库在浏览器中运行,并且基本上完成了从各种html页面中挖掘任意数据的任务。我想将此库迁移到运行PHP的Apache服务器并在服务器端运行它。但是,我不知道与PHP兼容的可靠浏览器模拟器。最坏的情况是在PHP中再次实现整个过程。该解决方案将涉及:发送请求解析HTML实现基本功能以执行Java / jQuery标准执行的任…

在访问另一页面后保留浏览器滚动位置 - php

我正在使用JS,JQuery和PHP,试图解决无限滚动问题。问题是,如果您在页面上滚动很长一段时间,并且用ajax加载了更多页面,然后单击链接转到新页面,那么在使用浏览器时如何自动转到旧页面中的同一位置新页面上的返回按钮?。新页面使用ajax滚动加载。 php参考方案 我想出的解决方案是在离开页面之前,将每个页面与相关数据一起存储。需要以下信息来保持滚动位置…