Warning: Cannot modify header information - headers already sent by (output started at Z:\home\Avenging\www\authorize.php:3)
Как я понимаю это может быть из за того что перед header нельзя на страницу ничего выводить, так никакого вывода помоему и не было, если конечно полученные страницей данные методом POST не являются выводом на эту страницу. или я чего то не понимаю...
Где моя ошибка? вот текст:
<?php
$connection = mysql_connect("localhost","avenging","vehfirf"); //соединяемся с сервером базы данных
if (!$connection)
{ // если нет коннекта
$_POST['reginfo']="Извините, работа с учётными записями в данный момент невозможна по техническим причинам.";
header ("Location:index.php");
}
else // коннект есть
{
if(!mysql_select_db("имя_базы")) // выбираем базу данных, проверяем выбралась ли
{
$_POST['reginfo']="Извините, работа с учётными записями в данный момент невозможна по техническим причинам.";
header ("Location:index.php");
}
else
mysql_query("SET NAMES cp1251"); // запрос на установку кодировки
$query ="SELECT password FROM users WHERE login = '".$_POST['log']."'";
$result = mysql_query($query); // получаем выборку из базы
if (mysql_num_rows($result)!=0) //если количество записей (найденных пользователей) не ноль
$found_user_pas = mysql_result($result,0); // достаём пароль найденого пользователя
if (($found_user_pas==$_POST['pas']) &&($_POST['pas'])!="") //если пароль введённый и пароль в базе совпадают, и введён не пустой пароль
{
$_POST['login'] = $_POST['log']; // сохраняем логин в глобале
$_POST['log'] = ""; // удаляем временный логин
$_POST['authorize'] = true; // авторизуем чувака
// тут добавить id сессии в куки для дальнейшей самоавторизации
header ("Location:index.php"); // перенаправляем на главную
}
else
{
$_POST['reginfo']="Пользователя с таким логином и паролем не существует. Введите верные логин и пароль или пройдите регистрацию.";
header ("Location:index.php");
}
}
?>
Спустя 3 минуты, 20 секунд (30.06.2011 - 20:24) Winston написал(а):
Ты эту страницу нигде не инклюдишь ?
Спустя 2 минуты, 23 секунды (30.06.2011 - 20:27) golovolom написал(а):
Цитата (PHPprogramer @ 30.06.2011 - 17:24) |
Ты эту страницу нигде не инклюдишь ? |
я её вызываю из файла authorize_box.php
<form action='authorize.php' method='post'>
<input type=text name=log value=Логин class='content_box input'>
<input type=password name=pas value=Пароль class='content_box input'>
<input type=submit name=vhod value=Вход class='content_box button'>
</form>
а вот он уже include в файле index.php
Спустя 24 секунды (30.06.2011 - 20:27) walerus написал(а):
Цитата (PHPprogramer @ 30.06.2011 - 17:24) |
Ты эту страницу нигде не инклюдишь ? |
+1
Ошибка из за того, что до вызова хеадер локейшн уже что то выводится на экран.
Спустя 1 минута, 25 секунд (30.06.2011 - 20:29) golovolom написал(а):
Цитата (walerus @ 30.06.2011 - 17:27) | ||
+1 |
как мне в таком случае поступить?
Спустя 3 минуты, 30 секунд (30.06.2011 - 20:32) Winston написал(а):
Напрягают такие вот записи.
Все ведь можно свести к
UDP
И зачем пихать текст в пост, а потом делать редирект? Ведь данные очистятся
Мой тебе совет. Замени все редиректы при коннекте к БД на or die
$connection = mysql_connect("localhost","avenging","vehfirf"); //соединяемся с сервером базы данных
if (!$connection)
{ // если нет коннекта
$_POST['reginfo']="Извините, работа с учётными записями в данный момент невозможна по техническим причинам.";
header ("Location:index.php");
}
Все ведь можно свести к
//соединяемся с сервером базы данных
$connection = mysql_connect("localhost","avenging","vehfirf") or die('Извините, работа с учётными записями в данный момент невозможна по техническим причинам.');
UDP
И зачем пихать текст в пост, а потом делать редирект? Ведь данные очистятся
Мой тебе совет. Замени все редиректы при коннекте к БД на or die
Спустя 2 минуты, 24 секунды (30.06.2011 - 20:35) walerus написал(а):
golovolom обрамляй код, который ты постишь в теги PHP, чтоб читабельный текст был )
Спустя 5 минут, 32 секунды (30.06.2011 - 20:40) golovolom написал(а):
Напрягают такие вот записи.
Все ведь можно свести к
соединяемся с сервером базы данных
$connection = mysql_connect("localhost","avenging","vehfirf") or die('Извините, работа с учётными записями в данный момент невозможна по техническим причинам.');
у меня было die, но после появления ошибки я начал искать из-за чего она могла появиться, я не совсем в курсе что является выводом в окно браузера а что нет, 4ый день учусь только)) потому и написал в таком виде после различных переделок и проверок
И зачем пихать текст в пост, а потом делать редирект? Ведь данные очистятся
а вот этого я не знал. спасибо за подсказку
Все ведь можно свести к
соединяемся с сервером базы данных
$connection = mysql_connect("localhost","avenging","vehfirf") or die('Извините, работа с учётными записями в данный момент невозможна по техническим причинам.');
у меня было die, но после появления ошибки я начал искать из-за чего она могла появиться, я не совсем в курсе что является выводом в окно браузера а что нет, 4ый день учусь только)) потому и написал в таком виде после различных переделок и проверок
И зачем пихать текст в пост, а потом делать редирект? Ведь данные очистятся
а вот этого я не знал. спасибо за подсказку
Спустя 2 минуты, 43 секунды (30.06.2011 - 20:43) Winston написал(а):
Кодировка файла какая?
Если utf-8
То может быть UTF-8 BOM и в следствии ошибка.
Если utf-8
То может быть UTF-8 BOM и в следствии ошибка.
Спустя 4 минуты, 57 секунд (30.06.2011 - 20:48) walerus написал(а):
Вывали коды всех трех файлов, а то что то нифига непонятно... только в тегаг PHP.
Над окошком куда вставляешь текст есть кнопочка PHP, вот нажимаешь ее, вставляешь код, потом еще раз ее, что б получилось примерно так:
[ php ]
тут твой код
[ /php ]
только без пробелов ...
Над окошком куда вставляешь текст есть кнопочка PHP, вот нажимаешь ее, вставляешь код, потом еще раз ее, что б получилось примерно так:
[ php ]
тут твой код
[ /php ]
только без пробелов ...
Спустя 1 минута, 50 секунд (30.06.2011 - 20:50) walerus написал(а):
Цитата (PHPprogramer @ 30.06.2011 - 17:43) |
Кодировка файла какая? Если utf-8 То может быть UTF-8 BOM и в следствии ошибка. |
Не, если бь был BOM, то он был бы в 1й строке, а по ошибке я так понял в 3й.
Спустя 8 минут, 1 секунда (30.06.2011 - 20:58) Winston написал(а):
Цитата (walerus @ 30.06.2011 - 20:50) |
Не, если бь был BOM, то он был бы в 1й строке, а по ошибке я так понял в 3й. |
Нет он выдаст ошибку в строке с header
Спустя 18 минут, 6 секунд (30.06.2011 - 21:16) golovolom написал(а):
Цитата (PHPprogramer @ 30.06.2011 - 17:43) |
Кодировка файла какая? Если utf-8 То может быть UTF-8 BOM и в следствии ошибка. |
об этом я читал, скачивал утилитку, которая проверяет файлы на наличие UTF-8 BOM, но она не нашла ничего такого...
Спустя 23 минуты, 56 секунд (30.06.2011 - 21:40) golovolom написал(а):
Переделал немного текст, вставил кое-какие поправки по советам, данным здесь, но проблема не исчезла, появилась ещё одна - куки не устанавляваются опять же, замучался уже
Я так и не пойму где у меня происходит вывод в браузер из-за которого нельзя использовать setcookie и header. Ведь страница authorize.php после передачи ей через POST данных открывается новая, пустая и вывода я нигде не делал тут..
вот всё что в файле authorize.php
результат не радует
PS: попробовал в самое начало файла вставить
результат такой
bom не должно быть, так как редактирую в dreamweaver, в настройках стоит кирилица-виндовс..
кстати всё это на локальном сервере происходит. может быть проблема в этом?
а вот файл index.php
а вот authorise_box.php
Я так и не пойму где у меня происходит вывод в браузер из-за которого нельзя использовать setcookie и header. Ведь страница authorize.php после передачи ей через POST данных открывается новая, пустая и вывода я нигде не делал тут..
<?php
//соединяемся с сервером базы данных, выходим если не соединились
$connection = mysql_connect("localhost","logn","pass")
or die ("Извините, работа с учётными записями в данный момент невозможна по техническим причинам.");
// выбираем базу данных, выходим если выбор не прошёл
$select = mysql_select_db("my_base")
or die ("Извините, работа с учётными записями в данный момент невозможна по техническим причинам.");
mysql_query("SET NAMES cp1251"); // запрос на установку кодировки
$query ="SELECT password FROM users WHERE login = '".$_POST['log']."'";
$result = mysql_query($query); // получаем выборку из базы
if (mysql_num_rows($result)!=0) //если количество записей (найденных пользователей) не ноль...
$found_user_pas = mysql_result($result,0); // достаём пароль найденого пользователя
if ( ($found_user_pas==$_POST['pas']) && ($_POST['pas']!="") ) //если пароль введённый и пароль в базе совпадают
{
setcookie('login', $_POST['log']); // сохраняем логин в куки
//$_POST['login'] = $_POST['log']; // сохраняем логин в глобале
setcookie('authorize', true); // записываем в куки что чел авторизован
// $_POST['authorize'] = true; // авторизуем чувака
// тут добавить id сессии в куки
header("Location: http://www.yandex.ru/"); // на яндекс к примеру
//die ("Спасибо что зашли к нам,".$_POST['login'].".");
}
else
die ("Пользователя с данным сочетанием логина и пароля не существует.
Введите корректные логин и пароль или пройдите регистрацию.");
?>
вот всё что в файле authorize.php
результат не радует
Warning: Cannot modify header information - headers already sent by (output started at ..........:3) in ........ on line 19
Warning: Cannot modify header information - headers already sent by (output started at ..........3) in ........ on line 21
Warning: Cannot modify header information - headers already sent by (output started at ........:3) in ........ on line 24
PS: попробовал в самое начало файла вставить
setcookie('login', "dfgdfg"); //5ая строка
echo $_COOKIE['login'];
результат такой
Warning: Cannot modify header information - headers already sent by (output started at .......:3) in ....... on line 5
Warning: Cannot modify header information - headers already sent by (output started at .........:3) in ....... on line 23
Warning: Cannot modify header information - headers already sent by (output started at..........:3) in ....... on line 25
Warning: Cannot modify header information - headers already sent by (output started at ...........:3) in.......... on line 28
bom не должно быть, так как редактирую в dreamweaver, в настройках стоит кирилица-виндовс..
кстати всё это на локальном сервере происходит. может быть проблема в этом?
а вот файл index.php
<?php
include 'is_cookies.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>title</title>
<link rel="stylesheet" type="text/css" href="styles/styletest.css">
</head>
<body>
<div id="layer1">
<img src="img/design/title.png" width="100%">
</div>
<div id="layer2">
<?php
include 'authorize_box.php';
?>
<div id="menu" class="content_box">
<?php
include 'menu.php';
?>
</div>
<div id="content" class="content_box">
// тут контент, нет смысла занимать место
</div>
<div class="content_box" id="footer">
<?php
include 'footer.php';
?>
</div>
</div>
</body>
</html>
а вот authorise_box.php
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<div id='auth' class='content_box' align='left'> <!-- окошко авторизации -->
<?php
echo "Приветствую, ".$_POST['login'].".";//.$_POST['temp'].$_COOKIE['session_id']; // пишем приветственное сообщение
if (!$_POST['authorized']) // если пользователь не авторизован
echo // выводим форму ввода для авторизации
"
Для входа на сайт введите свой логин и пароль, указанный при регистрации.
<form action='authorize.php' method='post'>
<input type=text name=log value=Логин class='content_box input'>
<input type=password name=pas value=Пароль class='content_box input'>
<input type=submit name=vhod value=Вход class='content_box button'>
</form>
";
?>
</div>
Спустя 53 минуты, 32 секунды (30.06.2011 - 22:33) Invis1ble написал(а):
golovolom
Ниче не понятно. Выложи архив, я гляну.
Ниче не понятно. Выложи архив, я гляну.
Спустя 22 минуты, 37 секунд (30.06.2011 - 22:56) golovolom написал(а):
http://dwa82.narod2.ru/www.rar тут архив
Спустя 5 минут, 29 секунд (30.06.2011 - 23:01) Invis1ble написал(а):
Нажми "Редактировать" на своем последнем посте - там будет поле в форме для загрузки файла.
Спустя 30 минут, 6 секунд (30.06.2011 - 23:31) golovolom написал(а):
вставил архив в предыдущее сообщение
Спустя 26 минут, 14 секунд (30.06.2011 - 23:58) Invis1ble написал(а):
В authorize.php в начале стоят 2 пустые строки - это есть вывод. Убери их.
Спустя 3 минуты, 50 секунд (1.07.2011 - 00:01) golovolom написал(а):
Цитата (Invis1ble @ 30.06.2011 - 20:58) |
В authorize.php в начале стоят 2 пустые строки - это есть вывод. Убери их. |
Ох ёлки-палки.. Не думал что пустые строки посылаются как вывод информации. Спасибо громадное за потраченное время, я бы в жизни не догадался. Убрал пустые строки - ошибки пропали)) архивчик затираю за ненадобностью)
Спустя 3 минуты, 14 секунд (1.07.2011 - 00:05) Invis1ble написал(а):
golovolom
Цитата |
Не думал что пустые строки посылаются как вывод информации. |
пустая строка - это как минимум перевод каретки \n
Цитата |
Спасибо громадное за потраченное время |
пожалуйста
Спустя 6 минут, 40 секунд (1.07.2011 - 00:11) golovolom написал(а):
Цитата (Invis1ble @ 30.06.2011 - 21:05) |
golovolom пустая строка - это как минимум перевод каретки \n |
Точно блин, не подумал. Если я суслика не вижу - не значит что его нет)))
_____________
Я не помню, как пьяный вчера это писал