且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Codeigniter - 限制从URL调用直接访问控制器函数

更新时间:2023-12-01 15:34:40

正如你在注释中所说,如果你想通过AJAX加载链接:/ p>

您的标记:

 < a href =test / function data-key =abc> 

您的jquery:

  $('a')。on('click',function(){
var data = $(this).data('key');
$('结果')。load($(this).attr(href)+'?key ='+ data);
});然后在你的CodeIgniter控制器,你检查你的密钥是否存在和匹配(abc )

另外,你也可以检查 $ _ SERVER ['HTTP_REFERER'] 查看用户来自哪里(这是很容易欺骗),并且只有当GET请求是从您自己的网站发出时才允许访问。


I want to know if there is any way through which I can restrict access to my controller functions through URL. But I want to give them a call through my link in the site. For example if I have a link in my site which points to a controller function:

<a href='test/function'>Call me</a>

But I don't want the controller function to be called when I place the above URL in my browser address bar. Can anyone help with this?

As you stated in the comment, that if you want to load the link via AJAX:

Your markup:

<a href="test/function" data-key="abc">

Your jquery:

$('a').on('click',function(){
    var data = $(this).data('key');
    $('#result').load($(this).attr("href") + '?key=' + data);
});

Then in you CodeIgniter controller, you check to see if your key is present and matches ("abc"), else you return a 403 or something simillar.

Also, you could of course check the $_SERVER['HTTP_REFERER'] to see where the user came from (this is however quite easily spoofed) and only allow access when the GET-request is made from your own site.