<?php
/**
* @author LOGAN
* @copyright 2012
*/
require_once ($_SERVER["DOCUMENT_ROOT"] . "/connect.php");
class Session
{
private $sessiong_sid; //ид сессии
private $ip_address; // ип юзера
private $user_agent; // браузер агента
private $last_activity; //последний заход юзера
private $user_ref; // откуда пришел
private $user_expire; //истечении сессии
private $cookieName; //Название кукиса
private $date_now; //time and date now!
function __construct()
{
mysql_query("set character_set_client='utf8'");
mysql_query("set character_set_results='utf8'");
mysql_query("set collation_connection='utf8_general_ci'");
mysql_query("SET NAMES utf8");
mysql_set_charset('utf8');
//constructor
$this->date_now = date("Y-m-d H:i:s"); //time and date
$this->cookieName = "hash"; //Название куки пользователя
$this->sessiong_sid = $_COOKIE[$this->cookieName]; //cookie's name'
$this->ip_address = $_SERVER["REMOTE_ADDR"]; //user's ip'
$this->last_activity = $this->date_now; //last activity
$this->user_agent = $_SERVER["HTTP_USER_AGENT"]; //web-browser
if (isset($_SERVER["HTTP_REFERER"]))
$this->user_ref = $_SERVER["HTTP_REFERER"]; //referer or empty, just address
else
$this->user_ref = "https://$_SERVER[SERVER_NAME]/";
session_start();
}
public function get_cookie()
{
//Если работа идет на сесиях
if(isset($_SESSION['auth']) && isset($_SESSION['id']) && !empty($_SESSION['id'])&& !empty($_SESSION['auth']) )
{
if(is_numeric($_SESSION['id'])){
$user_id_session=$_SESSION['id'];
$user_exist_session = mysql_query("select id from `users` where id='$user_id_session' limit 1 ");
if (mysql_num_rows($user_exist_session) > 0) {
mysql_query("update `users` set last_login='$this->date_now' where id='$user_id_session'");
require_once ($_SERVER["DOCUMENT_ROOT"] . "/functions/functions.php");
visit_counter($user_id_session); //add 1 to our user's counter
} //else Юзер с указанным СИД не найден $_SESSION['auth']=false; Удалить куку
}
}//Если работаем через куку
else if (!empty($this->sessiong_sid) and ctype_alnum($this->sessiong_sid)) {
//Если кука есть тогда выбираем ид пользователя
//Проверим есть ли юзверь с таким сидом и не просрочена ли сессия у нас относительно времени
$user_id = "select * from `session` where sid='$this->sessiong_sid' and expire>'$this->date_now' limit 1";
$result_query_id = mysql_query($user_id);
if (mysql_num_rows($result_query_id) > 0) {
while ($data = mysql_fetch_array($result_query_id)) {
$_SESSION['id'] = ""; //Обнуляем нашу переменную на всякий пожарный :)
$_SESSION['auth'] = false; //Обнуляем нашу переменную на всякий пожарный :)
//Проверим а есть ли такой юзер в табличке юзеров
$user_exist = mysql_query("select id from `users` where id='$data[user_id]' limit 1 ");
if (mysql_num_rows($user_exist) > 0) {
mysql_query("update `users` set last_login='$this->date_now' where id='$data[user_id]'");
require_once ($_SERVER["DOCUMENT_ROOT"] . "/functions/functions.php");
visit_counter($data["user_id"]); //add 1 to our user's counter
$_SESSION['id'] = $data['user_id']; //Записываем в сессию ид пользователя)))
//restart our cookie
// setcookie('$this->cookieName', '', time() - 360000, "/", $_SERVER['HTTP_HOST']); //Удаление старой
$this->erase($this->cookieName); //Удаление старой
//set the new cookie with old User_id
setAutologin($data["user_id"], "$_SERVER[REMOTE_ADDR]", "$this->user_ref"); //Добавление в таблицу сессий
$_SESSION['auth'] = true; // it's all ok :)
} //else Юзер с указанным СИД не найден $_SESSION['auth']=false; Удалить куку
else {
$_SESSION["err_auth"] =
"Пользователь не найден, пожалуйста авторизуйтесь заново.";
//$_SESSION['auth'] = false;
//$_SESSION['id'] = "";
//$this->erase($this->cookieName);
Header("Location: https://$_SERVER[SERVER_NAME]/log/unregister.php");
}
}
} else {
$_SESSION["err_auth"] =
"Сессия устарела или удалена, пожалуйста авторизуйтесь заново.";
// $_SESSION['auth'] = false;
// $_SESSION['id'] = "";
// $this->erase($this->cookieName);
Header("Location: https://$_SERVER[SERVER_NAME]/log/unregister.php");
}
} else {
//ЭТО ГОСТЬ!!!!!!!!!!!!!!
// $_SESSION["err_auth"] = "";
// $_SESSION['auth'] = false;
// $_SESSION['id'] = "";
//$this->erase($this->cookieName);
}
}
public function error_view($view) //DebuGGer)))$this-> error_view(true);
{
if ($view == true) {
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo ('[' . mysql_errno() . '] [' . mysql_error() . ']');
/* echo "<br /> ID: " . $_SESSION['id'] . " Auth: " . $_SESSION['auth'] .
" Session: " . $this->sessiong_sid . "<br />";*/
}
}
public function erase($key)
{
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
// удаление куки в IE
setcookie($key, "", time() + 20000);
unset($key); //Удаление старой}
} else {
// удаление куки в других браузерах
setcookie($key, "", time() - 20000, "/");
unset($key); //Удаление старой}
}
}
}/*
$s = new Session();
$s->get_cookie();*/
?>