function login() { if ($this->session->islogged()) { if (isset($_SESSION['caller'])) { $this->redirect($_SESSION['caller']); } else { $this->redirect("?home/"); } } $erreurs = array(); $soumis = $this->request->data ? $this->request->data : null; $form = array('login' => '', 'pass' => ''); if ($soumis) { // à ce niveau, le formulaire a été envoyé. /* Si la requete provient d'un autre site ou n'a pas de http_referer (a été directement écrite dans l'url) * on la rejette illico */ //on rejette les requetes extérieures ou tapées dans l'url ou par un autre moyen que post if ($this->request->is('no-origin')) { $this->error('Erreur [MEM ' . __LINE__ . '] : La requête a échouée.'); return false; } $_SESSION['saveform'] = $soumis; unset($soumis); $this->redirect('?membre/login/'); } if (isset($_SESSION['saveform'])) { $soumis = $_SESSION['saveform']; unset($_SESSION['saveform']); $form = array('login' => isset($soumis) ? PregFucntions::sanitize_string($soumis['login']) : '', 'pass' => isset($soumis) ? sha1(PregFucntions::sanitize_string($soumis['pass'])) : ''); $user = $this->membre->findFirst(array('tables' => ' membre ', 'conditions' => ' mem_etat = 1 AND mem_login = \'' . $form['login'] . '\' AND mem_pass = \'' . $form['pass'] . '\'', 'fecthMethod' => PDO::FETCH_ASSOC)); //Functions::debug($user); if (!empty($user)) { $_SESSION['membre'] = $user; $_SESSION['loggedIn'] = 'yes'; setcookie('loggedAs', $user['mem_token'], time() + 3600 * 5, WEBROOT . DS, '', false); setcookie('dejaVenu', $user['mem_token'], time() + 3600 * 5, WEBROOT . DS, '', false); $activite = $this->membre->findFirst(array('tables' => 'activite_membre', 'conditions' => ' id_user = '******'mem_id'], 'fecthMethod' => PDO::FETCH_ASSOC)); if (empty($activite)) { //aucune activité $this->membre->add(array('tables' => 'activite_membre', 'champs' => ' id_user ', 'values' => $user['mem_id'])); } $this->membre->upDate(array('tables' => 'activite_membre', 'affectations' => ' nb_connexions = nb_connexions + 1', 'conditions' => ' id_user = '******'mem_id'])); Session::begin(); if (isset($_SESSION['caller'])) { $this->redirect(Router::url($_SESSION['caller'])); } else { $this->redirect(Router::url('?home/index')); } } elseif (isset($soumis)) { $erreurs[] = "Désolé, nous n'avons pas trouvé de correspondance."; $erreurs[] = "Il se peut que votre compte ne soit pas activé. Veuillez suivre le lien reçu par mail lors de votre inscription."; } } $variables['soumis'] = $soumis; $variables['erreurs'] = $erreurs; $variables['form'] = $form; $this->myrender(array('menu' => 'menu', 'title' => 'Espace de connexion', 'view' => 'login', 'variables' => $variables)); }