Example #1
0
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;
}
Example #2
0
<?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