我做什么 - 我将年龄验证存储在会话数据中。如果会话变量不存在,服务器会在正文末尾(页脚之后)附加一个 div,单击验证或单击退出。我使用 CSS 让它覆盖内容。
对于 css - 我使用:
display: block; width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 9999;
这会导致 div 覆盖图形浏览器中的所有其他内容,即使它位于正文的最末端。
对于未启用 JS 的用户,“Enter”链接指向一个网页,该网页设置会话变量并将用户返回到他们请求的页面。这导致浏览器的两个页面加载让他们获得他们想要的内容,这并不理想,但对于非 JS 启用的浏览器来说,这是唯一的方法。
对于支持 JS 的浏览器,页面上附加了一个小的 JavaScript,它将“Enter”链接 href 链接更改为 # 并将一个非常基本的函数附加到单击事件,以便单击 Enter 触发使用 XMLHttpRequest 告诉服务器人点击“进入”。然后服务器更新会话并以 200 OK 响应响应 XMLHttpRequest,触发 JavaScript 隐藏覆盖内容的年龄验证 div。因此会话被更新,因此服务器知道用户验证了年龄,并且用户无需在浏览器中重新加载页面即可看到他们想要的内容,从而获得更好的用户体验。
因此,年龄验证可以在没有 JavaScript 的情况下通过以无状态方式或以更友好的方式使用 JavaScript 将用户发送到验证页面来进行。
当搜索蜘蛛抓取网站时,它会在每个页面上获取年龄验证 div,因为蜘蛛不会设置必要的会话变量,但由于 div 位于 html 正文的最后,蜘蛛仍然首先索引真实内容.