由于下面解释的原因,我不想让用户直接访问single-product.php
。我的意思是用户不应该能够直接访问链接http://example.com/product/product-1/
此人只能通过点击链接从该网站访问此链接。
有可能???
原因
客户有一个产品,他想在4个区域销售,他不想看起来像eccomerce的网站
对于所有运输地点免费但价格不同的地方
流程直到英国,美国和美国。印度---
在主页上,用户被要求选择他想要装运的国家。
因此,用户访问特定于该国家/地区的单个产品的页面。现在选择产品数量并将其添加到购物车。如果之前有任何内容并且重定向到结帐页面,那么购物车就会被清空。
在英国,美国,印度的情况下,我已经分为三类产品(根据国家代码的类别名称)。
然后根据购物车中产品的类别,在发货页面上预选国家/地区。
但就欧洲而言,制造产品和制造产品的过程过于繁琐。欧洲所有国家的类别,因为整个欧洲的价格相同。
所以我计划在主页上选择一个选项,其值为国家/地区代码。然后根据该值,我们可以在结帐页面上预先选择国家/地区。
但是现在只有用户不应该被允许直接访问。 感谢
答案 0 :(得分:1)
试试这个:(在current_theme_folder / functions.php
)
function check_authorization() {
if(is_single())
{
if($_POST){
//AUTHORIZE
}else{
//UN AUTHORIZE
}
}
}
add_action('init', 'check_authorization');
答案 1 :(得分:1)
简短的回答是:否。没有100%万无一失的方法可以做到这一点。 HTTP_REFERRER和使用会话不保证用户无法访问该URL(在经过身份验证之后,或者在自己形成发布请求之后,如果您决定仅允许POST)。如果存在URL,并且人们可以从您的应用程序中跟踪它,则有人可以直接在浏览器中访问它或构建检索它的请求。
当然,您可以使用该请求传递URL中的一些变量(同样,它不是您要求的),并使url成为临时的,将基于时间的令牌插入到数据库中,这将在一段时间后使该URL无效。但这是另一个话题,还有其他方法,但它们与你提出的问题无关。我只是指着你为你的问题寻找不同的解决方案。
然而,主要问题仍未得到答案:你为什么需要这个?如果用户可以从您的应用程序访问该URL,并且您在那里获得了该URL,则无需避免直接访问相同的URL。
修改强>
现在您已经主要重写了原始问题,并且您希望拥有基于国家/地区的产品,您只需在网址中包含区域设置,并且产品将在不同区域具有不同的属性。与http://example.com/uk/product,http://example.com/it/product一样。我不确定这是否是你要找的。 p>
你也可以让你的国家参与进来,每个人的网址都是一样的。 但请记住,如果在美国可以访问URL,则无法阻止欧洲用户访问它。除非您执行一些ip-to-country映射,否则您将自动检测客户端的IP,并限制其访问其他区域。同样,这种技术可以使用VPN和代理来克服,因此不是100%可行的解决方案。
答案 2 :(得分:0)
您可以使用$ _SERVER [' HTTP_REFERER']环境变量来检查请求是否来自您的网站。
答案 3 :(得分:0)
是的,有可能这样做
您可以设置会话,当用户直接访问产品页面时,您可以验证会话是否存在,但这可能不是很好。
您可以使用
查看用户来自哪里 $_SERVER['HTTP_REFERER']
所以你可以知道他是来自正确的地方,还是直接访问该页面。
另一种方式是,将您的产品链接放在一个类型为post的表单上,并在其上加上一些隐藏的值,如id或name,然后在产品页面上,您可以检查用户是否来自正确的页面:< / p>
if($_POST['url_link'])
{
print("Correct url")
}else{
redirect("Host URL")
}