IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   PHP, жуткие непонятки со счётчиком посещений (https://www.imho.ws/showthread.php?t=88064)

Sam Dark 25.06.2005 22:47

PHP, жуткие непонятки со счётчиком посещений
 
PHP код:

<?php 
  
// Счётчик посещения сайта
  // 07.04.2005

  
$counterfile=fopen('counter.txt','rw');
  
$usercount=fgets($counterfile);
  
$smarty->assign('cnt_num',$usercount);
  
fclose($counterfile);

  print(
$_SESSION['site_visited'].'<br>');
  print(isset(
$_SESSION['site_visited']).'<br>');
  
  if (!isset(
$_SESSION['site_visited']))
  {
    
$_SESSION['site_visited']=true;
    print(
'here i am');
    
$usercount=$usercount+1;
    
$counterfile=fopen('counter.txt','w');
    
fputs($counterfile,$usercount);
    
fclose($counterfile);
  }
  
  print(
$_SESSION['site_visited'].'<br>');
  print(isset(
$_SESSION['site_visited']).'<br>'); 
?>

Вывод:
Код:

1
1
1
1

Теперь самое интересное. Счётчик наращивается.

В чём может быть проблема?

Saruman 26.06.2005 00:38

Цитата:

Sam Dark:
В чём может быть проблема?
А в чем, собственно, проблема? $_SESSION['site_visited'] установлена, условный блок в середине не выполняется, соответственно имеешь такой вывод. А наращивается за счет других сессий, в данной сессии никакого наращивания нет.

Sam Dark 26.06.2005 01:27

Так... Я запускаю это дело в Денвере на локальной машине из под Оперы. Когда хожу по разделам счётчик стоит, но когда начинаю усердно долбить f5 - наращивается.

RaZEr 26.06.2005 01:55

session_start()

Saruman 26.06.2005 02:03

Цитата:

Когда хожу по разделам счётчик стоит, но когда начинаю усердно долбить f5 - наращивается.
Куки разрешены? Я так понимаю, session id ты в линках не передаешь

Sam Dark 26.06.2005 02:07

session_start() имеется в файлах, в кот. инклудится этот.

Куки разрешены. SID в линках не передаю.

RaZEr 26.06.2005 02:11

Цитата:

session_start() имеется в файлах, в кот. инклудится этот.
Где-нибудь используешь session_register()?

Sam Dark 26.06.2005 11:23

Нет.

RaZEr 26.06.2005 12:19

Код что выше отдельно запускал?

Sam Dark 26.06.2005 14:10

Подредактировал немного. Запустил отдельно.

PHP код:

<?php 
  
// Счётчик посещения сайта
  // 07.04.2005
  
  
session_start();
  
  require_once(
'f_log.php');
  
$counterfile=fopen('counter.txt','rw');
  
$usercount=fgets($counterfile);
  
//$smarty->assign('cnt_num',$usercount);
  
print($usercount);
  
fclose($counterfile);

  
/*print($_SESSION['site_visited'].'<br>');
  print(isset($_SESSION['site_visited']).'<br>');*/
  
  
if (!isset($_SESSION['site_visited']))
  {
    
$_SESSION['site_visited']=true;
    
    
$usercount=$usercount+1;
    
$counterfile=fopen('counter.txt','w');
    
fputs($counterfile,$usercount);
    
fclose($counterfile);
    
//writelog('Посетитель.','usr');
  
}
  
  
/*print($_SESSION['site_visited'].'<br>');
  print(isset($_SESSION['site_visited']).'<br>');*/
  
?>

Усиленно давил f5. Счётчик добедал до 12 и остановился. :confused: Я в шоке.

Saruman 26.06.2005 15:15

Специально проверил у себя, скопировав твой код - работает без проблем. Сначала открыл - показал 1 и остановился, по F5 не увеличиваясь. Убил сессию, обновил - увеличился на 1.
Так что ищи проблемы в другом месте. Сделай вывод session id и посмотри, одна ли у тебя все время сессия.

Sam Dark 26.06.2005 16:40

Сессия одна, но в Опере по прежнему каким-то образом наращивается счётчик. С ie и ff всё отлично. Самое весёлое то, что если сраз после наращивания вставить вывод какой-нибудь строчки, то она не выводится. Как тогда наращивается счётчик???

p.s. на require_once('f_log.php'); не грешить - без неё так же.

RaZEr 26.06.2005 16:46

Добавляй с адресу скрипта левые строки, вроде "&rand=shkjdshk".

Sam Dark 26.06.2005 18:23

Не помогает.

RaZEr 26.06.2005 18:47

По симптомам похоже на кэш. У тебя нет никаких расширений вроде turck mmcache, eaccelerator и т.д.?

Попробуй дописать перед: "if (!isset($_SESSION['site_visited']))" строки:

echo 'time is '.time();
var_dump($_SESSION['site_visited']);

Что выдаёт?

Sam Dark 26.06.2005 19:55

time is 1119801469bool(true)

RaZEr 26.06.2005 20:00

время меняется, когда F5 нажимаешь? инкремент в файле растёт?

Sam Dark 26.06.2005 20:53

Всё так. Время меняется, инкремент растёт. Но как он растёт, если нифига не вызывается?


Часовой пояс GMT +4, время: 16:41.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.