Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с cookie
Форумы портала PHP.SU » » Вопросы новичков » Проблема с cookie

Страниц (1): [1]
 

1. AgManiX - 02 Декабря, 2011 - 21:18:20 - перейти к сообщению
Всем доброго времени суток!
Проблема такая: нужно при клике по ссылке создать куки с параметром "1", который будет жить 1 час. Выскакивает ошибка: Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\phpsge-sl\tpl\default\index.php:37) in Z:\home\localhost\www\phpsge-sl\tpl\default\index.php on line 44
как исправить?
вот код:
PHP:
скопировать код в буфер обмена
  1. <?
  2. if(isset($_GET['id'])){
  3.         connect();
  4.                 $a = mysql_query("select * from servers WHERE id =".$_GET['id']."");
  5.                 while($up = mysql_fetch_array($a, MYSQL_ASSOC) ){$upd = $up[rank] + 1; }
  6.                 mysql_query("UPDATE servers SET `rank` = ".$upd." WHERE `id` ='".$_GET['id']."'");
  7.                 SetCookie("phpSGE-SL-Vote","1");
  8.                 header('location: ./'.$PHP['SELF'].'');
  9. }
  10. ?>
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12. <head>
  13. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  14. <title>{Title}</title>
  15. <meta name="keywords" content="" />
  16. <meta name="description" content="" />
  17. <link href="./tpl/default/default.css" rel="stylesheet" type="text/css" />
  18. </head>
  19. <body>
  20. <div id="outer">
  21.         <div id="header">
  22.                 <h1><a href="#">{SiteName}</a></h1>
  23.                 <h2>{SiteDesc}</h2>
  24.         </div>
  25.         <div id="menu">
  26.                 <ul>
  27.                         <li class="first"><a href="#" accesskey="1" title="">Home</a></li>
  28.                         <li><a href="./addserver.php" accesskey="2" title="">Add Server</a></li>
  29.                 </ul>
  30.         </div>
  31.         <div id="content">
  32.                 <div id="xbg1"></div>
  33.                 <div id="primaryContentContainer">
  34.                         <div id="primaryContent">
  35.                                 <h2>Last Servers</h2>
  36. <table>
  37.                                 <?
  38.                                 connect();
  39.                                 $q = mysql_query("select * from servers");
  40.                                 (!$q) ? die('ERROR #1! ') :'';
  41.                                 while($r = mysql_fetch_array($q, MYSQL_ASSOC) ) {
  42.                                 echo '
  43.                                 <tr class="rowA"><td>'.$r[rank].'';
  44.                                 if (SetCookie("phpSGE-SL-Vote","1")){
  45.                                 echo "";
  46. }else{
  47.  echo '<a href="?id='.$r[id].'">[+1]</a>';
  48.  }
  49. echo '</td><td>'.$r[name].'</td><td><a href="'.$r[link].'">Connect!</a></td></tr>';
  50.                                 }
  51.                                 ?>
  52.                                 </table>
  53.                         </div>
  54.                 </div>
  55.                 <div id="secondaryContent">
  56.                         <h3>Menu</h3>
  57.                         <p><a href="./index.php">Home</a>                       <a href="./addserver.php">Add Server</a>                        <a href="http://amxdm-fortes.tk/phpsge-sl">phpSGE SL page</a></p>
  58.                                                 <h3>Login Form</h3>
  59.                         <?If($_POST['login']) {
  60.     If(auth_user($_POST['username'],$_POST['password'])) {
  61.         Echo("You are now logged in. Click here to go to your page");
  62.         exit;
  63.     } Else {
  64.         Echo("Login Failed! Please try again. <br /><br />");
  65.     }
  66. }
  67.  
  68. login_form(); //display the login form
  69. ?> </p>
  70.                         <h3>Text</h3>
  71.                         <p>Sed vestibulum blandit nisl. Quisque elementum convallis purus. Suspendisse potenti. Donec nulla est, laoreet quis, pellentesque in. <a href="#">More…</a></p>
  72.  
  73.                 </div>
  74.                 <div class="clear"></div>
  75.         </div>
  76.         <div id="footer">
  77.                 <p>Copyright &copy; {Year} {Title}              Powered by <a href="http://amxdm-fortes.tk/phpsge-sl">phpSGE SL</a> Project. Coded by <a href="http://www.amxdm-fortes.tk">Nikita [Fortes] Kushnir</a>. Designed by <a href="http://www.freecsstemplates.org">Free CSS Templates</a></p>
  78.         </div>
  79. </div>
  80. </body>
  81. </html>
  82.  
2. Microteam - 02 Декабря, 2011 - 21:31:54 - перейти к сообщению
Вы до вывода заголовка вывели уже какой то заголовок был выведен) т.е надо выводить кукисы до вывода заголовков)
3. Qualifiv - 02 Декабря, 2011 - 21:38:29 - перейти к сообщению
В 44 строке if (isset(SetCookie("phpSGE-SL-Vote","1"))) Наверно так ?
4. AgManiX - 02 Декабря, 2011 - 21:47:14 - перейти к сообщению
Microteam пишет:
Вы до вывода заголовка вывели уже какой то заголовок был выведен) т.е надо выводить кукисы до вывода заголовков

Дело в том, что у меня header стоит только после SetCookie()
Qualifiv пишет:
В 44 строке if (isset(SetCookie("phpSGE-SL-Vote","1"))) Наверно так ?

скорее всего нет, выходит ошибка: Fatal error: Can't use function return value in write context in Z:\home\localhost\www\phpsge-sl\tpl\default\index.php on line 44
5. Qualifiv - 02 Декабря, 2011 - 22:02:10 - перейти к сообщению
AgManiX В 44 строке ты что хочеш сделать ? Куки установить или проверка есть ли куки ?
Если проверка то if($_COOKIE['phpSGE-SL-Vote'] = '1')
6. AgManiX - 02 Декабря, 2011 - 22:06:51 - перейти к сообщению
Qualifiv пишет:
AgManiX В 44 строке ты что хочеш сделать ? Куки установить или проверка есть ли куки ?
Если проверка то if($_COOKIE['phpSGE-SL-Vote'] = '1')

спасибо!(извини, мало сообщений, поэтому не могу на кнопку кликнуть Недовольство, огорчение ) помогло)
7. Qualifiv - 02 Декабря, 2011 - 22:08:48 - перейти к сообщению
В 7 строке укажи время жизни куки
setcookie("phpSGE-SL-Vote","1",time()+3600);
8. Bio man - 02 Декабря, 2011 - 23:14:49 - перейти к сообщению
Qualifiv пишет:
В 44 строке if (isset(SetCookie("phpSGE-SL-Vote","1"))) Наверно так ?
бред

все заголовки (в том числе и куки, они тоже передаются в заголовке) должны быть вызваны до любого видимого или не видимого вывода в браузер, то есть не какого BOM, пробела, табуляции, html'a и просто текста (то же самое касается всех конструкций вывода (echo, print, var_dump() итд))
если это не соблюдено значит у вас все плохо, но если очень хочется иметь подобный говнокод, то можно использовать буфер Функции управления выводом
(Добавление)
Microteam пишет:
Вы до вывода заголовка вывели уже какой то заголовок был выведен) т.е надо выводить кукисы до вывода заголовков)
если не уверены не пишите, кукисы на заголовки не влияют и заголовки на кукисы тоже, кукисы это по сути и есть заголовки (принимаются и устанавливаются через заголовки). т.е. можно установить куку не используя setcookie() а просто послав заголовок
9. Microteam - 03 Декабря, 2011 - 07:46:59 - перейти к сообщению
Bio man пишет:
Microteam пишет:
Вы до вывода заголовка вывели уже какой то заголовок был выведен) т.е надо выводить кукисы до вывода заголовков)
если не уверены не пишите, кукисы на заголовки не влияют и заголовки на кукисы тоже, кукисы это по сути и есть заголовки (принимаются и устанавливаются через заголовки). т.е. можно установить куку не используя setcookie() а просто послав заголовок
PHP:
скопировать код в буфер обмена
header('Set-Cookie: name=value')


-----
Лучший учебник по PHP - мануал


Я имел ввиду, что до вывода заголовка с кукисами выводится текст например echo или print.)

 

Powered by ExBB FM 1.0 RC1