是否可以使用Javascript设置PHP会话变量?在PHP中使用javascript设置会话变量
回答
在JavaScript:
jQuery('#div_session_write').load('session_write.php?session_name=new_value');
在session_write.php文件:
<?
session_start();
if (isset($_GET['session_name'])) {$_SESSION['session_name'] = $_GET['session_name'];}
?>
在HTML:
<div id='div_session_write'> </div>
会话存储在服务器端,因此您无法从JavaScript中为其添加值。所有你得到客户端的是包含一个id的会话cookie。一种可能性是向服务器端脚本发送一个AJAX请求,该脚本将设置会话变量。例如使用jQuery的.post()
方法:
$.post('/setsessionvariable.php', { name: 'value' });
你应该,当然,谨慎看待这种暴露脚本。
您不能直接操作Javascript中的会话值 - 它们只存在于服务器上。
虽然您可以通过使用AJAX调用让Javascript获取并设置会话中的值。
也
看到,如果你想允许持久性数据的客户端操作,那么它最好还是使用cookies。这就是Cookie的设计目的。
但他们提出了限制@lese majeste。所以我期待把我的JavaScript数组从一个页面转移到另一个页面 – saikiran 2014-08-05 15:56:43
不可能。因为JavaScript是客户端,会话是服务器端。要做与PHP会话相关的任何事情,你必须去服务器。
或纯JS,也看到StackOverflow上: JavaScript post request like a form submit
但为什么尝试设置$ _SESSION与JS?任何JS变量都可以被玩家用 某些第三方工具(萤火虫)修改,因此任何玩家都可以修改$ _session []! PHP不能给js任何密码(甚至是[滚动]加密)返回,这一切都是可见的。 Jquery或AJAX无法帮助,最终都是js。
这发生在网络游戏设计很多。 (也许有点博弈论?原谅我,我有一个硕士和爱把理论用:))在Crimegameonline.com,像我在 用PHP初始化迷你游戏拼图,保存初始板在$ _SESSION ['foo “]。 然后,我使用PHP来[使HTML]显示最初的难题开始。然后,js接管,随着球员的动作观看按钮和修改元素xy。我不想玩客户端服务器(如WOW)并询问服务器'嘿,我的播放器想移动到xy,我该怎么办?'。这是很多带宽,我不希望涉及的服务器。
而且我可以在玩家每次发生错误(或死亡)时发送POST。玩家可以阻止传出的POST(并且改变本地的JS变量以使其忘记计数),或者简单地修改传出的POST数据。是的,人们会这样做,特别是如果涉及到真钱的话。
如果游戏规模较小,您可以发送更新后每个动作(单击按钮),单向,带有后两个动作的后置变量。然后,服务器完整性检查会持续到$ _SESSION ['allMoves']中。如果游戏规模庞大,您可以发送所有上一步移动的“中途”更新,并查看它是否与最终更新列表中的内容匹配。
然后,一个js认为以后我们有一个赢,添加或国防部的按钮来更改网页:
document.getElementById('but1').onclick=Function("leave()");
...
function leave() {
var line='crimegameonline-p9b.php';
top.location.href=line;
}
那么新的一页的PHP着眼于$ _SESSION [“初始化”],并播放直通各 $ _SESSION ['allMoves']查看它是否真的是赢家。服务器(PHP)必须决定它是否真的是赢家,而不是客户端(js)。
ps:可能会使用AJAX提交(获取或发布)单个动作,而无需转到动作页面,然后转到动作.php页面,让它们进入一个会话变量(没有文本/标题信息)。 – dako 2012-10-08 23:21:33
一个SI设置会话变量的多种方法是通过向另一个PHP文件发送请求。这里不需要使用Jquery或任何其他库。
考虑我在那里,我创造SESSION
变量(比如$_SESSION['v']=0
)如果没有创建SESSION
否则我会加载其他文件的index.php文件。
代码是这样的:
session_start();
if(!isset($_SESSION['v']))
{
$_SESSION['v']=0;
}
else
{
header("Location:connect.php");
}
现在count.html我想成立这个会话变量为1
含量count.html
function doneHandler(result) {
window.location="setSession.php";
}
在count.html JavaScript部分,发送请求t o另一个PHP文件(比如setSession.php
),我可以访问会话变量。
所以在setSession.php将写
session_start();
$_SESSION['v']=1;
header('Location:index.php');
这样做时要小心,因为它是一个安全隐患。攻击者可以将数据反复注入会话变量,这是存储在服务器上的数据。这会让你看到有人用垃圾会话数据重载你的服务器。
这里的,你会不会想要做的代码的例子..
<input type="hidden" value="..." name="putIntoSession">
..
<?php
$_SESSION["somekey"] = $_POST["putIntoSession"]
?>
现在,攻击者可以只改变putIntoSession的值并提交表单十亿倍。繁荣!
如果您采取创建AJAX服务的方法来执行此操作,您需要确保强制执行安全措施以确保无法重复请求,截断收到的值并执行一些基本的数据验证。
- 1. 设置会话变量在javascript
- 2. 在javascript中设置会话或php变量?
- 3. 在ColdFusion中使用JavaScript设置会话变量
- 4. PHP会话变量设置不正确
- 5. 取消设置php会话变量
- 6. 设置PHP多维会话变量
- 7. PHP会话变量没有被设置
- 8. 使用ajax设置会话变量
- 9. 使用PDO设置MySQL会话变量()
- 10. 使用NodeJS设置会话变量
- 11. 在perl中使用PHP会话变量
- 12. 在PHP中使用ColdFusion会话变量
- 13. 在php中重置会话变量
- 14. 在Jquery中设置会话变量
- 15. 在grails中设置会话变量1.3.7
- 16. 在Application_BeginRequest中设置会话变量
- 17. 设置会话变量为paramiko会话
- 18. 会话变量未设置
- 19. 设置会话变量
- 20. 会话变量未设置
- 21. 会话变量已设置
- 22. 设置会话变量
- 23. PHP不访问通过JavaScript代码设置的会话变量
- 24. PHP:在多个iframe中使用在iframe中设置的会话变量
- 25. 使用jQuery设置PHP会话变量Ajax
- 26. 使用ajax/jquery设置php会话变量
- 27. 在PHP登录脚本中使用会话和会话变量
- 28. 如何访问会话变量并在JavaScript中设置它们?
- 29. 在javascript中设置会话变量或本地存储器
- 30. 如何在php中设置会话变量的ID
如果人们使用会话变量期望他们只能被设置为服务器端,这可能会带来安全风险。 – 2014-04-30 04:06:15