Today I encountered the following code in M_Controller, so I learned a little about how to judge the differences between ajax requests, post requests, REQUEST_TIME and time() functions.
define('IS_AJAX', $this->input->is_ajax_request()); define('IS_POST', $_SERVER['REQUEST_METHOD'] == 'POST' && count($_POST) ? TRUE : FALSE); define('SYS_TIME', $_SERVER['REQUEST_TIME'] ? $_SERVER['REQUEST_TIME'] : time());
is_ajax_request()
method is a method in CI to determine whether an ajax request is made. The official document explains it as: Check whether the server header contains HTTP_X_REQUESTED_WITH
, returns TRUE if present, otherwise returns FALSE.
Of course, such a judgment is not perfect. The principle involved in the judgment is as follows:
When we send an ajax request through jquery, an ajax header named X-Requested-With information, the default content of the information is: XMLHttpRequest, which is the basis for the CI framework to judge ajax requests.
But how do we judge when we use native js?
xmlHttpRequest.setRequestHeader("request_type","ajax");
According to the XMLHttpRequest object, manually set the header. After the above settings are completed, we can obtain it as follows in the PHP logic code:
$_SERVER['HTTP_REQUEST_TYPE']
Obviously, the r# we set in the header ##equest_typeWhen obtaining in the background, add the prefix string of HTTP_ to obtain the Header information sent by the front desk, that is, by calling
$_SERVER['HTTP_REQUEST_TYPE'] to get the header information sent by the front desk Value: ajax, of course request_type can also be set to other fields.
The above is the detailed content of How to determine if php is ajax. For more information, please follow other related articles on the PHP Chinese website!