2012-01-25 14 views
1

私はajaxリクエストをした後に私のブラウザに表示されるURLを取得しようとしていますが、問題はAjax URLでURLを変更することです。codeigniter ajaxの後にURLを取得

ex。

私はそれが2番目のURLを表示する機能を提出domain.com/user/username

と私は$ _SERVER [「REQUEST_URI」]投稿コントローラにエコーとき

domain.com/posts/submitである呼び出すAJAX URLで午前最初のものではありません...どのように私は保証することができますし、その100%有効で、悪意のある行為を防ぐためにユーザーによって変更されていないAJAX関数の最初の内部を得ることができますか?

おかげ

答えて

0

私はそれのためにJavaScriptを使用し、動作しているようです...それとの将来に問題を持っていない願っています...

PS:私は私の他の答えが削除された理由を取得いけません。とにかくその答えです。

0

ありHTTP_REFERERですが、それはjavascriptの要求のために機能するかどうか、私は知りません。これのもう1つの問題:すべてのブラウザで動作するわけではありません。

あなたが試みることができる、次の現在のURLがトークンで保存され、ユーザーが訪問domain.com/user/usernameとして

1.) - データベースへとトークンはJavascript

にPHPを介して提供される - のは 5299sQA332を言わせて

2)AJAXリクエストがあなたのAjaxのコントローラでPOST

3)を介してコントローラに必要な他の変数と一緒にこのトークンを送信しますあなたのためにデータベースを検索指定したトークン5299sQA332とそこあなたの最初のURLを持っていて、それが

をmanupulatedされていないこと、気を確認することができます:)

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) { 

    } 
}); 

次に、バリデーションのフォームで、カストムコールバックを実行して、それらが同じであることを確認します。

0

CodeIgniterのInput Classを見ましたか?

$this->input->get('something', TRUE); 
関連する問題