1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Symfony\Component\HttpFoundation;
13:
14: 15: 16: 17: 18: 19: 20:
21: class ServerBag extends ParameterBag
22: {
23: 24: 25: 26: 27:
28: public function getHeaders()
29: {
30: $headers = array();
31: $contentHeaders = array('CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true);
32: foreach ($this->parameters as $key => $value) {
33: if (0 === strpos($key, 'HTTP_')) {
34: $headers[substr($key, 5)] = $value;
35: }
36:
37: elseif (isset($contentHeaders[$key])) {
38: $headers[$key] = $value;
39: }
40: }
41:
42: if (isset($this->parameters['PHP_AUTH_USER'])) {
43: $headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
44: $headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
45: } else {
46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
59:
60: $authorizationHeader = null;
61: if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
62: $authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
63: } elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
64: $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
65: }
66:
67: if (null !== $authorizationHeader) {
68: if (0 === stripos($authorizationHeader, 'basic ')) {
69:
70: $exploded = explode(':', base64_decode(substr($authorizationHeader, 6)), 2);
71: if (count($exploded) == 2) {
72: list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
73: }
74: } elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && (0 === stripos($authorizationHeader, 'digest '))) {
75:
76: $headers['PHP_AUTH_DIGEST'] = $authorizationHeader;
77: $this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader;
78: }
79: }
80: }
81:
82:
83: if (isset($headers['PHP_AUTH_USER'])) {
84: $headers['AUTHORIZATION'] = 'Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']);
85: } elseif (isset($headers['PHP_AUTH_DIGEST'])) {
86: $headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST'];
87: }
88:
89: return $headers;
90: }
91: }
92: