*此位固定在STONE *
我们有1个网页,里面有3个iFrame。所有iFrame都指向相同的脚本,但传递不同的查询字符串值。 E.g。
因此,当用户访问该网页时,他们将调用script.php 3次。
*问题*
有没有办法让script.php知道它被同一个客户端/浏览器/人调用了3次然后命令或排队这些调用? E.g。
目前发生的事情是,script.php正在同时执行3次,每个iFrame都在设置自己的ID。我希望他们都使用相同的ID。
希望有道理吗?
先谢谢你的帮助。
赖安
答案 0 :(得分:0)
您需要使用Cookie或IP地址跟踪用户,以确定它是同一个用户。如果你“保存到会话”,那么你必须已经使用了cookie(否则它不是真正的会话),所以基本上在你创建新的ID之前,你只需要检查ID是否已经存储在会话中。如果没有,请生成并使用并存储在会话中。
编辑:您可以将PHPSESSIONID用于此目的,因为只要维护会话就会一样。我怀疑你需要调整的唯一事情就是代码中的ID生成,以确保ID尚未生成。如果没有,则生成并保存在会话中,以便进一步调用不会再次生成它,而是返回存储在会话中的值。但请记住,您可能会遇到并发性,第二个请求可能会在之前到达您的第一个(这两个都将生成新ID),因此您应使用锁定来防止这种情况,或使用PHPSESSIONID如果那就足够了。
答案 1 :(得分:0)
浏览器无法保证调用script.phps的顺序。由于这些调用可能是并行的,因此无法将SESSION_KEY添加到其中一个响应中,这些响应可用于来自其他iframe的调用。
通过在mypage.html中使用AJAX,并自己填充框架的内容,您可以更好地控制script.php的调用方式(顺序或调用,这些调用中的重叠)。 如果唯一的问题是识别每个客户端,那么在返回mypage.html时添加会话cookie可以轻松解决您的问题,因为这个cookie随后将被发送到每次调用script.php