Headers
A HTTP request/response is done in 3 steps:
1. The HTTP request is sent from a client
2. Server decodes the data and send it to PHP interpreter
3. Finally, Server send response data to the client
Redirects
You can use header() function
to overwrite standard headers.
This function must be called
before any other output.
The most common use of headers is
to redirect the user to another page.
header("Location: http://new.com");
php.ini
You can set php.ini in order to be able to
output data after you send body content.
output_buffering = 4096
Compresion
Compresion can make as much as
90% decrease in file size.
But it uses
more resources.
ob_start("ob_gzhandler");
You can enable compresion
on server side (can be easily turned on/off).
zlib.output_compression = on (off default)
zlib.output_compression_level = 9 (-1 default)
Cache
This will keep the page in browser's
cache for 30 days
$date = gmdate("D, j M Y H:i:s", time() + 30*3600*24);
header("Expires: " . $data . " UTC");
header("Cache-Control: Public");
header("Pragma: Public");
Authentication
Authentication Required
message to the client
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Login"');
header('HTTP/1.0 401 Unauthorized');
} else {
echo $_SERVER['PHP_AUTH_USER'];
echo $_SERVER['PHP_AUTH_PW'];
}
Export CSV
Save csv file
from array.
declare(strict_types = 1);
class ExportCsv
{
private $separator;
private $exportFlag;
private $filename;
private $items;
public function __construct(array $params)
{
$this->separator = @$params['separator'] ?: ",";
$this->filename = $params['filename'];
$this->exportFlag = $params['flag'];
$this->items = $params['items'];
}
public function run() : void
{
if ($this->exportFlag == false) return;
if (!count($this->items)) return;
$str = ;
foreach($this->items as $k=>$v) {
$sep = ;
foreach($v as $kk=>$vv) {
$str .= $sep . $vv;
$sep = $this->separator;
}
$str .= "\r\n";
}
Header("Content-type: text");
Header(
'Content-disposition: attachment; ' .
'filename="' . $this->filename . '"'
);
echo $str;
die;
}
}
$obj = new ExportCsv(array(
'filename' => "file.csv",
'flag' => true,
'items' => [
["name" => "John", "age" => 47],
["name" => "Mary", "age" => 35],
],
));
$obj->run();
Context
$url = 'http://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2');
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencodedrn",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { }
var_dump($result);