ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

. . .

, header(), : Warning: Cannot modify header information - headers already sent by. , - , . , . , header() @ error_reporting(0), header().

, , , , . header() , .

output_buffering php.ini, on.

output_buffering

. . .
output_buffering = On
. . .

php.ini , , output_buffering ( , Off ).

. , .

.
ob_clean()
ob_end_clean()
ob_end_flush()
ob_flush()
ob_get_clean()
ob_get_contents()
ob_get_flush() , ,
ob_get_length()
ob_get_level()
ob_get_status([$full_status]) ; $full_status true, .
ob_gzhandler($buffer, $mode) , ob_start()
ob_implicit_flush([$flag]) ( $flag 1) ( $flag 0)
ob_list_handlers()
ob_start([$output_callback
[, $chunk_size [, $erase]]])
; $output_callback , . $chunk_size , $output_callback. $erase false,
output_add_rewrite_var
($name, $value)
URL, , GET- $name $value
output_reset_rewrite_vars() GET-, output_add_rewrite_var()

.

<?php
//
ob_start();
//
echo "Hello world!";
// HTTP-
header("X-my-header: Hello world!");
//
ob_end_flush();
?>

HTTP- Content-length. (), , . , - , , HTML- zip-. , -, HTTP- Content-length . , HTTP-. .

, , , ob_get_length() HTTP- Content-length.

HTTP- Content-length
<?php
//
ob_start();
//
for($i=0; $i<300000; $i++) echo "<pre>01\r\n";
//
// HTTP- Content-length
header("Content-length: ".ob_get_length());
//
ob_end_flush();
?>

- HTML-, . HTTP- Content-type, , text/html, HTML-. : , .

<?php
//
ob_start();
//
for($i=0; $i<300000; $i++) echo "01\r\n";
// ,
//
header("Content-Disposition: attachment; filename=text.txt");
//
header("Contenr-type: application/octet-stream");
//
// HTTP- Content-length
header("Content-length: ".ob_get_length());
//
ob_end_flush();
?>

HTTP- Contenr-type application/octet-stream, . Content-Disposition , text.txt. .

HTTP-, .

. HTTP- , .

: . , - ( , -).

. -, , - , -, . -, , - , , , , .

, -. - , , , . , , , , , , , .

HTTP-.

. , - . , , , , . . , HTTP-, . , URL GET- .

<?php
//
header ("Expires: Mon, 23 May 2008 02:00:00 GMT");
header ("Last-Modified: " .gmdate(D, d M Y H:i:s"). "GMT";
header ("
Cache-Control: no-cache, must-revalidate");
header ("
Pragma: no-cache");
. . .
?>

HTTP- Expires , , .

HTTP- Last-Modified -. - , , .

HTTP- Cache-Control , no-cache . HTTP 1.0 no-cache HTTP- Pragma.

, - , , HTTP- Cache-Control public. - , HTTP- Cache-Control private.

<?php
header ("Cache-Control: public");
header ("Cache-Control: private");
. . .
?>

, HTTP- Cache-Control max-age. , . , - 1 .

<?php
header ("Cache-Control: public");
header ("Cache-Control: max-age=3600");
. . .
?>

: session_cache_limiter() session_cache_expire().

. , HTTP- (session_cache_limiter(), session_cache_expire(), setcookie(), session_start() ..). - : Warning: Cannot modify header information - headers already sent by

session_cache_limiter() / :

string session_cache_limiter([$cache_limiter])

, :

  • none , HTTP- Cache-Control ;
  • nocache ;
  • private HTTP- Cache-Control "private", ;
  • private_no_exoire private, , HTTP- Expires, , Mozilla;
  • public HTTP- Cache-Control "public", -.
  • $cache_limiter, .
  • session_cache_limiter()
    <?php
    //
    $cache_limiter_fst=session_cache_limiter();
    // "public"
    session_cache_limiter("public");
    //
    $cache_limiter_snd=session_cache_limiter();
    //
    echo " ". " $cache_limiter_fst $cache_limiter_snd";
    ?>

    session_cache_expire() / HTTP- :

    int session_cache_expire([$new_cache_expire])

    $new_cache_expire ( 180). session_cache_expire() $new_cache_expire, (180 ) , .

    session_cache_expire()
    <?php
    // , 30
    $cache_expire=session_cache_expire(30*60);
    echo $cache_expire;
    ?>

    - , .

    .htaccess .htpasswd, , .. .htpasswd.

    , , userslist.

    userslist

     userslist

    userslist :

    • id_user , AUTO_INCREMENT;
    • name ;
    • pass .

    HTTP-:

    WWW-Authenticate: Basic realm = "Admin Page"
    HTTP/1.0 401 Unauthorized
    .

    $_SERVER['PHP_AUTH_USER'], $SERVER['PHP_AUTH_PW'].

    . $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW'] , , CGI-.

    security_mod.php, require_once() .

    security_mod.php
    <?php
    //устанавливаем соединение с базой данных
    require_once("config.php");
    //если пользователь не авторизовался - авторизуемся
    if(!isset($_SERVER['PHP_AUTH_USER']))
    {
    header("WWW-Authenticate: Basic realm = \"Admin Page\"");
    header("HTTP/1.0 401 Unauthorized");
    exit();
    }
    else
    {
    //проверяем переменные $_SERVER['PHP_AUTH_USER']
    //и $SERVER['PHP_AUTH_PW'], чтобы предотвратить
    //SQL-инъекцию
    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 userslist WHERE name='{$_SERVER[PHP_AUTH_USER]}'";
    $lst=@mysql_query($query);
    //если найдена ошибка в SQL-запросе-
    //открываем диалоговое окно ввода пароля
    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(md5($_SERVER['PHP_AUTH_PW'])!=$pass['pass'])
    {
    header("WWW-Authenticate: Basic realm = \"Admin Page\"");
    header("HTTP/1.0 401 Unauthorized");
    exit();
    }
    }
    ?>

    , :

    WWW-Authenticate: Basic realm = "Admin Page"
    HTTP/1.0 401 Unauthorized

    exit(). . HTTP- " ":

    HTTP/1.0 404 Not Found

    , security_mod.php , require_once().

    <?php
    //
    require_once("security_mod.php");
    ?>
    // ,

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Untitled Document</title>
    </head><body>
    <h2> !</h2>
    </body>
    </html>

    Комментарии(0)

    Для добавления комментариев надо войти в систему и авторизоваться
    Комментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться