Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Индивидуальный счетчик, реальзованый с помощью Cookies

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 26 Февраль 2009 - 12:32

Следуя инструкции книги, написал счетчик:
<?

// если переменная не существует, обявляем ее
if (!isset($Ind_Counter)) $Ind_Counter=0;

// увеличиваем счетчик
$Ind_counter++;

// устанавливаем Cookie, которая будет жить до переустановки пользователем
Windows 

SetCookies ("Ind_Counter", 0x6fffffff);

echo "Вы посетили этот ресурс $Ind_Сounter раз";

?>

Но у меня выдает ошибку

Parse error: syntax error, unexpected T_STRING in Z:\home\localhost\www\admin\counter.php on line 9


В чем ошибка?

пс. Работаю я на DenWer

 

 

  • 0


#2 KURT [197BD]

KURT [197BD]
  • Пользователь
  • 31 сообщений
  • Репутация: 0

Отправлено 26 Февраль 2009 - 14:20

наверно ругается на Windows. Это вообще что такое??? :)
закоментируйте эту строчку
  • 0

#3 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 26 Февраль 2009 - 19:18

Исправил... Если чесно, то я сам сначала не понял, но написал как в книге... если что, могу кинуть скрин... может как то вот так? :

<?

// если переменная не существует, обявляем ее
if (!isset($Ind_Counter)) $Ind_Counter=0;

// увеличиваем счетчик
$Ind_counter++;

//время жизни переменной 3600 сек - 1 час
SetCookies ("Ind_Counter", "expires=3600");

echo "Вы посетили этот ресурс $Ind_Сounter раз";

?>

  • 0


#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 26 Февраль 2009 - 23:27

В приведённом первом варианте просто каким-то образом windows перенеслась на новую сточку из комментариев, скорее всего так как ты не набирал ручками, а копировал из книги.
Второй твой вариант не верен, посмотри на прототип функции setCookie() и так же почитай про register_globals, я уже не раз говорил что к элементам COOKIES нужно обращаться через глобальный массив $_COOKIE. Так же ты ошибся в названии функции setcookie()
Глобальный массив $_COOKIE

Мой пример:
<?php

$count = (isset($_COOKIE['count'])) ? intval($_COOKIE['count']) : 0; // Если счётчик уже есть - его значение, если нет - 0.
$count++; // смещаем счётчик на 1

setCookie("count", $count, time()+60*60*24*30); // заносим значение в count

echo "Вы посетили эту страницу {$count} раз"; // выводим

?>
Пример простейший, но куки не так действенны как сессии. Но для изучения всё полезно попробовать.
  • 0

#5 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 27 Февраль 2009 - 10:27

Тут много чего написано, не пугайтесь :)

Насколько я понял:
$count = (isset($_COOKIE['count'])) ? intval($_COOKIE['count']) : 0; // Если счётчик уже есть - его значение, если нет - 0.
В этой строке проверяем включался ли счетчик для посетителя... Если нет, значения счетчика равно 0. Но хотел спросить, или точнее попросить растолковать это:
$count = (isset($_COOKIE['count'])) ?
значение 'count' можно заменить на свое? например 'number' ?
и зачем ставить знак вопроса "?" ???

Также на знаю ещё:
intval($_COOKIE['count']) : 0;
Я так понял intval возвращает $_COOKIE['count'] значение, которое следует указывать через двоеточие ":".
Тоесть от начала до конца первой строки можно прочитать так:

Если посетитель посещл страницу, то выводит количество его посещаемости, если нет, то счетчик показывает 0.


Далее:
setCookie("count", $count, time()+60*60*24*30); // заносим значение в count
Вот здесь я не могу понять. Думаю так:

"count" - это из $_COOKIE['count'] Тоесть если бы там стояло number, то и здесь вместо count было number.
$count - заносит в куки первую строку.
time()+60*60*24*30 - время жизни Cookies


Так же интересно зачем в cтавить фигурные душки { } ? У меня и без них все работает :)
echo "Вы посетили эту страницу {$count} раз"; // выводим

  • 0



Оформление форума – IPBSkins.ru