如果存在div,则禁用对URL的访问

时间:2013-11-20 17:02:54

标签: javascript php jquery url conditional-statements

我的wordpress网站内安装了倒数计时器插件,我想禁用对特定网址的访问,直到倒数计时器结束。

此时,通过检查div是否具有特定类别,我知道倒数计时器何时结束。

这是我用jquery检查的方式:

jQuery( document ).ready(function() {
jQuery.fn.exists = function(){return this.length>0;}

if ( jQuery(".hasCountdown").exists()) {
// do something
}
});

但是如果用户禁用了javascript,那就不再好了。

所以我需要通过php做到这一点。

L.E:我正在使用WORDPRESS,我将有更多页面与倒数计时器。 任何建议都是受欢迎的。 谢谢!

3 个答案:

答案 0 :(得分:1)

你永远不应该依赖Javascript阻止用户做任何他们不允许做的事情。用户可以通过多种方式规避JS,任何限制都无法实施。

我建议你在服务器端进行重要的检查。在这种情况下,我建议采用以下流程:

  • 在页面加载时,在会话中设置未来的时间戳(链接开始工作的时间)
  • 添加HTML的常规链接
  • 单击链接时,触发对服务器端脚本的AJAX调用,以检查是否已达到时间戳。
  • 如果尚未到达,则向客户发送回复,告知JS停止(即不做任何事情)。
  • 如果已达到,请让服务器发回“确定”并让客户端关注该网址(通过window.location)。

在所有情况下,您需要检查目标网址上的时间戳,如果尚未达到时间戳,则会抛出“拒绝访问”警告。

答案 1 :(得分:0)

您可以使用php返回“打开javascript”,然后在加载页面时使用javascript将其替换为冷却块。

因此,如果用户在没有js的情况下加载您的页面,他将看到“打开javascript”。

如果启用了javascript,则在需要时,此文本将替换为冷却块和网址。

答案 2 :(得分:0)

你可以有2个计时器,一个javascript和另一个在PHP中。 javascript中的当前版本将保持不变,无需进行任何更改。 不同之处在于,当用户在php中加载页面时,会在会话中保存时间戳。然后,在要阻止的URL中,从会话中获取时间戳并检查是否已经过了足够的时间。如果没有,则可以阻止,重定向或采取任何您想要的操作。 用户不会对此“其他”计时器有任何反馈,但您可以确保用户是否有javascript处于活动状态,或者即使用户通过浏览器控制台篡改了html / javascript,他也无法做到在计时器结束之前访问“被阻止”的URL。 欢呼声。