我有一个jQuery脚本使用.live()来加载它的页面内容.
$('#content').load("content.PHP?" + id);
问题:如何拒绝用户通过URL直接访问文件content.PHP?
我试图将此代码放在content.PHP之上,但Access Denied出现在我的#content div中
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'content.PHP' == basename($_SERVER['SCRIPT_FILENAME'])) die('Access Denied');
你可以使用某种散列.例如,如果content.PHP具有参数id;你添加一个额外的参数哈希,其中包含“’某个随机字符串’id * 15”的MD5哈希值.在content.PHP中,你检查哈希& id匹配;如果没有拒绝访问.
计算必须在PHP(而不是ajax)中完成,因为用户必须不知道散列algprithmus.
使用此方法,用户可以直接查找源代码并访问页面,但您不能完全禁止该页面,因为浏览器需要访问页面才能显示它.但用户无法访问之前未通过ajax访问的页面.您可以使用一些标头(HTTP_X_REQUESTED_WITH)来阻止大多数互联网用户直接访问该页面,但有经验的用户无论如何都会更改标题并访问它.