Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/497: Рейтинг темы: голосов - 497, средняя оценка - 4.66
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452

Что означает предупреждение "headers already sent"

09.08.2011, 11:14. Показов 106125. Ответов 76

Студворк — интернет-сервис помощи студентам
На форуме часто бывают вопросы, что при использовании session_start(), header() и setcookie() и некоторых других функций, появляется сообщения типа
Code
1
2
Warning: session_start(): Cannot send session cookie - headers already sent in D:\HTTP\a.php on line 5
Warning: session_start(): Cannot send session cache limiter - headers already sent in D:\HTTP\a.php on line 5
или
Code
1
Warning: Cannot modify header information - headers already sent in D:\HTTP\a.php on line 5
Это связано с тем, что браузеру уже были отправлены данные перед тем, как была вызвана одна из этих функций.
Если кому интересны подробности, то вот
немного теории
Давайте разберёмся, что происходит, когда мы заходим на сайт. Например, когда мы в браузере открываем страницу http://www.example.ru/file.php, то браузер запрашивает у DNS сервера, какой IP адрес принадлежит серверу www.example.ru. После этого он подключается по протоколу TCP к этому IP адресу на порт 80 (этот порт используется по умолчанию для HTTP) и отправляет текстовый запрос наподобие такого:
Code
1
2
3
4
5
6
7
8
9
GET /file.php HTTP/1.1
Host: www.example.ru
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,chrome://global/locale/intl.properties;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: user=2; var=blablabla
Этим запросом в первой строке браузер указывает, что хочет просто получить страницу (GET), указывает адрес страницы и версию протокола (сейчас используются только две версии - 1.0 и 1.1... версия 0.9 устарела и сейчас не используется).
Так же обязательным является параметр Host. Т.к. на каждом сервере может быть несколько разных сайтов, то мы должны указать, к какому именно сайту мы хотим обратиться.
Остальные параметры необязательны... ими браузер просто рассказывает о себе (User-Agent) и рассказывает серверу, как он хочет общаться. Но сейчас речь не об этом...

В ответ на этот запрос веб-сервер запускает выполнение нашего php-скрипта, к которому обращается браузер. И веб-сервер отправляет браузеру результат работы скрипта... но перед этим он отправит свои заголовки ответа.
Code
1
2
3
4
5
6
7
8
9
10
11
HTTP/1.1 200 OK
Date: Tue, 09 Aug 2011 06:59:22 GMT
Server: Apache
X-Powered-By: PHP/5.3.5
Content-Length: 1234
Content-Type: text/html; charset=windows-1251
Set-Cookie: PHPSESSID=3ms50sjl2pt2s19sns5udiryn6; path=/
 
<!DOCTYPE html>
<html>
......
Как вы видите, заголовки идут вначале, а после одной пустой строки начинается тело самого html, который мы генерируем с помощью php-скрипта.

И вот мы подошли к основной сути... когда PHP приказывает веб-серверу начать отправлять само содержимое брузеру, то веб-серверу не остаётся ничего, кроме как отправить вначале все заголовки, которые имеются у него на текущий момент. Поэтому после этого PHP уже не сможет изменить эти заголовки.
Функция header() изменяет любой заголовок. Функция setcookie() добавляет куки к заголовку Set-Cookie, поэтому тоже не может работать после отправки заголовков. session_start() добавляет куки с идентификатором сессии (как в примере выше).


А пока найдём пути решения этой проблемы. Чаще всего такие ситуации происходят из-за использования BOM. BOM - это 2 или 3 невидимых символа в начале файла. Эти символы указывают на то, какая используется кодировка. Многие текстовые редакторы по умолчанию добавляют BOM ко всем файлам юникодовской кодировкой (например UTF-8). Например, создадим в блокноте файл
PHP
1
2
3
<?php
 
?>
И сохраним его в кодировке UTF-8. Но если мы теперь просмотрим файл в кодировке cp1251, то увидим, что вначале файла добавлены символы:
Code
1
2
3
п»ї<?php
 
?>
Именно эти символы и создают проблему. Ведь PHP исполняет свой код только внутри тегов <?php ?>... всё что снаружи отправляется браузеру как есть. Получается, что эти 3 байта сразу же отправятся к браузеру ещё до начала интерпретации PHP-кода. Хотя, по умолчанию в php.ini включен output_buffering и установлен в значение 4096... поэтому проблемы с BOM не должно быть... однако, у многих пользователей она почему-то есть. Подозреваю, что это следствие использования разных кривых сборок.

Я вижу 2 пути решения это проблемы:
1. Включить в php.ini
Code
1
output_buffering = 4096
На вашем компьютере это должно помочь. Но если вы позже закачаете свой сайт на хостинг, то у вас не будет уверенности, что там включен этот буфер.
2. Запретить текстовому редактору сохранять BOM. Но тут уже всё зависит от возможностей текстового редактора, который вы используете. Например, я пользуюсь Notepad++... там можно открыть меню "Кодировки" и выбрать "Преобразовать в UTF-8 без BOM".


Если вы уверены, что BOM не используется, значит где-то перед функциями header(), setcookie() и т.п. вы сами отправляете данные пользователю. Возможно, перед открытием тега <?php есть пустая строка... её тоже нужно убрать.
Если вначале вам необходимо отправлять данные, то можно включить использование буфера, что бы данные не отправлялись сразу браузеру:
PHP
1
2
3
4
5
6
<?php
ob_start();
 
echo "Всякие тексты";
header('Content-Type: text/plain; charset=windows-1251');
?>
В этом случае никаких проблем не будет, т.к. ob_start() указывает, что данные вначале надо накапливать в буфере и отправлять браузеру только когда выполнение скрипта будет завершено.
57
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.08.2011, 11:14
Ответы с готовыми решениями:

Что означает предупреждение " comparison between signed and unsigned integer expressions"
Я написал вот такую строчку: for(int i=0; i &lt; stringas.size();i++){ cout &lt;&lt; &quot; &lt;&lt; &quot;] &quot;; } cout &lt;&lt; endl; И мне пишет:...

Выходит предупреждение headers already sent by
Выходит предупреждение headers already sent by Warning: Cannot modify header information - headers already sent by (output started at...

Событие A означает, что извлечены 3 зеленых, а событие В - извлечены 3 красных леденца. Что означает сумма А или B?
Помогите с задачей! В упаковке 6 леденцов, из них 3 зеленых и 3 красных. Наудачу извлекают 3 леденца. Пусть событие A означает, что...

76
mambob
28.06.2012, 22:20

Ребята вы лепете из не поняТно чего -слона,проблема у меня встречалась решил ее я очень простo: оставил оригинальный файл на англиском config.php , не меняйте его на те которые в пакетах русификатора идут!



Добавлено через 4 минуты
вообще не вижу смысла в русификации конфига ,от этого ошибки есть а проку нет,ведь все дерективы все равно на английском...ююю
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
28.06.2012, 22:25
Цитата Сообщение от mambob Посмотреть сообщение
проблема у меня встречалась решил ее я очень простo: оставил оригинальный файл на англиском config.php , не меняйте его на те которые в пакетах русификатора идут!
вы вообще о чем..? проблема спокойно может возникнуть даже на простеньком скрипте авторизации с сессиями или даже куками при подключении его скажем, при табличной верстке где сверху идет строка-шапка, а снизу в колонке авторизация. и что же вы предлагаете? ок, вы предлагаете оставлять какой то оригинальный config.php который тут вообще ни при чем - удачи, но не советуйте это другим людям, которые никаких русификаторов не делают и не скачивали даже, а написали простенькую CMS и у них не работает авторизация из за того что заголовки отправлены.
Цитата Сообщение от mambob Посмотреть сообщение
Ребята вы лепете из не поняТно чего -слона
а насчет этого - введите просто в поиске эту ошибку и вы увидите сколько везде ее обсуждают, и тогда уже подумайте, слона лепят люди сами - или все таки он сам лепится?)
1
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
28.06.2012, 22:28
Цитата Сообщение от KOPOJI Посмотреть сообщение
или все таки он сам лепится?
сам лепится потому, что люди не соблюдают архитектуру, а лепят друг на друга всё. А чё, пых-то позволяет, чтоб его освоить, IQ и обезьяны хватит
0
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
29.06.2012, 11:33  [ТС]
Цитата Сообщение от mambob Посмотреть сообщение
проблема у меня встречалась решил ее я очень простo: оставил оригинальный файл на англиском config.php
BOM зависит только от кодировки... даже если в файле нет русских букв, то он всё равно может присутствовать. Тут всё зависит от текстового редактора, которым правится файл. Если он будет ставить BOM всем файлам с UTF-8, то отсутствие русских букв не спасёт.

Цитата Сообщение от mambob Посмотреть сообщение
ведь все дерективы все равно на английском
При большом желании извращений, можно и на русском всё сделать
PHP
1
2
3
4
define('ХОСТ_ДЛЯ_МАЙСКУЛ','127.0.0.1');
define('ЛОГИН_ДЛЯ_МАЙСКУЛ','web');
define('ПАРОЛЬ_ДЛЯ_МАЙСКУЛ','');
$db = mysql_connect(ХОСТ_ДЛЯ_МАЙСКУЛ, ЛОГИН_ДЛЯ_МАЙСКУЛ, ПАРОЛЬ_ДЛЯ_МАЙСКУЛ);
Добавлено через 3 минуты
Цитата Сообщение от Денис Н. Посмотреть сообщение
сам лепится потому, что люди не соблюдают архитектуру
Лепится от того, что многие "программисты" не понимают, как оно работает. Они просто тупо выполняют инструкции из какой-то книжки (автор которой может сам не понимать принципы), не задумываясь, что при этом происходит.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
29.06.2012, 13:35
Цитата Сообщение от Humanoid Посмотреть сообщение
выполняют инструкции из какой-то книжки (автор которой может сам не понимать принципы), не задумываясь, что при этом происходит
Именно.
1
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 23
05.08.2012, 12:24
А что делать если подобная ошибка возникает после отправки емейл?
Те нужно отправить мыло и сразу перенаправить на другой адрес:

PHP
1
2
3
if(mail($mailto,$subject,$sendmessage,$headers)){
Header("Location: http://amd123.ru/temp/send_ok.php");
}
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
05.08.2012, 12:33
Цитата Сообщение от bonterkoz Посмотреть сообщение
А что делать если подобная ошибка возникает после отправки емейл?
Она всегда означает одно и то же.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.08.2012, 13:02
Цитата Сообщение от bonterkoz Посмотреть сообщение
е нужно отправить мыло и сразу перенаправить на другой адрес:
например можно использовать javascript вместо header:
PHP
1
2
3
echo "<script>document.location.replace('http://amd123.ru/temp/send_ok.php');</script>";
//или 
echo "<script>document.location.href='http://amd123.ru/temp/send_ok.php';</script>";
в зависимости от того как вам надо - чтобы было в истории или нет
3
-9 / 0 / 0
Регистрация: 08.08.2012
Сообщений: 5
08.08.2012, 04:42
Была такая же ошибка, при чем вся структура страницы правильно(ни каких выводов символов не было до использования setcookie), искал причину часа два, все таки нашел. Оказалось в php.ini было "output_buffering" выключена. Поставил On и все стало на свои места.
0
1 / 1 / 0
Регистрация: 27.02.2012
Сообщений: 61
19.01.2013, 14:00
Спасибо, Алексей! И мне помогло решить проблему! Новички рулят!
0
 Аватар для Amet13
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
19.10.2013, 22:08
Спасибо. Фишка с
Code
1
output_buffering = 4096
помогла
0
Заблокирован
20.10.2013, 09:52
Цитата Сообщение от Amet13 Посмотреть сообщение
output_buffering
Кто ж вам его отключает?
0
 Аватар для Amet13
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
20.10.2013, 10:32
sqlnub, при переводе сайта с LAMP на денвер под виндой была ошибка сессии. Это параметр по умолчанию у денвера.
0
Заблокирован
20.10.2013, 17:51
У меня тоже отключен:

PHP
1
output_buffering    no value    no value
однако никаких проблем с хидерами не наблюдается. Знаете почему?

Потому:

Кликните здесь для просмотра всего текста
These messages occur when a script attempts to modify a header after it has already been sent back to the requesting user. Most commonly they are the result of the programmer attempting to send a cookie to the user after some output has already been sent back to the browser, which is impossible to accomplish because the header (not seen by the user, but used by the browser) will always precede that output.

PHP version 4.0 offered a solution to this annoying problem by introducing the concept of output buffering When enabled, output buffering tells PHP to send all output at once, after the script has been completed. This way, any subsequent changes to the header can be made throughout the script because it hasn't yet been sent.


http://www.tutorialsscripts.co... fering.php

Это называется разгладить косяки.

Я лишь пытаюсь довести до сведения мифотворцев что если все сделано правильно, без ошибок, то ничего не потребуется сглаживать и упомянутая настройка устраняет только симптомы, но не лечит.
0
 Аватар для Tot
6 / 3 / 0
Регистрация: 25.06.2012
Сообщений: 132
24.10.2013, 15:33
У меня текстовый редактор Adobe Dreamweaver CS5.5. Кодировка UTF-8 в файле edit_text.php ошибка:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\phpforyou.by\admin \edit_text.php:1) in Z:\home\localhost\www\phpforyou.by\admin \lock.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\phpforyou.by\admin \edit_text.php:1) in Z:\home\localhost\www\phpforyou.by\admin \lock.php on line 7

Поставил в php.ini output_buffering = 4096

Теперь ошибка в файле bd.php:

Fatal error: Call to undefined function mysql_connect() in Z:\home\localhost\www\phpforyou.by\admin \blocks\bd.php on line 2

Вот сами файлы:
edit_text.php
-------

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php 
include ("lock.php");
include ("blocks/bd.php");
 
if (isset($_GET['id'])) {$id = $_GET['id'];}
 
?>
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Страница изменения текстов</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="690" border="1" align="center" class="main_border">
 <!--Подключаем шапку сайта-->
 <?php include ("blocks/header.php");?>
  <tr>
    <td><table width="690" border="1">
      <tr>
        <!--Подключаем левый блок сайта-->
        <?php include ("blocks/lefttd.php"); ?>
        <td width="499" valign="top" bgcolor="#FFFFFF">
        <p><strong>Выберите страницу для редактирования данных</strong></p>
        
        <?php 
        
        if (!isset($id))
        
        {
        
        $result = mysql_query ("SELECT id, title FROM settings");
        
        $myrow = mysql_fetch_array ($result);
        do
        {
        printf("<p><a href='edit_text.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]); 
        }
        while ($myrow = mysql_fetch_array ($result));
        }
        else
        {
        
        $result = mysql_query ("SELECT * FROM settings WHERE id=$id");
        
        $myrow = mysql_fetch_array ($result);
        
        print 
        
<<<HERE
        
        <form id="form1" name="form1" method="post" action="update_text.php">
            <p>
              <label for="title">Введите название страницы<br />
              </label>
              <input value="$myrow[title]" type="text" name="title" id="title" />
            </p>
            <p>
              <label for="meta_d">Введите краткое описание страницы</label>
              <br />
              <input value="$myrow[meta_d]" type="text" name="meta_d" id="meta_d" />
            </p>
            <p>
              <label for="meta_k">Введите ключевые слова для страницы</label>
              <br />
              <input value="$myrow[meta_k]" type="text" name="meta_k" id="meta_k" />
            </p>
            <p>
              <label for="text">Введите полный текст страницы с тэгами</label>
              <textarea name="text" id="text" cols="60" rows="20">$myrow[text]</textarea>
            </p>
            <input name="id" type="hidden" value="$myrow[id]" />
            <p>
            
              <input type="submit" name="sumbit" id="sumbit" value="Сохранить изменения" />
            </p>
          </form>;
HERE;
        }
        ?>
        
        </td>
      </tr>
    </table></td>
  </tr>
 <!--Подключаем нижний блок сайта-->
 <?php include ("blocks/footer.php"); ?>
</table>
</body>
</html>
и bd.php
---------

<?php
$db = mysql_connect ("localhost","php","12345");
mysql_select_db ("phpforyou", $db);
?>
0
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
24.10.2013, 19:38  [ТС]
Цитата Сообщение от Tot Посмотреть сообщение
Теперь ошибка в файле bd.php:
Fatal error: Call to undefined function mysql_connect() in Z:\home\localhost\www\phpforyou.by\admin \blocks\bd.php on line 2
В php.ini надо раскомментировать строку extension=php_mysql.dll
Но в будущем от функций mysql_* надо отказываться, т.к. они устарели.
0
 Аватар для Tot
6 / 3 / 0
Регистрация: 25.06.2012
Сообщений: 132
25.10.2013, 16:59
Цитата Сообщение от Humanoid Посмотреть сообщение
В php.ini надо раскомментировать строку extension=php_mysql.dll
Но в будущем от функций mysql_* надо отказываться, т.к. они устарели.
В php.ini extension=php_mysql.dll раскомментирована уже была у меня. В чём ещё может быть проблемма. Надо всего лишь чтобы в блоке админа был пароль......

Добавлено через 1 час 14 минут
открываю phpmyadmin через браузер, а там такая ошибка:

Расширение mysqli не найдено. Пожалуйста, проверьте ваши настройки PHP. <a href="Documentation.html#faqmysql" target="documentation"><img src="themes/dot.gif" title="Документация" alt="Документация" class="icon ic_b_help" /></a>

Хотя в php.ini это расширение раскомментировано.
0
71 / 70 / 21
Регистрация: 04.04.2012
Сообщений: 351
25.10.2013, 17:52
Цитата Сообщение от Tot Посмотреть сообщение
открываю phpmyadmin через браузер, а там такая ошибка:
Расширение mysqli не найдено. Пожалуйста, проверьте ваши настройки PHP.
проверьте extension_dir в php.ini и проверьте наличие соответствующих dll в той папке
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.04.2014, 16:28
А почему у меня таких ошибок не выводится?

Создал простой скрипт:
PHP
1
2
3
4
5
6
7
8
Hello 
<?php 
setcookie("Hello", "world");
header("Hello: world!");
session_start();
$_SESSION['Hello'] = "world!";
echo $_SESSION['Hello'];
?>
Перед php кодом в этом скрипте уже есть вывод - "Hello".

Итог работы скрипта - действительно создается кука "Hello" со значением "world!", к http-заголовкам от сервера добавляется строка "Hello: world!", а так же стартует сессия, в итоге вывод скрипта такой:
Code
1
Hello world!
Соответственно никаких ошибок скрипт не выводит (в php.ini включен вывод всех ошибок).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2014, 16:28
Помогаю со студенческими работами здесь

Постоянные ошибки с сессиями (headers already sent и Cannot modify headers)
Добрый день, хоть тема я так понял и избитая но всё же не могу понять логику работы сессий. Вот у меня есть админ панель из десятка файлов....

Что означает появление письменности (языка), и что означает реформа письменности (языка)?
Не секрет, что духовность всегда сокрыта в письменности (языке), так высшая стадия развития духовности социума (общества) это всегда...

Что означает, что определение метода находится внутри определения класса?
Что означает, что определение метода находится внутри определения класса? Prostokat p0(&quot;Prostokat&quot;,2,3); cout &lt;&lt;...

Поясните пожалуйста что означает двоеточие и то что идет после него
В 4 строчке после параметра в скобочках нету &quot;;&quot; или же тела функции, что не сходится с моим шаблоном в голове. Поясните пожалуйста что...

Что такое dy1 и dy2 в программе, и зачем мы их перемножаем. Что означает строчка x=x1
Что такое dy1 и dy2 . и зачем мы их перемножаем? и что значит строчка x=x1 clear all; close all; clc; disp('Определение кол-ва...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru