PHP 判断请求是POST还是GET?
针对跨域情况的getjson 或者ajax(jsonp)可以使用ACCEPT请求头部格式来判断
PHP端对应$_SERVER['HTTP_ACCEPT']
jsonp的请求一般是:text/javascript, application/javascript, */*
json的请求:application/json, text/javascript, */*
一个简单的判断跨域条件下的ajax请求:
switch ($_SERVER['HTTP_ACCEPT']){ case 'application/json, text/javascript, */*': // JSON 格式 break; case 'text/javascript, application/javascript, */*': // javascript 或 JSONP 格式 break; case 'text/html, */*': // HTML 格式 break; case 'application/xml, text/xml, */*': // XML 格式 break;
顾名思义。
GET,POST分别对应着获取和提交两个方面。
在实际使用中,GET是用来取数据的,像跳转到什么页面。做一些逻辑判断。
POST大多是表单提交。很不推荐使用表单得时候使用get,除非像我上面说得,你得行为是为了获取数据。GET从逻辑上会更好理解一点。
而PHP很简单,把GET和POST统一化了,简便放入一个变量中。再不必去理解整个请求的逻辑。所以在php中,会很少去考虑是用post还是get。个人觉得还是上述得理由来区分post和get的应用范围比较好。
PHP 全局变量 - 超全局变量 - 【$_SERVER】
判断请求是GET:
$_SERVER['REQUEST_METHOD'] == 'GET' ? true : false
判断请求是POST:
$_SERVER['REQUEST_METHOD'] == 'POST' ? true : false
另外判断请求是AJAX:
((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') || !empty($_POST[C('VAR_AJAX_SUBMIT')]) || !empty($_GET[C('VAR_AJAX_SUBMIT')])) ? true : false