Код (Text): <?php include("blocks/bd.php"); if (!isset($_SERVER['PHP_AUTH_USER'])) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } else { if (!get_magic_quotes_gpc()) { $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']); $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']); } $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'"; $lst = @mysql_query($query); if (!$lst) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } if (mysql_num_rows($lst) == 0) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } $pass = @mysql_fetch_array($lst); if ($_SERVER['PHP_AUTH_PW']!= $pass['pass']) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } } ?> На выходе выводит ошибку Warning: Cannot modify header information - headers already sent by (output started at Z:\home\php.loc\www\phpsite\admin\index.php:2) in Z:\home\php.loc\www\phpsite\admin\lock.php on line 5 Warning: Cannot modify header information - headers already sent by (output started at Z:\home\php.loc\www\phpsite\admin\index.php:2) in Z:\home\php.loc\www\phpsite\admin\lock.php on line 6 Как это исправить? В чём ошибка?
вероятно вот тут где то проскакивают лишние байты include("blocks/bd.php"); пробни сделать вот как: Код (Text): <?php [b]ob_start();[/b] include("blocks/bd.php"); if (!isset($_SERVER['PHP_AUTH_USER'])) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } else { if (!get_magic_quotes_gpc()) { $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']); $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']); } $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'"; $lst = @mysql_query($query); if (!$lst) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } if (mysql_num_rows($lst) == 0) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } $pass = @mysql_fetch_array($lst); if ($_SERVER['PHP_AUTH_PW']!= $pass['pass']) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } } [b]echo ob_get_clean();[/b] ?> // А эту штуку лучше не закрывай, вероятно в инклуде после неё пробел попался поэтому и такая ерунда. Кстати ob_get_clean Автоматом выводит буфер, когда завершаешься по exit, die и подобным
Точнее *ob_start Можешь использовать вложенные, но проверяй чтобы они закрывались, это тоже самое как со скобками и кавычками есть открывающий и закрывающий, они всегда должны быть парными. Хедер только в одном случае не отправляется - когда что то отпралвено.
Кодировка utf-8 (без BOOM) ? Z:\home\php.loc\www\phpsite\admin\index.php Z:\home\php.loc\www\phpsite\admin\lock.php Попробуй перевести если не переведено. У меня из - за кодировки возникало такое.