 
			
				07.11.2017, 21:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.03.2016 
					
					
					
						Сообщений: 429
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Небольшой скрипт, который выводит, дату последнего посещения сайта пользователем
			 
			
		
		
		
		Нормальный ли у меня алгоритм получился? 
<?php
/*
    В первую куку записывается первый визит и она означает последний визит, при повторном входе, проверяется,
    есть ли сессия юзера, если есть то создать вторую куку с визитом и сравнить их и удалить первую куку
    и так каждый раз
*/
    session_start();
   
    $_SESSION['user'] = 'Dima';
   
    $lastVisit = date('d-m-Y');
   
    if(!empty($_SESSION['user'])) {
        if(!isset($_COOKIE['lastVisit'])) {
            setcookie('lastVisit', $lastVisit, time() + 3600*24*30);
        }
        else {
            setcookie('lastVisit2', $lastVisit, time() + 3600*24*30);
           
            $lastArr = explode('-', $_COOKIE['lastVisit']);
            $newArr = explode('-', $lastVisit);
           
            echo 'Последний визит был ' . (mktime(0, 0, 0, $newArr[1], $newArr[0], $newArr[2]) - mktime(0, 0, 0, $lastArr[1], $lastArr[0], $lastArr[2])) / 86400 . ' дней назад.';
           
            setcookie('lastVisit', '', time());
        }
    }
?>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.11.2017, 21:51
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.03.2016 
					
					
					
						Сообщений: 429
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Не просто выводит дату, а пишет, сколько дней отсутствовал 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.11.2017, 23:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от DivMan
			
		
	 | 
 
	| 
		Нормальный ли у меня алгоритм получился?
	 | 
 
	
 
 Нет. Браузер записывает куки на диск когда пользователь покидает страницу, до этого момента они содержатся в памяти. Вот почему кука установленная клиентом доступна ему сразу, а для сервера только после следующего посещения страницы. Вы же устанавливаете куку сервером и сразу пытаетесь ее использовать. Здесь же, в условии, повторная установка куки вообще непонятный маневр.
 
Последнее посещение 8 ноября и текущее 9 ноября, совсем еще не означает, что прошли сутки, это могут быть и секунды. Оперировать надо датой/временем.
 
Ну и пора бы ознакомиться с разделом дата/время руководства не только с функциями, но и с классом DateTime, в частности  http://fi2.php.net/manual/ru/datetime.diff.php.
 
Получать дату шиворот навыворот, затем ее компоненты переворачивая, это моветон.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 07.11.2017 в 23:20.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.11.2017, 00:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.03.2016 
					
					
					
						Сообщений: 429
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 date_diff? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.11.2017, 00:23
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.03.2016 
					
					
					
						Сообщений: 429
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Почему повторная установка куки вообще непонятный маневр?  
А как по другому сохранять последний визит? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.11.2017, 00:23
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Это псевдоним функции класса DateTime. Глубже в раздел окунитесь, полезно. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.11.2017, 00:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от DivMan
			
		
	 | 
 
	| 
		Почему повторная установка куки вообще непонятный маневр?
	 | 
 
	
 
 Если кука не установлена, то считать ничего не надо, просто установка. Если установлена, то считать разницу между текущим временем и сохраненным, обновить  эту же установленную куку текущим временем. А у вас:
 
setcookie(...) 
сразу же 
$_COOKIE['lastVisit'] - что уже лажа 
и затем 
setcookie(...)  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.11.2017, 00:32
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2013 
					
					
					
						Сообщений: 1,572
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от laimas
			
		
	 | 
 
	| 
		Браузер записывает куки на диск когда пользователь покидает страницу
	 | 
 
	
 
 нет сразу.  При этом js доступны куки сразу 
запустите с сервера
 
<?php
setcookie('myCookie', 'test');
?>
<script>
    console.log( document.cookie );
</script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Vlasenko Fedor, 09.11.2017 в 00:39.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.11.2017, 01:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	| 
		нет сразу.
	 | 
 
	
 
 С каких пор такое стало?
 
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	
		При этом js доступны куки сразу 
запустите с сервера
	 | 
 
	
 
 
Доступны потому, что в памяти, серверу нет.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.11.2017, 01:37
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2013 
					
					
					
						Сообщений: 1,572
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 куки приходят в заголовках 
когда браузер получает страницу он записывает куки сразу 
убейте процесс браузера, данные будут записаны 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |