Здравствуйте, поиск юзал. Таких тем много. Чител и тут, и на других форумах, и на забугорных форумах. Не могу найти причину ошибки. Помогите, уважаемые пхп-гуру. Ошибка следующая: Код (Text): Warning: Cannot modify header information - headers already sent by (output started at T:\home\myphp.ru\www\main.php:11) in T:\home\myphp.ru\www\login.php on line 27 Warning: Cannot modify header information - headers already sent by (output started at T:\home\myphp.ru\www\main.php:11) in T:\home\myphp.ru\www\login.php on line 28 Вот мой index.php : PHP: <?php session_start(); include("config.php"); include("main.php"); include("footer.php"); ?> Это код main.php : PHP: <?php session_start(); include("config.php"); print <<<HERE <html><head> <link rel="stylesheet" type="text/css" href="style/style.css"> </head> <body> <div id="main"> <div id="login"><font class="login"> HERE; if(empty($_SESSION['login']) || empty($_SESSION['password'])) { print <<<HERE <form action="login.php" method="POST"><a href="/index.php"><font color="red">На главную</font></a> <a href="/install.php">Install</a> Вы вошли на сайт как Гость | Логин <input type="text" name="login" maxlength="15" class="loginfield" /> Пароль <input type="text" name="password" maxlength="15" class="loginfield" /> <input type="checkbox" name="save" value="1" /> Запомнить<input type="submit" value="Войти" name="submit" class="submit" /> <a href="registration.php">Регистрация</a></font></form> HERE; } if(!empty($_SESSION['login']) && !empty($_SESSION['password'])) { $login = $_SESSION['login']; $password = $_SESSION['password']; $return = mysql_query("SELECT id FROM users WHERE login = '$login' && password = '$password'"); $row = mysql_fetch_array($return); print <<<HERE <form action="login.php" method="POST"><a href="/index.php"><font color="red">На главную</font></a> <a href="/install.php">Install</a> Вы вошли на сайт как Гость | Логин <input type="text" name="login" maxlength="15" class="loginfield" HERE; if(isset($_COOKIE['login'])) { echo ' value="'.$_COOKIE['login'].'"/>';} print <<<HERE Пароль <input type="text" name="password" class="loginfield" HERE; if(isset($_COOKIE['password'])) { echo ' value="'.$_COOKIE['password'].'"/>';} print <<<HERE <input type="checkbox" name="save" value="1" /> Запомнить <input type="submit" value="Войти" name="submit" class="submit" /> <a href="registration.php">Регистрация</a></font></form> HERE; } else { print <<<HERE Здравствуйте,<b>$_SESSION[login]</b>.(<a href='exit.php'>Выйти</a>)</font> HERE; } print <<<HERE </form></div> <div id="header">Моя страничка:)</div> <div id="nav">Навигация</div> <div id="content"><font class="some"> HERE; ?> И файл login.php : PHP: <?php session_start(); include("main.php"); if(isset($_POST['login'])) { $login = $_POST['login']; if($login == "") {unset($login);} } if(isset($_POST['password'])) { $password = $_POST['password']; if($password == "") {unset($password);} } if(empty($login) or empty($password)) { exit ("Вы ввели неверный пароль"); } $login = trim(stripslashes(htmlspecialchars($login))); $password = md5(trim(stripslashes(htmlspecialchars($password)))); $return = mysql_query("SELECT * FROM users WHERE login = '$login' && password = '$password'"); $row = mysql_fetch_array($return); if(empty($row['id'])) { exit("Введенные вами логин или пароль не верны! Попробуйте еще раз."); } else { $_SESSION['login'] = $row['login']; $_SESSION['password'] = $row['password']; $_SESSION['id'] = $row['id']; if($_POST['save'] == 1) { setcookie("login",$_POST['login'],time()+999999); setcookie("password",$_POST['password'],time()+999999); } } include("footer.php"); ?> Помогите, уже все испробовал, notepad++ норм показал все. Ошибка не пропадает.
kuzmas, сначала хотел сказать, как исправить, но ошибка настолько банальная, что лучше сам найди способ. внимательно изучи ту ссылку, которую тебе дал Mr.M.I.T. — там найдешь ответ на свой вопрос.
TheShock, прочитал. я вижу, что у меня в начале каждого файла идет main.php, который содержит в себе html-символы. а setcookie у меня стоит почти в самом низу. как исправить, что переделать, подскажие, я второй день сижу с этой проблемой, продолжить не могу.....тупой, получается.
kuzmas для начала, когда ты стартуешь сессию ты посылаешь заголовок, поэтому сессия должна стартовать до любого вывода
kuzmas Смените аватару. Разрешены только личные фотографии. А по поводу сабжа — нужно постараться вывести все заголовки в начало файла, тем самым перестроив логику приложения. Если не получается, можно попробовать заюзать такую вещь как http://php.net/ob_start
Elkaz, Спасибо за подсказку. Может кому будет интересно, как я сделал, чтобы проблема пропала. Ниже - файл login.php. Скрипт вынес отдельно в файл /modules/login.php. PHP: <?php session_start(); require("modules/login.php"); ob_start(); include("main.php"); include("footer.php"); ob_end_flush(); ?> И о чудо, ошибка пропала! Спасибо вам огромное! Чудесное утро --------------------------------------------------------------------------------------------------------------------- У меня возникла еще проблема небольшая. Логин и пароль при присутствии оных в куки (я пока не очень разбираюсь в этом, если что, поправьте неуча) заполняются в поля для логина и пароля соответственно (поле value). Также есть чекбокс "save" - Запомнить меня. Я ставлю галочку, нажимаю Войти, но логин-форма у меня не изменяется. Код для нее я выложил... Подскажите пожалуйста, что и где подправить?...
Спешу тебя огорчить, что ошибка не пропала. Она "типа игнорируется", так что не радуйся сильно. Но все будет работать.
Сесси оставил только в main.php. В main.php добавил строчку Код (Text): error_reporting(E_ALL & ~E_NOTICE);; Вывело 4 ошибки о том, что уже давно к базе подключились, исправил их, теперь не выдает. Что еще можно сделать?....