我正在尝试获取我在执行ajax请求后在浏览器上看到的URL,但问题是它使用Ajax URL更改了URL。
离。
我在domain.com/user/username
我调用的ajax网址在domain.com/posts/submit
当我在提交函数中的posts控制器上回显$ _SERVER ['REQUEST_URI']时,它将显示第二个URL而不是第一个...我如何保证并获得ajax函数中的第一个100%有效并且用户没有改变以防止任何不良行为?
由于
答案 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:我不知道为什么我的其他答案被删除了..这就是答案。