$file = ...
$last_modified_time = filemtime($file);
$etag = md5_file($file);
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");
header("Etag: $etag");
//... проверка по last_modified_time, если true, то header("HTTP/1.1 304 Not Modified");
private static function is_Image(string $filename): string
{
if (!defined('ALLOWED_MIME_TYPE')) {
define('ALLOWED_MIME_TYPE', [
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml'
]);
}
list($width, $height) = getimagesize($filename); // Getting image size
$imgInfo = new finfo(FILEINFO_MIME_TYPE);
$imgMime = $imgInfo->buffer(file_get_contents($filename));
// Checking image type
if (array_search($imgMime, ALLOWED_MIME_TYPE)) {
// ...
} else {
self::userError("'logo_url': invalid image format. given - {$imgMime}");
}
return $filename;
}
сохранить в файл (пока задумка реализовать через tmpfile())
А то получается что у вас любой файл после получения о нем информации удаляется с сервера.
я когда-то задавался подобным вопросом и ради этого заглянул в исходники
кстати, если вам нужны только размеры, и файлы могут быть большими, лучше пользовать не getimagesize(), а что–то вроде https://github.com/tommoor/fastimage
getimagesize()
для неё не подойдет. getimagesize()
, откуда можно выдернуть эти данные? let allNotChecked = true;
for (let i = 0; i < buttonsOperations.length; i++) {
elementEnable(firstArgument, 'input', btnResult);
elementEnable(secondArgument, 'input', btnResult);
elementEnable(buttonsOperations[i], 'input', btnResult);
if (buttonsOperations[i].checked === true) {
allNotChecked = false;
let operator = buttonsOperations[i].getAttribute('data-operation');
calculatorOperator(operator);
elementDisable(btnResult);
}
if (allNotChecked === true) {
output.innerHTML = '<strong>Ошибка!</strong> Арифметическая операция не выбрана.';
}
}
for (let i = 0; i < buttonsOperations.length; i++) {
elementEnable(firstArgument, 'input', btnResult);
elementEnable(secondArgument, 'input', btnResult);
elementEnable(buttonsOperations[i], 'input', btnResult);
let allNotChecked = true;
if (buttonsOperations.checked === true) {
if (allNotChecked) {
allNotChecked = false;
let operator = buttonsOperations[i].getAttribute('data-operation');
calculatorOperator(operator);
elementDisable(btnResult);
}
} else {
output.innerHTML = '<strong>Ошибка!</strong> Арифметическая операция не выбрана.';
}
}
сократить начало, ресурс можно получать независимо от расширения файла
session_start();
, а перед редиректом переменные, которые указывались в качестве пути у изображений переместить в $_SESSION['save_origin'] = $new_name_original;
$_SESSION['save_processed'] = $new_name_processed;
Неправильно понимаете. Не буду копировать определение из гугла, если простыми словами: "этот файл нужен для того, чтобы объяснить поисковым роботам что можно индексировать, а что индексировать нельзя. Сам же файл файл состоит не только из одной директивы disallow, там есть и другие :)
Правильно, чисто с технической стороны, ссылка добавленная в карту сайта - соответствует (у неё есть протокол, у неё есть домен и т.д.). Только она битая, если перейти по ней вывалиться 404 (которая кстати у вас тоже не настроена и подтягивается с хостинга, где расположен ваш сайт (джино).
Просто наберите после названия своего сайта /sitemap.xml (https://www.xn----8sbfic3a5an7d7b.xn--p1ai/sitemap.xml) и сами все поймете.
Совет один, ознакомиться с рекомендациями составить правильно два файла. После этого проверить робот.тхт на ошибки, а сформированную карту сайта добавить в соответствующий раздел.
P.S. если не хотите ковыряться с картой сайта, есть сервисы, которые её генерируют её (например: https://htmlweb.ru/analiz/sitemap.php), но так как у вас сайт на одну страницу (других я не нашел :) ) Советую сделать вручную, что бы понимать, что за колдовство происходит в этом файл и так как у вас сайт самописный, при обновление содержимого желательно будет менять даты в этой карте.