Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at T:\home\localhost\wenst\bloki\left.php:79) in T:\home\localhost\wenst\bloki\right.php on line 1
Если я открываю сессию у шапке сайта (header), то ошибки не выдает и пользователь без проблем заходит на сайт. Но когда пользователь авторизированый, то ОН НЕ ВИДЕТ КОММЕНТАРИЕВ и не пашет система оценки файлов. А если лазить по сайту не авторизированым то видно коментарии и оценка файлов работает.
Помогите решить эту проблему, а то у меня скоро крыша поедит!!!
Спустя 8 часов, 29 минут, 20 секунд (14.02.2010 - 06:37) NewBePhp написал(а):
вот есть коммент который и говорит о вашей ошибке:
Cannot send session cache limiter - headers already sent подобная ошибка частенько выплывает при запуске сессии. Одни из причин подобной ошибки это то что перед session_start() поподают пробелы или html теги. Постарайтесь перенисти функцию до включения файлов include и require.
Cannot send session cache limiter - headers already sent подобная ошибка частенько выплывает при запуске сессии. Одни из причин подобной ошибки это то что перед session_start() поподают пробелы или html теги. Постарайтесь перенисти функцию до включения файлов include и require.
Спустя 36 минут, 48 секунд (14.02.2010 - 07:14) qpayct написал(а):
Это может быть только по той причине, что как тебе и сказал товарищ выше, происходит вывод перед отсылкой хеадера. Это может быть по нескольким причинам:
1. Ты экранишь эхо и т.п до сессии.
2. Файл не сохранен в without BOM (по стандарту обычно Ansi)
Вроде бы все...
Ну и если уж очень надо и никак иначе, то только в этом случае пользуемся спец.функкциями ob_start() ob_end_flush() если ничего не напутал а такое тоже возможно
1. Ты экранишь эхо и т.п до сессии.
2. Файл не сохранен в without BOM (по стандарту обычно Ansi)
Вроде бы все...
Ну и если уж очень надо и никак иначе, то только в этом случае пользуемся спец.функкциями ob_start() ob_end_flush() если ничего не напутал а такое тоже возможно
Спустя 1 день, 12 часов, 58 минут, 16 секунд (15.02.2010 - 20:12) serzh написал(а):
ДА У МЕНЯ СТРАНИЦА (right.php) начинается со <? start_session(); ?> и никакие пробелы, теги или функции include или header перед ними не стоят. Вот например код страницы:
<?
session_start();
include ("bd.php");
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password'",$db);
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
?>
<td width="230" valign="top"><div style="padding:3px;
margin:5px;"><img src="img/pan.jpg" width="220" height="40"><div style="border:3px solid #666666;
border-top-width:0px;
border-bottom-width:0px;
background-image:url(img/rew1.jpg);"><br>
<?
if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<form action="testreg.php" method="post">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" -->
<div style="text-align:center;"><input name="login" type="text" size="20" style="color:#363636; border:1px solid #DFAA38; padding:1px; font-size:12px; background-color:#FFFFFF;" value="Ваш ник..." onFocus="this.value=''; this.style.color='#000000'; this.style.background='#FFFFFF'" onblur="this.style.background='#FFFFFF'; if (this.value=='') {this.value='Ваш ник...'; this.style.color='#000000'}" size="15" maxlength="15"
HERE;
if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}
print <<<HERE
</div>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<div style="text-align:center; margin-top:15px;"><input size="20" name="password" type="password" style="color:#363636; padding:1px; font-size:12px; border:1px solid #DFAA38; background-color:#FFFFFF;" value="Пароль..." onFocus="this.value=''; this.style.color='#000000'; this.style.background='#FFFFFF'" onblur="this.style.background='#FFFFFF'; if (this.value=='') {this.value='Пароль...'; this.style.color='#000000'}" size="15" maxlength="15"
HERE;
if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}
print <<<HERE
</div>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->
<div style="margin-top:15px;" align="center">
<input type="submit" name="submit" value="Войти">
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
</div></form>
<div align="center" style="margin-top:10px; "><p style="text-align:center;">Вы вошли на сайт, как гость.</p></div><br>
HERE;
}
else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//************************************************************************************
print <<<HERE
<div>
<div align="center">Здравствуйте,<p style='color:#000066; margin-bottom:5px; margin-top:10px; font-size:14px;'>
<strong>$_SESSION[login]</strong>!</p></div>
<div align="center"><a>Ваш аватар:
<p style='margin-top:10px; margin-bottom:15px;'><img alt='$_SESSION[login]' src='$myrow[avatar]'></p></div></div><br>
<!-- Выше отображается аватар. Его адрес содержит переменная $myrow[avatar] -->
<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->
HERE;
//************************************************************************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.
}
?>
</div>
<img style="margin-top:-20px; padding-top:0px;" src="img/mu2.jpg" width="220" height="20"><br><br>
<img src="img/poi2.jpg" style="margin-bottom:-5px;" width="220" height="40">
<div style="border:3px solid #666666; border-top-width:0px; border-bottom-width:0px; background-image:url(img/rew1.jpg);"><br>
<div style="text-align:center; margin-left:7px; padding-bottom:5px; margin-right:7px;
margin-top:10px;">
<form action="poisk.php" method="post" name="form_poisk">
<c style="margin-top:10px;"><input name="poisk" type="text" size="17" maxlength="40"><input style="padding-right:4px; margin-left:5px;" name="submit_poisk" type="submit" value="Go"></c>
</form>
<br><br>
</div></div>
<img style="margin-top:-20px; padding-top:0px;" src="img/mu2.jpg" width="220" height="20"><br><br>
<img src="img/cal.jpg" style="margin-bottom:-5px;" width="220" height="40">
<div style="border:3px solid #666666; border-top-width:0px; border-bottom-width:0px; background-image:url(img/rew1.jpg); color:"><br>
<html>
<head>
<style type="text/css">
.main {
width:200px;
}
.month {
padding:6px;
font:bold 12px verdana;
color:#000033;
}
.daysofweek {
padding:4px;
font:bold 12px verdana;
color:#FF0000;
}
.days {
font-size: 12px;
font-family:verdana;
color:black;
padding: 4px;
}
.days #today{
font-weight: bold;
color:#0000FF;
}
</style>
<script type="text/javascript" >function buildCal(m, y, cM, cH, cDW, cD, brdr){
var mn=['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'];
var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
var oD = new Date(y, m -1, 0); //DD replaced line to fix date bug when current day is 31st
oD.od=oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st
var todaydate=new Date() //DD added
var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
var t='<div class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" cellspacing="0"><tr align="center">';
t+='<td colspan="7" align="center" class="'+cH+'">'+mn[m-1]+' - '+y+'</td></tr><tr align="center">';
for(s=0;s<7;s++)t+='<td class="'+cDW+'" >'+"ПВСЧПСВ".substr(s,1)+'</td>';
t+='</tr><tr align="center">';
for(i=1;i<=42;i++){
var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : ' ';
if (x==scanfortoday) //DD added
x='<span id="today">'+x+'</span>' //DD added
t+='<td class="'+cD+'">'+x+' </td>';
if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
}
return t+='</tr></table></div>';
}
</script> </head>
<script type="text/javascript">
var todaydate=new Date()
var curmonth=todaydate.getMonth()+1 //get current month (1-12)
var curyear=todaydate.getFullYear() //get current year
</script>
<table align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" width="210px">
<script>
document.write(buildCal(curmonth ,curyear, "main", "month", "daysofweek", "days", 1));
</script></td>
</tr>
</table>
</body>
</html>
<br>
</div>
<img style="margin-top:-11px; padding-top:0px;" src="img/mu2.jpg" width="220" height="20"><br><br>
<img src="img/stat.jpg" style="margin-bottom:-5px;" width="220" height="40">
<div style="border:3px solid #666666; border-top-width:0px; border-bottom-width:0px; background-image:url(img/rew1.jpg);"><br><br><br>
</div>
<img style="margin-top:-11px; padding-top:0px;" src="img/mu2.jpg" width="220" height="20"><br><br>
<img src="img/rek.jpg" style="margin-bottom:-5px;" width="220" height="40">
<div style="border:3px solid #666666; border-top-width:0px; border-bottom-width:0px; background-image:url(img/rew1.jpg);"><br>
<MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount=1 scrollDelay=1 direction=up width=210 height=70 border=1>
<script language="JavaScript" src="run-js.php"></script>
</MARQUEE>
</div>
<img style="margin-top:-11px; padding-top:0px;" src="img/mu2.jpg" width="220" height="20"><br><br>
</div></td>
?>
Спустя 29 минут, 40 секунд (15.02.2010 - 20:41) Kuliev написал(а):
serzh
Возможно у Вас пробел перед <?
Возможно у Вас пробел перед <?
Спустя 2 часа, 13 минут, 1 секунда (15.02.2010 - 22:54) serzh написал(а):
нет ничего. Я из-за этой регистрации уже на месяц отложил вылаживание сайта на сервер. Если кто-то шарит в php, а в особенности в этих сессиях - помогите плиз. В долгу не останусь. Моя ася: 593-999-516.
Спустя 18 часов, 18 минут, 50 секунд (16.02.2010 - 17:13) serzh написал(а):
Так, ошибку выдает из-за того, что мой правый блок подключается функциею include к центральной части сайта. Я поставил start_session в начале этой страницы, перед подключением блоков. Но таких страниц у меня очень много. Мне, что начинать сессии на всех страницах или есть другой способ?
Спустя 4 минуты, 47 секунд (16.02.2010 - 17:18) Adil написал(а):
Сессию начинай в header, если у тебя такой имеется..
Спустя 3 часа, 26 минут, 9 секунд (16.02.2010 - 20:44) serzh написал(а):
да я же написал, что если я открываю сессию у header, то авторизированый пользователь не видет комментариев и не может оценить файл, а неавторизированый - наоборот!!!!
Спустя 1 минута, 35 секунд (16.02.2010 - 20:46) serzh написал(а):
хотя header также подключается к страницам через функцию include!
Спустя 16 часов, 38 минут, 19 секунд (17.02.2010 - 13:24) qpayct написал(а):
ну ты тормоз
Спустя 12 часов, 54 минуты, 35 секунд (18.02.2010 - 02:19) serzh написал(а):
если ты такой умный, то напиши почему у меня авторизированый пользователь не видет комментариев к заметкам!!!!!
Спустя 4 минуты, 2 секунды (18.02.2010 - 02:23) serzh написал(а):
вопрос - снят, материал - розжован!