php如何实现,判断来源网页的唯一url,只能这个url访问本页面,能支持https开头的!
并且不能直接输入网址访问
谢谢。解决有红包
说实话没有完全明白你的意思,不知道我是否有理解不对的地方。下面是我的实现功能点,不知道是否符合你的要求哈。
$referer = $_SERVER['HTTP_REFERER'] ?? '';
$allowed_url = 'https://example.com/'; // 允许的来源URL
if ($referer) {
$referer_host = parse_url($referer, PHP_URL_HOST);
$allowed_host = parse_url($allowed_url, PHP_URL_HOST);
if ($referer_host != $allowed_host) {
header('HTTP/1.1 403 Forbidden');
die('Forbidden: Invalid referer host');
}
} else {
header('HTTP/1.1 403 Forbidden');
die('Forbidden: No referer specified');
如果要判断来源网页的唯一URL,你可以使用$_SERVER['HTTP_REFERER']来获取来源网页的URL。但是需要注意的是,$_SERVER['HTTP_REFERER']并不是100%可靠的,因为有些浏览器或插件可能会禁用这个功能或者伪造这个值。
另外,你可以通过其他方式来增加判断来源网页的安全性,比如使用会话(session)或token机制。具体实现步骤如下:
1、在访问页面时生成一个唯一的token,并将其存储在会话(session)中或者通过隐藏字段等方式嵌入到表单中。
2、检查$_SERVER['HTTP_REFERER']的值是否存在且与你期望的来源网页URL相匹配。
3、检查会话(session)或表单中的token是否存在且与生成的token相匹配。
如果以上两个条件都满足,那么允许用户访问页面;否则,拒绝访问。可以看下下面这个案例
session_start();
// 生成一个唯一的token
\$token = uniqid();
// 将token存储在会话(session)中
\$_SESSION['token'] = \$token;
// 检查HTTP_REFERER的值是否与你期望的来源网页URL相匹配
\$expectedReferer = 'https://example.com/';
if(isset(\$_SERVER['HTTP_REFERER']) && \$_SERVER['HTTP_REFERER'] === \$expectedReferer) {
// 检查会话(session)中的token是否存在且与生成的token相匹配
if(isset(\$_SESSION['token']) && \$_SESSION['token'] === \$token) {
// 允许访问页面
echo '欢迎访问页面!';
} else {
// token不匹配,拒绝访问
echo '非法访问!';
}
} else {
// 来源网页URL不匹配,拒绝访问
echo '非法访问!';
}