ФорумПрограммированиеPHP для идиотов → Подскажите

Подскажите

  • Tocter

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 7 марта 2010 г. 13:49

    Вот изучаю php. Дошел до кук и тут броблема.Код :
    <html>
    <title></title>
    <body>
    <?
    error_reporting(E_ALL & ~E_NOTICE);
    $_COOKIE['counter']++;
    setcookie("counter", $_COOKIE['counter']);
    echo "$_COOKIE[counter]";
    ?>
    </body>
    </html>
    Вроде как он должен подсчетать количество посещений на страницу, но видает error :
    Warning: Cannot modify header information - headers already sent by (output started at X:\home\localhost\www\cookie.php:4) in X:\home\localhost\www\cookie.php on line 7
    1(что за цыфра непойму)
    Поскажите в чем проблема
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 марта 2010 г. 13:50, спустя 1 минуту 47 секунд

    Код на pyha.ru нужно обрамлять в тег языка. Вот так:

    <html>
    <title></title>
    <body>
    <?
    error_reporting(E_ALL & ~E_NOTICE);
    $_COOKIE['counter']++;
    setcookie("counter", $_COOKIE['counter']);
    echo "$_COOKIE[counter]";
    ?>
    </body>
    </html>
  • Tocter

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 7 марта 2010 г. 13:57, спустя 6 минут 10 секунд

    Код :

    <html>
    <title></title>
    <body>
    <?
    error_reporting(E_ALL & ~E_NOTICE);
    $_COOKIE['counter']++;
    setcookie("counter", $_COOKIE['counter']);
    echo "$_COOKIE[counter]";
    ?>
    </body>
    </html>



    error :
    Warning: Cannot modify header information - headers already sent by (output started at X:\home\localhost\www\cookie.php:4) in X:\home\localhost\www\cookie.php on line 7
    1(что за цыфра непойму)
    Прошу прощения
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 марта 2010 г. 13:59, спустя 2 минуты 37 секунд

    А проблема у вас в том, что работать с cookie, session и прочими headers можно лишь до того момента, как на экране напечатан первый символ. В вашем случае первый символ будет на первой строчке.
    +
    $_COOKIE['counter']++;
    setcookie("counter", $_COOKIE['counter']);

    Во-первых, вторую строчку нужно выполнять первой.
    Во-вторых, вторую строчку нужно выполнят только если $_COOKIE['counter'] не существует.
    В-третьих, это ваще бред. Писать нужно примерно так.

    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    if (isset($_COOKIE['counter'])) setcookie("counter", 0);
    $_COOKIE['counter']++;
    ?>
    <html>
    <title></title>
    <body>
    <?php
    echo "$_COOKIE[counter]";
    ?>
    </body>
    </html>
    Спустя 132 сек.
    PS Мог где нибудь накосячить ибо с браузера писал.
  • Tocter

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 7 марта 2010 г. 14:07, спустя 7 минут 57 секунд

    Спасибо
    И ето не я писал, ето с книги списано и протестировано.
    Тогда другой вопрос :
    if (isset($_COOKIE['counter'])) setcookie("counter", 0);

    у меня все время виводит ноль.
    Если я правильно понимаю, то если куки counter есть, то присвоить ей значение нолью.
    Собственно меня интересует , если я зделаю так
    if (isset($_COOKIE['counter'])) setcookie("counter", $_COOKIE['counter']);

    то вроде как counter должно увеличивать значение на 1 при перезагрузке станице.
    Мне интересует как подсчитать сколь раз я ету старницу перегрузил.
    Хотя если я не прав - исправте.
  • Tocter

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 7 марта 2010 г. 14:13, спустя 5 минут 26 секунд

    я тут понял где накосячил, все таки автор книги прав=) код работает, я просто неправильно записал что и повлекло за собой вопрос
    <?php
    $_COOKIE['counter']++;
    setcookie("counter", $_COOKIE['counter']);
    ?>
    <html>
    <title></title>
    <body>
    <?php
    echo "$_COOKIE[counter]";
    ?>
    </body>
    </html>
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 марта 2010 г. 14:51, спустя 38 минут 23 секунды

    Tocter, ну да. Тупанул я немного. Если не задано, то присваивать 0. А у автора книги хуйня какая то. Неимхо.
    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    if (!isset($_COOKIE['counter'])) setcookie("counter", 0);
    $_COOKIE['counter']++;
    ?>
    <html>
    <title></title>
    <body>
    <?php
    echo "$_COOKIE[counter]";
    ?>
    </body>
    </html>
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 7 марта 2010 г. 14:54, спустя 2 минуты 36 секунд

    Это пиздец

    echo "$_COOKIE[counter]";
    adw/0
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 марта 2010 г. 14:55, спустя 1 минуту 48 секунд

    adw0rd,
    я если чё его код копипастом дописывал.))
    Правильно так?
    echo  $_COOKIE['counter'];
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 7 марта 2010 г. 15:02, спустя 6 минут 44 секунды

    SpartakuS, я про его код и говорю..
    да, так лучше )
    adw/0
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 7 марта 2010 г. 15:06, спустя 4 минуты 22 секунды

    по coding standarts Slaed CMS это было бы как-то так:
    echo "" . $_COOKIE['counter'] . "";

    вы ржете, а я когда-то тоже так писал. В 2006-07 годах примерно
    Спустя 114 сек.
    кстати, а разве $_COOKIE['a'] = 'b' будет эквивалентно setcookie?
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 7 марта 2010 г. 15:13, спустя 6 минут 17 секунд

    Абырвалг, дуд сегодня на дле выебывался. так вот по сравнению со слаедом dle просто Бог.
    Спустя 44 сек.
    $_COOKIE['a'] = 'b'

    тоже интересно. Я всегда думал, что нет.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!