codeigniter在ajax之后获取URL

时间:2012-01-25 09:20:39

标签: codeigniter url

我正在尝试获取我在执行ajax请求后在浏览器上看到的URL,但问题是它使用Ajax URL更改了URL。

离。

我在domain.com/user/username

我调用的ajax网址在domain.com/posts/submit

当我在提交函数中的posts控制器上回显$ _SERVER ['REQUEST_URI']时,它将显示第二个URL而不是第一个...我如何保证并获得ajax函数中的第一个100%有效并且用户没有改变以防止任何不良行为?

由于

4 个答案:

答案 0 :(得分:0)

HTTP_REFERER但我不知道这是否适用于javascript请求。另一个问题是:它不适用于所有浏览器。

您可以尝试以下操作:

1。)当用户访问domain.com/user/username时,当前网址将使用令牌(假设为5299sQA332)保存到数据库中,并通过PHP将令牌提供给Javascript

2.。)ajax请求将通过POST将此令牌连同控制器所需的其他变量一起发送

3.。)在你的ajax控制器中,你在数据库中搜索给定的令牌5299sQA332并且你有第一个URL,你可以确定它没有被人为操作

:)

答案 1 :(得分:0)

如果我理解正确,你想确保ajax调用是来自它应该在的页面吗?在这种情况下,只需通过调用传递令牌。

在控制器功能中,在会话中设置一个令牌变量;

public function username() {
  $this->session->set_userdata('ajax_token', time());
}

然后在视图中使用js;

$.ajax({
    url: '/user/username',
    type: 'post',
    data: 'whatever=bob&token='+<?php echo $this->session->userdata('ajax_token'),
    success: function( data ) {

  },
     error: function( data ) {

  }
});

然后在您进行表单验证时,进行自定义回调以检查它们是否相同。

答案 2 :(得分:0)

你看过CodeIgniter的Input Class吗?

$this->input->get('something', TRUE);

答案 3 :(得分:0)

我使用了javascript它似乎工作...希望将来不会有任何问题......

ps:我不知道为什么我的其他答案被删除了..这就是答案。