|
1 | 1 | <?php |
2 | 2 |
|
3 | 3 | /** |
4 | | - * AJAX Cross Domain (PHP) Proxy 0.7 |
| 4 | + * AJAX Cross Domain (PHP) Proxy 0.8 |
5 | 5 | * by Iacovos Constantinou (http://www.iacons.net) |
6 | 6 | * |
7 | 7 | * Released under CC-GNU GPL |
|
48 | 48 |
|
49 | 49 | // identify request method, url and params |
50 | 50 | $request_method = $_SERVER['REQUEST_METHOD']; |
51 | | -$request_params = ( $request_method == 'GET' ) ? $_GET : $_POST; |
| 51 | +if ( 'GET' == $request_method ) { |
| 52 | + $request_params = $_GET; |
| 53 | +} elseif ( 'POST' == $request_method ) { |
| 54 | + $request_params = $_POST; |
| 55 | +} elseif ( 'PUT' == $request_method || 'DELETE' == $request_method ) { |
| 56 | + $request_params = file_get_contents( 'php://input' ); |
| 57 | +} else { |
| 58 | + $request_params = null; |
| 59 | +} |
52 | 60 | // Get URL from `csurl` in GET or POST data, before falling back to X-Proxy-URL header. |
53 | | -$request_url = urldecode( isset( $_REQUEST['csurl'] ) ? $_REQUEST['csurl'] : $_SERVER['HTTP_X_PROXY_URL'] ); |
| 61 | +$request_url = isset( $_REQUEST['csurl'] ) ? urldecode( $_REQUEST['csurl'] ) : urldecode( $_SERVER['HTTP_X_PROXY_URL'] ); |
54 | 62 | $p_request_url = parse_url( $request_url ); |
55 | | -unset( $request_params['csurl'] ); |
| 63 | + |
| 64 | +// csurl may exist in GET request methods |
| 65 | +if ( is_array( $request_params ) && array_key_exists('csurl', $request_params ) ) |
| 66 | + unset( $request_params['csurl'] ); |
56 | 67 |
|
57 | 68 | // ignore requests for proxy :) |
58 | 69 | if ( preg_match( '!' . $_SERVER['SCRIPT_NAME'] . '!', $request_url ) || empty( $request_url ) || count( $p_request_url ) == 1 ) { |
|
91 | 102 | curl_setopt( $ch, CURLOPT_HTTPHEADER, $request_headers ); // (re-)send headers |
92 | 103 | curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // return response |
93 | 104 | curl_setopt( $ch, CURLOPT_HEADER, true ); // enabled response headers |
94 | | -// add post data for POST requests |
95 | | -if ( $request_method == 'POST' ) { |
| 105 | +// add data for POST, PUT or DELETE requests |
| 106 | +if ( 'POST' == $request_method ) { |
96 | 107 | curl_setopt( $ch, CURLOPT_POST, true ); |
97 | 108 | curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $request_params ) ); |
| 109 | +} elseif ( 'PUT' == $request_method || 'DELETE' == $request_method ) { |
| 110 | + curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $request_method ); |
| 111 | + curl_setopt( $ch, CURLOPT_POSTFIELDS, $request_params ); |
98 | 112 | } |
99 | 113 |
|
100 | 114 | // retrieve response (headers and content) |
|
118 | 132 | } |
119 | 133 |
|
120 | 134 | // finally, output the content |
121 | | -print($response_content ); |
| 135 | +print( $response_content ); |
122 | 136 |
|
123 | 137 | function csajax_debug_message( $message ) |
124 | 138 | { |
|
0 commit comments