Никак не получается подружиться с сесиями...

Xrobak

Guest
Никак не получается подружиться с сесиями...

Итакс, начнем. Написал счетчик на ПХП+MySQL. Есть одно НО - каждый раз когда я жму Ф5 то засчитывается посещение. Решается эта ситуация при помощи куки или сессий. Мне необходимо с сессией это проделать, ибо они мне еще для других целей понадобятся на страничках(не об этом сейчас). Идею решения этой проблемы я знаю, а вот реализовать никак не получается. Вот как я вижу это решение: как только юзер открывает страничку мы регистрируем переменную и фиксируем текущее время. Далее проверяем если с момента когда зарегистрировали переменную и нынешним временем прошло 300 сек, значит добавляем этого юзера в базу, если нет - ничего не добавляем. Вот, а теперь какие у меня затруднения появились: смешно, но не знаю куда притулить вставку данных в базу(теоретически знаю, а практически нет). У меня в голове просто не укладывается, как это сделать чтобы как только пользователь открывает страничку проверялось или он впервые тут, или же если не впервые то прошло ли с того времени 300 сек.
Вот мой код, просьба не смеяться, я и сам знаю что он не правильный. Помогите подкорректировать мой код, если есть желающие конечно.
<?php
session_start();
@ $db= mysql_connect("localhost", "user", "1234567890");
if (!$db)
{
echo "Error: Could not connect to database!";
exit;
}
mysql_select_db("test");
session_register("c_time");
if (!isset($c_time))
{
$c_time=date('Y-m-d H:i:s');
$z=1;
$now_time=date('Y-m-d H:i:s');
if ( strtotime($c_time) - strtotime($now_time) > 300 )
{
$z=1;
$query = " insert into count (hosts, data, time) values( '1.1.1.1', '2003-10-16', '12:12:12' ) ";
$result = mysql_query($query) ;
}

}


else {
echo "Сессия сдохла";
}
Всем спасибо за помощь и понимание.
 

Кром

Новичок
Что то в этом роде:
PHP:
<?php

session_start();
if (!mysql_connect('host', 'user', 'pass'))
{
	die('Error: Could not connect to database!');	
}

mysql_select_db('test');

if ($_SESSION['c_time'])
{
	if (time() - $_SESSION['c_time'] > 300 )
	{

		$query = ' insert into `count` (`hosts`, `data`, `time`) values( "'.$_SERVER['REMOTE_ADDR'].'", "'.date('Y-m-d',time()).'", "'.date('H:i:s',time()).'" ) ';
		$result = mysql_query($query) ;			
	}	
	$_SESSION['c_time'] = time();
	
}
else
{
	$_SESSION['c_time'] = time();
	$query = ' insert into `count` (`hosts`, `data`, `time`) values( "'.$_SERVER['REMOTE_ADDR'].'", "'.date('Y-m-d',time()).'", "'.date('H:i:s',time()).'" ) ';
	$result = mysql_query($query) ;			
}

?>
 

Xrobak

Guest
Автор оригинала: Кром
Что то в этом роде:
PHP:
<?php

session_start();
if (!mysql_connect('host', 'user', 'pass'))
{
	die('Error: Could not connect to database!');	
}

mysql_select_db('test');

if ($_SESSION['c_time'])
{
	if (time() - $_SESSION['c_time'] > 300 )
	{

		$query = ' insert into `count` (`hosts`, `data`, `time`) values( "'.$_SERVER['REMOTE_ADDR'].'", "'.date('Y-m-d',time()).'", "'.date('H:i:s',time()).'" ) ';
		$result = mysql_query($query) ;			
	}	
	$_SESSION['c_time'] = time();
	
}
else
{
	$_SESSION['c_time'] = time();
	$query = ' insert into `count` (`hosts`, `data`, `time`) values( "'.$_SERVER['REMOTE_ADDR'].'", "'.date('Y-m-d',time()).'", "'.date('H:i:s',time()).'" ) ';
	$result = mysql_query($query) ;			
}

?>
:( нет, это не то. Этот код ничего не дал. После каждого рефреша страницы в базу вносятся записи, а мне нужно чтобы если я только что зашол то мои данные занеслись, но если я нажму Ф5 то опять данные занесутся мои только по истечении 300 сек
Но всеравно спасибо что хоть попробовали помочь :)
 

Кром

Новичок
Если заносятся, значит у тебя куки не устанавливаются.
Ищи проблему у себя в скрипте/настройках.
 

Alkinoy

Guest
.....

Признаю, лесная древесная птица, не заметил первого if... Виноват
 

Xrobak

Guest
Автор оригинала: Кром
Если заносятся, значит у тебя куки не устанавливаются.
Ищи проблему у себя в скрипте/настройках.
насколько я понимаю куки у меня заносятся, ибо в настройках php.ini есть строка session.save_path. Так вот у меня сесси создаются в папке, к-рая указана в этой строчке. Но файл сессии создается в данном случае пустой, внутри ничего нету :(
Кстати, проверил твой код через ехо, срабатывает добавление в базу в этом месте всегда:
else
{
$_SESSION['c_time'] = time();
$query = ' insert into `count` (`hosts`, `data`, `time`) values( "'.$_SERVER['REMOTE_ADDR'].'", "'.date('Y-m-d',time()).'", "'.date('H:i:s',time()).'" ) ';
$result = mysql_query($query) ;
}
тобиш сразу же условие не проходит и срабатывает else
 

Xrobak

Guest
Автор оригинала: Alkinoy
Кром, у тя ж в скрипте в базу будет кидаться при любом раскладе )))))
во-во, и я о том же, посему и решил сюда и обратиться за помощью, ибо как я не писал у меня тоже при любых расскладах в базу заносились данные, либо же вообще ни прикаких условиях не заносились :D
Кстати, у меня не сработала функция $_SERVER['REMOTE_ADDR'], но getenv("REMOTE_ADDR"); работает прекрасно. Это скорее всего из-за того что у меня версия ПХП 4.0.3 :( И еще, все это я дело пишу под ОС вин2000 сервер.
 

Xrobak

Guest
Автор оригинала: Кром
> у меня версия ПХП 4.0.3

Я умываю руки... :)
Иди обновляй PHP.
:D ладно, будем обновлять ПХП, будет неловко если действительно все проблемы окажутся в версии ПХП
 

Xrobak

Guest
А что посоветуете их этого устанавливать мне? С ИИСом не работаю, Апач установлен.
1. PHP 4.3.4 zip package [6,815Kb] - 03 November 2003
(CGI binary plus server API versions for Apache, Apache2 (experimental), ISAPI, NSAPI, Servlet and Pi3Web. MySQL support built-in, many extensions included, packaged as zip)
2. PHP 4.3.4 installer [1,043Kb] - 03 November 2003
(CGI only, MySQL support built-in, packaged as Windows installer to install and configure PHP, and automatically configure IIS, PWS and Xitami, with manual configuration for other servers. N.B. no external extensions included)
Первое или второе?
 

Xrobak

Guest
Расспаковал я этот PHP 4.3.4 zip package [6,815Kb] - 03 November 2003 но там нету папочку CONF. Можно ли со старого ПХП подложить эту папочку?
 

Xrobak

Guest
Автор оригинала: Кром
> у меня версия ПХП 4.0.3

Я умываю руки... :)
Иди обновляй PHP.
Супер, заработало! Спасибо огромное! Но осталось еще два вопроса, первый я уже задал про папочку с конфигами, а вот второй - объясните мне новичку, что же изменилось такого в ПХП что в старой версии этот код не работал, а в новой заработал? Неужели весь прикол в $_SESSION ?
Вот, просто на работе где я работаю мне мои сотрудники мозги промывали что нету никакой разницы для тебя что поставш ты новую версию или старую. Они на ПХП программируют дольше меня, им казалось бы виднее, хотя возможно они ничего такого слишком серьезного не писали что у них и на старой версии работало все нормально.
 

fixxxer

К.О.
Партнер клуба
В 4.1.0 появились суперглобальные массивы, такие, как $_SESSION, $_GET, $_POST, $_SERVER. В 4.2.0 значение по умолчанию register_globals стало off.
 

Кром

Новичок
Директория conf относится к Apache и отношения к PHP как таковое не имеет, кроме разве что mime.types

Что изменилось, читай в news.txt

Твои сотрудники, скорей всего по старой версией имели в виду уж точно, не 4.0.3. В противном случае я очень сомневаюсь в их знаниях.
 
Сверху