我在页面上有日期,日期和时间等链接。如果有人点击“日期”,我想要开始一个会话。然后以同样的方式点击前一个会话的'Day'并且创建一个新的会话。这可能吗?Php会话根据链接开始和结束?
-3
A
回答
1
我不知道为什么要使用会话这一点,但肯定的 - 这是可能的AJAX。
定义两个环节,我们姑且称之为启动和停止例如:
<a id="start">Start</a>
<a id="stop">Stop</a>
然后可以使用JavaScript(本例中将使用jQuery library)进行到后端处理的请求,这将调用session_start()
或session_stop()
。您可以(可选)在用户会话停止时序列化用户的会话,如果稍后必须完成某些工作。
首先,一个AJAX请求的例子。在页面中,您想要建立事件来调用通用函数来发起异步请求来开始或结束用户的会话。我们通过创建一个匿名函数,将运行在DOM准备就绪:
<script>
$(document).ready(function() {
// Make the request to start or stop a session
function asyncSessionMolester(uri, val) {
$.ajax({
url: uri
type: 'post',
dataType: "json",
cache: false,
data: {
'action':session,
'value':val
},
success: function(remoteResponse, textStatus) {
alert('Session now in mode ' + toggle);
// do other stuff you want to do on success
},
error: function(xhr, desc, err) {
// There is a lot more data in xhr, this just shows what the server
// wrote to the browser in the console for debugging.
// Handle failure here
console.log(xhr.textResponse);
}
});
// now, our events:
$('#start').click(function() {
asyncSessionMolestor('/ajax.php', 'start');
});
$('#stop').click(function() {
asyncSessionMolestor('/ajax.php', 'stop');
});
});
</script>
现在,你需要创建一些PHP是住在/ajax.php
并做以下几件事:
- 确保如果建立一个会话
- 检查的
HTTP_X_REQUESTED_WITH
头,如果它不存在有人通过浏览器直接访问它的用户必须在提出申请的权利(保释出来如果是这样) - 检查POST数据
action
和value
。如果动作是session
则表示switch()
。如果start
,则开始会话。如果stop
则停止会话。 - 发送JSON响应返回,您可以在Ajax调用
检查如果需要保存会话以供日后分析或工作电话serialize($_SESSION)
,甚至json_encode($_SESSION)
摧毁它之前。
注意事项:
您必须手柄成功正常。用户需要知道他们没有会话了。也许是成功的重定向。你也应该妥善处理失败。我只给出了一个简单的例子。
您绝不能在此之前开始启动会话代码打印任何东西。
你可能不想使用像你一样的会话,但你问是否有可能,而且它是。
代码没有经过测试,只是作为例子。
本例中没有显示安全性。至少你想要某种CSRF保护措施,并且当然要对你的输入进行消毒。
编辑
如果你想根据国家相同的链接启动/停止,你可以设置一个变量来跟踪它,例如:
<script>
$(document).ready(function() {
var state = false;
... ajax stuff as above
$('#date').click(function() {
switch(state) {
case true:
// We successfully created or recreated a session
asyncSessionMolester('/ajax.php', 'stop');
break;
case false:
// User has not yet created a session
asyncSessionMolester('/ajax.php', 'start');
break;
}
});
});
</script>
而且您只有一个链接,其ID为date
。只要确保AJAX函数是更新state
变量的函数,具体取决于调用的成功与否。请记住,它是异步的 - 你可能想要阻止用户点击快乐。
这应该让你朝着你想去的方向前进,或者说明它为什么不是一个好主意。但是,这是实现它的一种方法。
相关问题
- 1. ASP.Net会话开始和结束问题
- 2. Web会话何时开始和结束?
- 3. Django - 检测会话开始和结束
- 4. 连接和会话结束
- 5. php,根据开始日期和月数获取结束日期
- 6. 开始结束用户会话
- 7. PHP结束会话?
- 8. ajax - onload和onunload的开始和结束会话
- 9. 在Python中开始和结束一个独立的子会话
- 10. PHP - 无法结束会话
- 11. PHP - 结束会话ID
- 12. 根据开始日期和天数查找结束日期 - excel
- 13. Angularjs根据开始日期和结束日期过滤字段?
- 14. 根据开始和结束日期格式化单元格?
- 15. T-SQL - 根据周数获取开始和结束日期。
- 16. 根据开始日期和结束日期显示消息
- 17. Angularjs根据开始日期和结束日期进行排序?
- 18. 查询日期根据开始日期和结束日期
- 19. 从电子邮件链接开始PHP会话
- 20. 设置开始和结束日期为今天结束与PHP
- 21. Rails delayed_job开始和结束
- 22. 在开始和结束点(!)
- 23. Svg animate:开始和结束
- 24. jQuery .load和PHP会话开始
- 25. PHP没有开始会话?
- 26. 帮助PHP会话开始
- 27. PHP - 根据链接显示结果
- 28. 根据开始日期和结束日期创建唯一约束
- 29. 如何通过添加链接开始会话并以相同的方式结束会话并显示会话数据
- 30. 将Flurry for Android余额开始/结束会话调用?
是的,只是使用session_start()和session_destroy() – Nelson
这听起来像你不应该使用任何会议使用它们(至少不是你在使用它们的方式) – Quentin