Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Humanoid
Почетный модератор
9863 / 3762 / 172
Регистрация: 12.06.2008
Сообщений: 11,527
#1

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

09.08.2011, 11:14. Просмотров 57363. Ответов 31

Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
На форуме часто бывают вопросы, что при использовании session_start(), header() и setcookie() и некоторых других функций, появляется сообщения типа
Код
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
или
Код
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) и отправляет текстовый запрос наподобие такого:
Код
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-скрипта, к которому обращается браузер. И веб-сервер отправляет браузеру результат работы скрипта... но перед этим он отправит свои заголовки ответа.
Код
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, то увидим, что вначале файла добавлены символы:
Код
п»ї<?php

?>
Именно эти символы и создают проблему. Ведь PHP исполняет свой код только внутри тегов <?php ?>... всё что снаружи отправляется браузеру как есть. Получается, что эти 3 байта сразу же отправятся к браузеру ещё до начала интерпретации PHP-кода. Хотя, по умолчанию в php.ini включен output_buffering и установлен в значение 4096... поэтому проблемы с BOM не должно быть... однако, у многих пользователей она почему-то есть. Подозреваю, что это следствие использования разных кривых сборок.

Я вижу 2 пути решения это проблемы:
1. Включить в php.ini
Код
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() указывает, что данные вначале надо накапливать в буфере и отправлять браузеру только когда выполнение скрипта будет завершено.
51
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2011, 11:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает предупреждение "headers already sent" (PHP):

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

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

Что означает if($tr%2==0) - PHP
Что означает if($tr%2==0)? Я тут с другом, такой же &quot;программист&quot;, как и я :) - сидим и спорим. Что это написано if($tr%2==0) Я склоняю...

Что означает ==$0? - PHP
Что значит &quot;==$0&quot; в выделенной строке? Откуда он появился, если в коде я его не прописывала и из-за этого html разметка с ума сошла, блок с...

Что означает строка - PHP
domain.ru/cn_config.php?tpath=data:,%3C?php%20print-439573653*57;%20?%3E? Кто-то пробовал выполнить php код?

Что означает запись - PHP
Что может означать эта запись: $order = ordGetOrder($orderID);. В данном случае ordGetOrder - это что?

31
Tot
6 / 3 / 1
Регистрация: 25.06.2012
Сообщений: 134
24.10.2013, 15:33 #16
У меня текстовый редактор 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
Почетный модератор
9863 / 3762 / 172
Регистрация: 12.06.2008
Сообщений: 11,527
24.10.2013, 19:38  [ТС] #17
Цитата Сообщение от 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 / 1
Регистрация: 25.06.2012
Сообщений: 134
25.10.2013, 16:59 #18
Цитата Сообщение от 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
titavich
71 / 70 / 12
Регистрация: 04.04.2012
Сообщений: 351
25.10.2013, 17:52 #19
Цитата Сообщение от Tot Посмотреть сообщение
открываю phpmyadmin через браузер, а там такая ошибка:
Расширение mysqli не найдено. Пожалуйста, проверьте ваши настройки PHP.
проверьте extension_dir в php.ini и проверьте наличие соответствующих dll в той папке
0
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
04.04.2014, 16:28 #20
А почему у меня таких ошибок не выводится?

Создал простой скрипт:
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!", а так же стартует сессия, в итоге вывод скрипта такой:
Код
Hello world!
Соответственно никаких ошибок скрипт не выводит (в php.ini включен вывод всех ошибок).
0
Vovan-VE
13134 / 6515 / 186
Регистрация: 10.01.2008
Сообщений: 15,061
04.04.2014, 16:53 #21
Цитата Сообщение от pav1uxa Посмотреть сообщение
А почему у меня таких ошибок не выводится?

Создал простой скрипт:
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.ini включен вывод всех ошибок).
Потому что у Вас включен output_buffering = 4096 ?

Добавлено через 14 минут
Если Вы таким макаром отправите на вывод чуть больше данных — больше, чем значение output_buffering, — то произойде "смыв" (flush()), и Вы точно так же получите сабжевую ошибку.
1
Humanoid
Почетный модератор
9863 / 3762 / 172
Регистрация: 12.06.2008
Сообщений: 11,527
04.04.2014, 20:27  [ТС] #22
Цитата Сообщение от pav1uxa Посмотреть сообщение
А почему у меня таких ошибок не выводится?
Скорее всего, буфер в настройках включен.

(извиняюсь, не заметил ответа на следующей странице)
0
Hovik
2 / 2 / 1
Регистрация: 28.01.2014
Сообщений: 76
15.04.2014, 18:55 #23
У меня тоже возникали подобные ошибки и не скрываю по моей вине!Заголовки надо отправлять в первую очередь на самом верху скрипта а я когда отправлял заголовки в середине скрипта то возникала ошибка!Немножко погуглив я нашел ответ и теперь эту ошибку не встречаю
0
BalrogKolyan
0 / 0 / 0
Регистрация: 16.01.2015
Сообщений: 1
17.01.2015, 11:52 #24
Здраствуйте.
Возникла следуйщая проблема. Есть у меня код (честно притыренный и переработанный под свои нужды). Сам по себе он работает нормально, хотя и не хочет отсылать письма с мейл.ру. Но мне необходимо вставить его в сайт на основе вордпресс и тут начинаются вышеописанные проблемы. Я пытаюсь вставить его как "страницу". Для возможности подключать php вставил в functions.php используемой темы следуйщий код:
Кликните здесь для просмотра всего текста
function exec_php($matches){
eval('ob_start();'.$matches[1].'$inline_execute_output=ob_get_contents();ob_end_clean();');
return $inline_execute_output;
}
function inline_php($content){
$content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
$content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
return $content;
}
add_filter('the_content', 'inline_php', 0);


Ошибки выбивает следуйщие:
Кликните здесь для просмотра всего текста
Warning: session_start() [function.session-start]: Cannot send session cookie — headers already sent by (output started at W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\header.php:13) in W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\functions.php(512) : eval()’d code on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter — headers already sent (output started at W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\header.php:13) in W:\domains\wp-vodokanal\wp-content\themes\twentytwelve\functions.php(512) : eval()’d code on line 2


Насколько я понимаю, вставлять сессию в "страницу" - в корне неправильно, так как перед ней идет файл headers.php. Если вставляю сессию и связанный с ней код в начало файла хедерс, все работает но "криво" - после отправки данных, меня переадресовывает на главную страницу, а когда перехожу обратно на нужную, там есть сообщения об отправке/ошибке.
Понимаю, что делаю видимо неправильно, но в упор не знаю как грамотно впихнуть код в вордпресс.
Зараннее благодарен.
0
qwertyyyyyw
2 / 2 / 1
Регистрация: 29.01.2015
Сообщений: 340
05.02.2015, 14:02 #25
Сегодня писал на mvc php авторизацию и получил такую ошибку, причём ругался на index.php:1. Я не заметил, прочесал весь контроллёр, вид, всю модель, потом заметил эту строку, зашел в файл, вроде не чего перед
PHP
1
<?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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
class Model_Main extends Model {
    
  public function __construct() {
    include 'application/lib/message.php';
    include 'application/lib/security.php';
    include 'application/lib/log.php';
    $this->domain = $_SERVER['HTTP_HOST'];
    $this->security = new Security;
    $this->message = new Message;
   $this->log = new Log;
    $this->db = new PDO('mysql:host=localhost;dbname=user', 'root', '');  
  } 
  
  public function get_data() {}
  
  private function getUserRow($email){
    $stmt = $this->db->prepare("SELECT * FROM `users` WHERE `email` = :email");
    $stmt->bindParam('email', $email);
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    return $row;
  }
  
  public function auth(){
    $email = $_POST['email'];
    $password = $_POST['password'];
    $info_user = self::getUserRow($email);
    try{
      if($info_user['sault'] == ''){
     //  $this->message->getLang('incorrect_email_or_passw');
      } else {
        $token_auth = $this->security->genAuthToken($info_user['hash']); 
        $password = md5($password.$info_user['sault']);
        $stmt = $this->db->prepare("SELECT * FROM `users` WHERE `email` = :email AND `password` = :password");
        $stmt->bindParam('email', $email);
        $stmt->bindParam('password', $password);
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_ASSOC);  
        if ($row['id'] == '') {
        //  echo($this->message->getLang('incorrect_email_or_passw'));  
        } else {
          $sql = "UPDATE `users` SET `token_auth` = :token_auth WHERE `hash` = :hash;";
          $stmt = $this->db->prepare($sql); 
          $stmt->bindParam(':token_auth', $token_auth);
          $stmt->bindParam(':hash', $row['hash']);
          $stmt->execute();     
          setcookie('sault', $row['sault'], time()+3600, '/', $this->domain);//1 hour
          setcookie('hash', $row['hash'], time()+3600, '/', $this->domain);
        //  header('Location: /profile.php');
        }
      }  
    } catch (PDOException $e) {
      $this->log->recordLog('Auth error(try, catch) - '.__FILE__.':'.__LINE__);
  //    echo $this->message->getLang('error_auth_db', 'ru'); // error_reg_db echo 'Error #1. Please check back later.';
      exit;
    }
 
  }
  
  private function getUserLang(){
    $arr = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $lang = substr($arr, 0, 2);
    if(!$lang) {
      $lang = 'ru';
    }
    return $lang;
  }
  
  private function reg(){
    $user = array();
    $user['name'] = $_POST['name']; 
    $user['lastname'] = $_POST['lastname']; 
    $user['email'] = $_POST['email'];   
    $user['password'] = $_POST['password']; 
    $user['ip'] =  $_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : $_SERVER['HTTP_X_FORWARDED_FOR'];//$_POST['lastname']
    $user['hash'] = $this->securiy->createHash($user['password']);                                                                                                      ;
    $user['lang'] = self::getUserLang();
    $date = date('Y-m-d');
    $user['sault'] = rand(0, 90000);
    $user['password'] = md5($user['password'].$user['sault']);      
    $token_auth = $this->security->genAuthToken($user['hash']);
    if(preg_match('/^[a-zа-я]{0,255}$/usi', $user['name'])) {//'/[^a-zа-я]+/si'
      if(preg_match('/^[a-zа-я]{0,255}$/usi', $user['lastname'])) {
        if(filter_var($user['email'], FILTER_VALIDATE_EMAIL)) {
          if(preg_match('/^[a-zа-я0-9-=+.,@#]/i', $user['password'])) {
            try {
              $sql = $this->db->prepare("INSERT INTO `users`(`id`, `name`, `lastname`, `email`, `phone`, `ip`, `hash`, `token_auth`, `lang`, `date_reg`, `date_birth`, `sault`, `password`)
                                         VALUES('', :name, :lastname, :email, '', :ip, :hash, :token_auth, :lang, :date_reg, '', :sault, :passw)");             
              $sql->execute(array(':name' => $user['name'], 
                                  ':lastname' => $user['lastname'],
                                  ':email' => $user['email'],
                                  ':ip' => $user['ip'],
                                  ':hash' => $user['hash'],
                                  ':token_auth' => $token_auth,
                                  ':lang' => $user['lang'],
                                  ':date_reg' => $date,
                                  ':sault' => $user['sault'],
                                  ':passw' => $user['password']));
              if($sql) {
                setcookie('hash', $user['hash'], time()+3600, '/', $this->domain);// Время жизни: 1 час 
                setcookie('token', $token_auth, time()+3600, '/', $this->domain);// Время жизни: 1 час 
                //echo '<script type="text/javascript">window.top.location="profile.php"</script>';
              } else {
                throw new PDOException('PDOException');
              }
            } catch (PDOException $e) {
              $this->log->recordLog('Error #1. Registration error - '.__FILE__.':'.__LINE__);
           //   echo $this->message->getLang('error_reg_db', 'ru'); // error_reg_db echo 'Error #1. Please check back later.';
              exit;
            }
          }
        }
      }
    }
  }
 
}
 
?>
0
julyca
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 1
10.02.2015, 21:08 #26
Огромное спасибо, отредактировала файл configuration.php и всё заработало. Извините, не нашла кнопки спасибо, поэтому пишу в сообщении.
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1721 / 1264 / 343
Регистрация: 12.01.2011
Сообщений: 5,018
29.11.2015, 21:22 #27
Я добавлю от себя не много... Т.к людям пишешь , даешь эту ссылку а они всё равно не понимаю что нужно предпринять для того что бы ошибки не было. Я в одной тебе человеку объяснил наглядно и он понял. То ли лень им тут читать... не знаю.

... Это пустое место.
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
<!DOCTYPE html>
<html lang="rus">
<head>
    <meta charset="UTF-8"/>
    <title>First PHP-page</title>
</head>
<body>
 
<?php
header('Content-Type: text/html; charset=utf-8');
$name = "Nikolai";
$age = 25;
 
echo "$name";
echo "<br>car<br>";
echo "my friends name is $name his age is $age";
 
$n = 10;
 
$c = $age + $n;
 
echo "<br>alexandr thought 10 yaers will have $c";
 
 
?>
 
    
</body>
</html>
Ошибка : "Warning: Cannot modify header information - headers already sent by (output started at T:\home\localhost\www\php\index.php:9) in T:\home\localhost\www\php\index.php on line 10
"
Вы спросите , что же в нём не так?
вот это ↓ должно находится в начале файла.
PHP
1
2
3
4
<?php
header('Content-Type: text/html; charset=utf-8');
//дальше уже можете писать вывод [B]echo,print_r[/B] и т.п код...
?>
В этой ситуации уже будет ошибка:
PHP
1
2
3
4
5
<?php
..........
header('Content-Type: text/html; charset=utf-8');
//Догодатся не трудно почему я думаю...
?>
Еще вопрос? А будет ли вот здесь ошибка ?
PHP
1
2
3
4
 
...<?php
header('Content-Type: text/html; charset=utf-8');
?>
Ответ: ДА. Потому что ... это у нас пробел да перед header,session_start,setcookie не должно быть пробелов ентеров и т.п.
1
Jewbacabra
Эксперт PHP
2656 / 2243 / 844
Регистрация: 24.04.2014
Сообщений: 6,744
31.01.2016, 14:03 #28
Цитата Сообщение от Azdeman Посмотреть сообщение
В этой ситуации уже будет ошибка:
PHP
1
2
3
4
5
<?php
..........
header('Content-Type: text/html; charset=utf-8');
//Догодатся не трудно почему я думаю...
?>
Где ???
1
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1721 / 1264 / 343
Регистрация: 12.01.2011
Сообщений: 5,018
31.01.2016, 15:58 #29
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Где ???
Да не дописал.
PHP
1
2
3
4
5
<?php
echo ' ';
header('Content-Type: text/html; charset=utf-8');
//Догодатся не трудно почему я думаю...     
?>
0
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,867
Записей в блоге: 1
Завершенные тесты: 5
28.02.2016, 20:33 #30
Цитата Сообщение от megahertz Посмотреть сообщение
PHPHTML
1
2
3
4
5
6
7
8
9
<html>
<head>
<title>test</title>
<meta http-equiv="Refresh" content="<?=$delay?>" />
</head>
<body>
<?php
header("Content-Type: text/html; charset=utf-8");
?>
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Первое, что хотелось бы узнать: почему это работает и работает ли вообще?
Цитата Сообщение от megahertz Посмотреть сообщение
грубая опечатка, убрал, тем не менее и с ней и без нее работает
Итак, вопрос: или я глупый, или что-то все же здесь не так.
0
28.02.2016, 20:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2016, 20:33
Привет! Вот еще темы с ответами:

Что означает точка - PHP
Всем привет, хотелось бы узнать что означает эта точка между солью и паролемmd5( md5( &quot;salt&quot; ) . md5( &quot;password&quot; ) );

Что означает знак - PHP
Имеется код &lt;?php echo $this-&gt;pagination-&gt;getListFooter(); ?&gt; Что означает знак -&gt; ??? И если можно, что вообще происходит в этой...

Что означает php конструкция? - PHP
Вопрос в заголовке. Сама конструкция: echo isset($_COOKIE) &amp;&amp; $_COOKIE == 'list' ? 'list' : 'list'; Особенно интересует 'list' ? 'list'...

что означает эта ошибка? - PHP
раньше сайт нормально работал, а теперь на белом экране выводится такая надпись Fatal error: The encoded file /указывается путь к...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru