Skip to content

Instantly share code, notes, and snippets.

@noodlehaus
Created February 24, 2014 15:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noodlehaus/9190591 to your computer and use it in GitHub Desktop.
Save noodlehaus/9190591 to your computer and use it in GitHub Desktop.
<?php
/**
* procedural wrappers for web request/response variables
*
* @author Jesus A. Domingo <jesus.domingo@gmail.com>
* @license MIT
*/
/**
* Gets a request parameter (from $_GET over $_POST combination)
*/
function request_param($name, $default = null) {
static $params = null;
if (!$params)
$params = array_merge($_GET, $_POST);
return isset($params[$name]) ? $params[$name] : $default;
}
/**
* Gets a request header value, or null if not present.
*/
function request_header($name) {
static $headers = null;
if (!$headers) {
foreach ($_SERVER as $key => $value) {
if (!substr($key, 0, 5) == 'HTTP_')
continue;
$headers[strtolower(str_replace('_', '-', substr($key, 5)))] = $value;
}
}
$name = strtolower($name);
return isset($headers[$name]) ? $headers[$name] : null;
}
/**
* Gives back the path to a file containing the raw request body
*/
function request_body() {
static $filename = null;
if ($filename)
return $filename;
$filename = tempnam(sys_get_temp_dir(), 'phi-');
$destination = fopen($filename, 'w');
$source = fopen('php://input', 'r');
stream_copy_to_stream(
$source,
$destination
);
fclose($source);
fclose($destination);
return $filename;
}
/**
* Returns file info on an upload
*/
function request_file($name) {
if (!isset($_FILES[$name]))
return null;
if (is_array($_FILES[$name]['name'])) {
$result = array();
foreach ($_FILES[$name] as $k1 => $v1)
foreach ($v1 as $k2 => $v2)
$result[$k2][$k1] = $v2;
foreach ($result as $i => $f)
if (!is_uploaded_file($f['tmp_name']))
unset($result[$i]);
return !count($result) ? null : array_values($result);
}
if (is_uploaded_file($_FILES[$name]['tmp_name']))
return $_FILES[$name];
return null;
}
/**
* Returns a cookie value or null if not set.
*/
function request_cookie($name) {
return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null;
}
/**
* Sets the HTTP response status.
*/
function response_status($code) {
http_response_code(intval($code));
}
/**
* Sends an HTTP header
*/
function response_header($name, $value, $replace = true) {
header(strtolower($name).": {$value}", $replace);
}
/**
* Sets a cookie
*/
function response_cookie($name, $value, $lifespan = 1296000, $path = '/') {
setcookie($name, $value, time() + $lifespan, $path);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment