function getAuthCode() { $error = 0; // mai intai verific daca in sesiunea curenta utilizatorul e logat if (isset($_SESSION['LOGIN'])) { $data = $_SESSION['LOGIN']; // exista date pe sesiune, le verific if (empty($data) || empty($data['loggedIn'])) { // datele sunt goale $error = ERR_MUST_LOGIN; } else { // verific ip-ul if ($data['ip'] != $_SERVER['REMOTE_ADDR']) { // ip-ul e diferit, probabil e un atac // in orice caz, marchez ca nelogat $error = ERR_MUST_LOGIN; } else { // daca nu este marcat ca 'pastreaza-ma logat' verific timpul // ultimului acces si il deloghez daca a fost inactiv prea mult $elapsed = time() - $data['lastAccess']; if (empty($data['keepLoggedIn']) && $elapsed > LOGIN_TIMEOUT) { // il deloghez cu un mesaj de eroare markLoggedOut(ERR_TIMEOUT); } // daca am ajuns aici inseamna ca este logat $error = 0; } } } else { if (isset($_COOKIE['logindata'])) { // nu exista date pe sesiune, dar exista un cookie // din textul cookie-ului elimin primul caracter de control // apoi decodific folosind algoritmul base64 $formaSerializata = base64_decode(substr($_COOKIE['logindata'], 1)); if ($formaSerializata === false) { // continutul cookie-ului e invalid $error = ERR_MUST_LOGIN; } else { // reconstruiesc structura de date plecand de la forma serializata a variabilei $data = unserialize($formaSerializata); if (empty($data) || !is_array($data)) { // datele sunt invalide $error = ERR_MUST_LOGIN; } else { if ($data['ip'] != $_SERVER['REMOTE_ADDR']) { // ip-ul e diferit, probabil e un atac // in orice caz, marchez ca nelogat $error = ERR_MUST_LOGIN; } else { // daca am ajuns aici inseamna ca este logat $error = 0; // marchez ca este logat prin cookie $data['via'] = 'cookie'; // pun datele pe sesiune $_SESSION['LOGIN'] = $data; } } } } else { // nu sunt logat, marchez sesiunea ca fiind not-logged-in $_SESSION['LOGIN'] = array('loggedIn' => false); $error = ERR_MUST_LOGIN; } } // daca este logat, actualizez data ultimei accesari if ($error == 0) { $_SESSION['LOGIN']['lastAccess'] = time(); } return $error; }
<?php /** * Created by PhpStorm. * User: dan * Date: 7/18/15 * Time: 11:38 AM */ # includ fisierul cu functii require_once 'loginFunctions.php'; // verific daca a fost solicitat logout if (isset($_GET['action']) && $_GET['action'] == 'logout') { markLoggedOut(); } // verific daca e deja logat if (getAuthCode() == 0) { // sunt deja logat header('Location: personalPage.php'); // opresc executia scriptului curent exit; } // verific daca a fost facut submit if (isset($_POST['login'])) { // validez datele if (empty($_POST['user']) || empty($_POST['pass'])) { // setez un mesaj de eroare $error = getError(ERR_INVALID_DATA); } else { // caut user-ul si verific parola if (checkUserPass($_POST['user'], $_POST['pass'], $conn) == null) { // setez un mesaj de eroare