<?php
namespace App\Service;
use App\Entity\Evopub;
use App\Entity\Evositepub;
use App\Entity\Statistiquesevo2020;
use App\Entity\Statistiquesevocookies;
use App\Entity\Statistiquesevorobot;
use App\Entity\Statistiquesevosession;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
class Session extends AbstractController
{
public function Session(Request $request)
{
$version = "V3";
if(!isset($_SESSION)){
session_start();
}
// Bloquer ips indésirables
$ip_blacklist = array('173.231.59.214','195.54.161.239','45.55.254.212','138.197.64.36','94.130.9.115','216.18.204.215','165.227.222.148',
'144.76.88.54', '51.222.43.122','51.103.30.103','51.103.45.88');
// vous pouvez mettre les ips dans un fichiers texte et les importer
// $ip_blacklist = file('ip_blacklist.txt');
// lecture de l'ip en cours
$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
// test si l'ip est blacklisté
if ( array_search($ip, $ip_blacklist) !== FALSE )
{
echo 'Connexion au site impossible';
// stop le script
exit;
}
$date = new \DateTime('now');
$annee = date("Y");
$mois = date("m");
$jour = date("d");
$heure = new \DateTime('now');
$heure->format("H:i:s");
$IP = $_SERVER['REMOTE_ADDR'];
//$referer = $_SERVER['HTTP_REFERER'];
$referer = $request->headers->get('referer');
if (empty($referer)) {
$referer = "";
}
$page_courante = $_SERVER['REQUEST_URI'];
$repositoryRobot = $this->getDoctrine()->getRepository(statistiquesevorobot::class);
$repositorySession = $this->getDoctrine()->getRepository(statistiquesevosession::class);
$repositoryCookies = $this->getDoctrine()->getRepository(statistiquesevocookies::class);
$repository2020 = $this->getDoctrine()->getRepository(statistiquesevo2020::class);
$repositoryPub = $this->getDoctrine()->getRepository(Evositepub::class);
$robots = $this->getDoctrine()
->getRepository(Statistiquesevorobot::class)
->findByIp($IP);
$countRobots = count($robots);
if ($countRobots == "0") {
$robot = "0";
} else {
$robot = "1";
}
//cookie sur site admin
if (isset($_COOKIE['evoadmin1'])) {
//ok cookie
$ok2 = "ad222";
$idcookieadmin = $_COOKIE['evoadmin1'];
}else{
$idcookieadmin = "0";
}
// stats new evo2020
if (isset($_SESSION['idsession'])) {
//ok session
$ok = "111";
$idcookie = $_COOKIE['evo2020'];
$idsession = $_SESSION['idsession'];
//$evosession = $repositorySession->findOneBy(['id' => $idsession]);
$evosession = $this->getDoctrine()
->getRepository(Statistiquesevosession::class)
->findByIp($idsession);
foreach($evosession as $row){
$sessionorigine = $row['sessionorigine'];
$glap = $row['glap'];
$simulok = $row['simulok'];
$loc = $row['localisation'];
}
$entityManager = $this->getDoctrine()->getManager();
$product = new statistiquesevo2020();
$product->setDate($date);
$product->setTime($heure);
$product->setAnnee($annee);
$product->setMois($mois);
$product->setJour($jour);
$product->setPage($page_courante);
$product->setIp($IP);
$product->setReferer($referer);
$product->setGlap($glap);
$product->setVersion($version);
$product->setSimulok($simulok);
$product->setSessionorigine($sessionorigine);
$product->setSession($idsession);
// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($product);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
} else {
//pas ok session
if (isset($_COOKIE['evo2020'])) {
//ok cookie
$ok = "222";
$idcookie = $_COOKIE['evo2020'];
// $evocookie = $repositoryCookies->findOneBy(['id' => $idcookie]);
$evocookie = $this->getDoctrine()
->getRepository(Statistiquesevocookies::class)
->findById($idcookie);
foreach($evocookie as $row){
$sessionorigine = $row['sessionorigine'];
}
// $sessionorigine = $evocookie->getSessionorigine();
$evosession = $this->getDoctrine()
->getRepository(Statistiquesevosession::class)
->findByIp($sessionorigine);
// $evosession = $repositorySession->findOneBy(['id' => $sessionorigine]);
foreach($evosession as $row){
$glap = $row['glap'];
$simulok = $row['simulok'];
$loc = $row['localisation'];
}
/* $glap = $evosession->getGlap();
$simulok = $evosession->getSimulok();
$loc = $evosession->getLocalisation();*/
$entityManager = $this->getDoctrine()->getManager();
$evosession = new statistiquesevosession();
$evosession->setDate($date);
$evosession->setSessionorigine($sessionorigine);
$evosession->setGlap($glap);
$evosession->setSimulok($simulok);
$evosession->setIdcookieadmin($idcookieadmin);
$evosession->setRobot($robot);
$evosession->setLocalisation($loc);
// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($evosession);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
$idsession = $evosession->getId();
$_SESSION['idsession'] = $idsession;
$evo2020 = new statistiquesevo2020();
$evo2020->setDate($date);
$evo2020->setTime($heure);
$evo2020->setAnnee($annee);
$evo2020->setMois($mois);
$evo2020->setJour($jour);
$evo2020->setPage($page_courante);
$evo2020->setIp($IP);
$evo2020->setReferer($referer);
$evo2020->setGlap($glap);
$evo2020->setVersion($version);
$evo2020->setSimulok($simulok);
$evo2020->setSessionorigine($sessionorigine);
$evo2020->setSession($idsession);
// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($evo2020);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
setcookie("evo2020", $idcookie, time() + 31536000);
} else {
//pas ok cookie
$ok = "333";
$glap = "0";
$loc = "0";
if (!empty($_GET['glap'])) {
$glap = $_GET['glap'];
}
if (!empty($_GET['loc'])) {
$loc = $_GET['loc'];
}
$entityManager = $this->getDoctrine()->getManager();
$evosession = new statistiquesevosession();
$evosession->setDate($date);
$evosession->setSessionorigine('0');
$evosession->setGlap($glap);
$evosession->setSimulok('0');
$evosession->setIdcookieadmin('0');
$evosession->setRobot($robot);
$evosession->setLocalisation($loc);
// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($evosession);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
$idsession = $evosession->getId();
/* $product = $entityManager->getRepository(statistiquesevosession::class)->find($idsession);
$product->setSessionorigine($idsession);
$entityManager->flush();*/
$product = $this->getDoctrine()
->getRepository(Statistiquesevosession::class)
->UpdateSessionOrigine($idsession);
$_SESSION['idsession'] = $idsession;
$evo2020 = new statistiquesevo2020();
$evo2020->setDate($date);
$evo2020->setTime($heure);
$evo2020->setAnnee($annee);
$evo2020->setMois($mois);
$evo2020->setJour($jour);
$evo2020->setPage($page_courante);
$evo2020->setIp($IP);
$evo2020->setReferer($referer);
$evo2020->setGlap($glap);
$evo2020->setVersion($version);
$evo2020->setSimulok('0');
$evo2020->setSessionorigine($idsession);
$evo2020->setSession($idsession);
// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($evo2020);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
$evocookies = new statistiquesevocookies();
$evocookies->setDate($date);
$evocookies->setSessionorigine($idsession);
$entityManager->persist($evocookies);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
$idcookie = $evocookies->getId();
setcookie("evo2020", $idcookie, time() + 31536000);
}
}
//report des liens
// $evoPub = $repositoryPub->findBy(['id' => $glap]);
$evoPub = $this->getDoctrine()
->getRepository(Evositepub::class)
->findByIp($glap);
$countPubs = count($evoPub);
if ($countPubs != "") {
// $evoPub = $repositoryPub->findOneBy(['id' => $glap]);
$evoPub = $this->getDoctrine()
->getRepository(Evositepub::class)
->findByIp($glap);
foreach($evoPub as $row){
$sitePub = $row['sitepub'];
}
//$sitePub = $evoPub->getSitepub();
$entityManager = $this->getDoctrine()->getManager();
$pub = new Evopub();
$pub->setDate($date);
$pub->setIP($IP);
$pub->setPub($sitePub);
// tell Doctrine you want to (eventually) save the Product (no queries yet)
$entityManager->persist($pub);
// actually executes the queries (i.e. the INSERT query)
$entityManager->flush();
}
}
}