Преглед изворни кода

Improve the Workerman\Protocols\Http

Virgil-Adrian Teaca пре 7 година
родитељ
комит
7f171a2643
1 измењених фајлова са 17 додато и 3 уклоњено
  1. 17 3
      Protocols/Http.php

+ 17 - 3
Protocols/Http.php

@@ -174,10 +174,24 @@ class Http
                     case 'application/x-www-form-urlencoded':
                         parse_str($http_body, $_POST);
                         break;
+                    case 'application/json':
+                    	$_POST = json_decode($http_body, true);
+                    	break;
                 }
             }
         }
 
+        // 解析其他HTTP动作参数
+        if ($_SERVER['REQUEST_METHOD'] != 'GET' && $_SERVER['REQUEST_METHOD'] != "POST") {
+        	$data = array();
+        	if ($_SERVER['HTTP_CONTENT_TYPE'] === "application/x-www-form-urlencoded") {
+        		parse_str($http_body, $data);
+        	} elseif ($_SERVER['HTTP_CONTENT_TYPE'] === "application/json") {
+        		$data = json_decode($http_body, true);
+        	}
+        	$_REQUEST = array_merge($_REQUEST, $data);
+        }
+
         // HTTP_RAW_REQUEST_DATA HTTP_RAW_POST_DATA
         $GLOBALS['HTTP_RAW_REQUEST_DATA'] = $GLOBALS['HTTP_RAW_POST_DATA'] = $http_body;
 
@@ -191,7 +205,7 @@ class Http
         }
 
         // REQUEST
-        $_REQUEST = array_merge($_GET, $_POST);
+        $_REQUEST = array_merge($_GET, $_POST, $_REQUEST);
 
         // REMOTE_ADDR REMOTE_PORT
         $_SERVER['REMOTE_ADDR'] = $connection->getRemoteIp();
@@ -432,7 +446,7 @@ class Http
         }
         HttpCache::$instance->sessionStarted = true;
         // Generate a SID.
-        if (!isset($_COOKIE[HttpCache::$sessionName]) || !is_file(HttpCache::$sessionPath . '/sess_' . $_COOKIE[HttpCache::$sessionName])) {
+        if (!isset($_COOKIE[HttpCache::$sessionName]) || !is_file(HttpCache::$sessionPath . '/ses' . $_COOKIE[HttpCache::$sessionName])) {
             // Create a new unique session_id and its associated file name.
             while (true) {
                 $session_id = session_create_id();
@@ -450,7 +464,7 @@ class Http
             );
         }
         if (!HttpCache::$instance->sessionFile) {
-            HttpCache::$instance->sessionFile = HttpCache::$sessionPath . '/sess_' . $_COOKIE[HttpCache::$sessionName];
+            HttpCache::$instance->sessionFile = HttpCache::$sessionPath . '/ses' . $_COOKIE[HttpCache::$sessionName];
         }
         // Read session from session file.
         if (HttpCache::$instance->sessionFile) {