powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / проблема со стартом сессии
11 сообщений из 11, страница 1 из 1
проблема со стартом сессии
    #38322669
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

В файле index.php происходит запуск сессии. Дальше используются переменные $_SESSION. До какого-то времени все работало нормально, но теперь получаю ошибку: "Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\localhost\www\classes\SiteCore_Admin.php:1) in Z:\home\localhost\www\index.php on line 9"

В index.php на девятой строке -
Код: php
1.
session_start();



Если эту строку заремарчить, при старте сайта ошибки нет, но потом, при обращении к сессионным переменным, естественно, возникает другая ошибка.

Разработку веду под windows 7, ошибка возникает в firefox 21.0 и internet explorer 10. В других браузерах не пробовал.

Подскажите, как с этим бороться.
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322690
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
навернео в начале файла закрались три байта BOM. либо гдето добавили вы вывод до вызова сессии
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322693
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перенес старт сесссии в самое начало файла index.php. Ошибка пропала.

при вводе логина и пароля на вход в админку проверяется наличие в базе пары логин/пароль. После этого ошибка:
"Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\classes\SiteCore_Admin.php:1) in Z:\home\localhost\www\classes\login.php on line 21"

В файле login.php в строках 19 - 27:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
			if(mysql_num_rows($result) == 1) {
				$_SESSION['user'] = TRUE;
				header("Location:?option=admin"); //это строка 21
				
				exit();
			}
			else {
				exit("Такого пользователя нет");
			}



Почему ранее это срабатывало без ошибок?
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322704
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ГужановПочему ранее это срабатывало без ошибок?Возможно, использовали другой редактор. Или кодировка файлов была однобайтовая.
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322709
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleПавел ГужановПочему ранее это срабатывало без ошибок?Возможно, использовали другой редактор. Или кодировка файлов была однобайтовая.

использую только CodeLobsterPHPEdition бесплатную версию. Правда, слежу за обновлениями и регулярно обновляюсь. Кодировка с самого начала используется UTF-8
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322721
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае, смотрите откуда начинается вывод (output started at .....). Если там "ничего нет" в текстовом редакторе, тогда смотрите HEX-смотрелкой.
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322732
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleВ любом случае, смотрите откуда начинается вывод (output started at .....). Если там "ничего нет" в текстовом редакторе, тогда смотрите HEX-смотрелкой.

В ошибке написано "output started at Z:\home\localhost\www\classes\SiteCore_Admin.php"
Файл SiteCore_Admin.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.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
<?php
abstract class SiteCore_Admin {
	
	protected $db;
	
	public function __construct() {
		
		if(!$_SESSION['user']) {
			header("Location:?option=login");
		}
	
		$this->db = mysql_connect(HOST,USER,PASSWORD);
		if(!$this->db) {
			exit("Ошибка соединения с базой данных".mysql_error());
		}
		if(!mysql_select_db(DB,$this->db)) {
			exit("Нет такой базы данных".mysql_error());
		}
		mysql_query("SET NAMES 'UTF8'");
		
	}
	
	protected function get_header() {
		require_once "header.php";
	}
	
	protected function get_left_menu() {
		
		echo '<table class="content" align="center" border="0">';
		echo '<tr>
			<td class="leftMenu">
				<p>
					<a href="?option=football_teams" alt="Футбольные команды">
						Футбольные команды
					</a>
				</p>
			</td>
			<td class="sep">
			</td>';
			if ($_GET['option'] == 'admin') {
				echo '<td>
					</td>
				</tr>
			</table>
			</body>
			</html>';
			}
	}

	 public function get_body() {
		
		if($_POST || $_GET['del']) {
			$this->obr();
		}
		$this->get_header();
		if ($_SESSION['user']){
			$this->get_left_menu();
		}
	}
	
	abstract function get_content();
	
	protected function get_our_football_teams() {
		$query = "SELECT id, name FROM football_teams";
		$result = mysql_query($query);
		if(!$result) {
			exit(mysql_error());
		}
		$row = array();
		for($i = 0; $i < mysql_num_rows($result);$i++) {
			$row[] = mysql_fetch_array($result,MYSQL_ASSOC);
		}
		
		return $row;
	}
	
	protected function get_opponent_football_teams($id_our_team) {
		$query = "SELECT id, name FROM football_opponent_teams WHERE id_team = '$id_our_team'";
		$result = mysql_query($query);
		if(!$result) {
			exit(mysql_error());
		}
		$row = array();
		for($i = 0; $i < mysql_num_rows($result);$i++) {
			$row[] = mysql_fetch_array($result,MYSQL_ASSOC);
		}
		
		return $row;
	}
	
	
	protected function get_football_games($id_team) {
		$query = "select id_age from football_teams where id = '$id_team'";
		$result = mysql_query($query);
		if(!$result) {
			exit(mysql_error());
		}
		$row = mysql_result($result,0,'id_age');
		$query = "select game.id,
			concat(firstTeams.name,'-',secondTeams.name,'. ',game.game_city,'. ',date_format(game.game_date,'%d.%m.%Y')) as name
				from football_results game
				join football_teams firstTeams on firstTeams.ID = game.ID_FIRST_TEAM
				join football_teams secondTeams on secondTeams.ID = game.ID_SECOND_TEAM
			where firstTeams.ID_AGE = '$row'
				and secondTeams.ID_AGE = '$row'";

		$result = mysql_query($query);
		if(!$result) {
			exit(mysql_error());
		}
		$res = array();
		for($i = 0; $i < mysql_num_rows($result);$i++) {
			$res[] = mysql_fetch_array($result,MYSQL_ASSOC);
		}
		return $res;
	}		
	
	protected function get_football_teams_age($id_age) {
		$query = "select id,name from football_teams where id_age = '$id_age'
					";
		$result = mysql_query($query);
		if(!$result) {
			exit(mysql_error());
		}
		$row = array();
		for($i = 0; $i < mysql_num_rows($result);$i++) {
			$row[] = mysql_fetch_array($result,MYSQL_ASSOC);
		}
		
		return $row;
	}		
	
	protected function get_football_ages() {
		$query = "select id,min_age,max_age from football_age order by min_age";
		$result = mysql_query($query);
		if(!$result) {
			exit(mysql_error());
		}
		$row = array();
		for($i = 0; $i < mysql_num_rows($result);$i++) {
			$row[] = mysql_fetch_array($result,MYSQL_ASSOC);
		}
		
		return $row;

	}
}

?>



А что искать в hex редакторе?
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322734
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В hex редакторе вижу, что первые три байта: ef bb bf и перед "<php" непонятные символы "п»ї" В других файлах этого нет. Проблема в них?
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38322745
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, убрал эти символы - все стало работать. Спасибо!
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38326179
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Гужанов,

В нотепаде плюс предусмотрена опция UTF-8 without BOM. Кто-то у вас поработал и сохранил скрипт с бом-бой. То есть по идее редактор должен отображать состояние кодировки документа и позволять ее менять. Бомов нигде не должно быть. пхп на них кладет, то есть пропускает как данные.

Попутно. Без bom кириллица может навернуться при определенных условиях. Тогда надо добавить хедер тоже в самое начало.

header('Content-Type: text/html; charset=UTF-8');

Еще ковыряют htaccess, но апач рекомендует воздержаться.
...
Рейтинг: 0 / 0
проблема со стартом сессии
    #38326229
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Кстати в браузере можно идентифицировать BOM не заглядывая в заголовки. Если пункт меню типа Encoding не активен, значит клиент сам разобрался именно с помощью BOM. хтмл это текст, текст начинается с BOM, значит юникод без вариантов.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / проблема со стартом сессии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]