codeigniter получить URL после ajax - PullRequest
1 голос
/ 25 января 2012

Я пытаюсь получить URL, который я вижу в своем браузере после выполнения запроса AJAX, но проблема в том, что он меняет URL с помощью URL AJAX.

ex.

iя на domain.com/user/username

и URL-адрес ajax, который я вызываю, находится в domain.com/posts/submit

, когда я отображаю $ _SERVER ['REQUEST_URI'] на контроллере сообщений в функции отправки, он отобразитВторой URL, а не первый ... Как я могу заверить и получить первый внутри функции ajax, что он на 100% действителен и не изменен пользователем, чтобы предотвратить любые плохие действия?

Спасибо

Ответы [ 4 ]

0 голосов
/ 04 февраля 2012

Я использовал для него javascript, и, похоже, он работает ... надеюсь, что в будущем у него не будет проблем ...

ps: я не понимаю, почему мой другой ответ был удален ... вот и все.

0 голосов
/ 25 января 2012

Если я правильно вас понимаю, вы хотите убедиться, что 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 голосов
/ 25 января 2012

Вы смотрели на Класс ввода CodeIgniter ?

$this->input->get('something', TRUE);
0 голосов
/ 25 января 2012

Существует HTTP_REFERER , но я не знаю, работает ли это для запросов javascript. Еще одна проблема этого: это не будет работать для всех браузеров.

Вы можете попробовать следующее:

1.) Когда пользователь посещает domain.com/user/username, текущий URL сохраняется с токеном - скажем, 5299sQA332 - в базе данных, и токен предоставляется через PHP в Javascript

2.) Запрос ajax отправит этот токен вместе с другими переменными, необходимыми для контроллера, через POST

3.) В вашем контроллере ajax вы ищете в базе данных данный токен 5299sQA332, и у вас есть ваш первый URL, и вы можете быть чертовски уверены, что он не был манипулирован

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...