0) { // Check for and authorize from persistent cookie if (isset($_COOKIE['persistentlogin'])) { if (checkValidityPersistentLoginToken($_COOKIE['persistentlogin'])) { $_SESSION['auth'] = true; } else { // Invalid cookie $_SESSION['auth'] = false; setcookie('persistentlogin', '', 1); } } elseif (isset($_POST['pw'])) { // Compare doubly hashes password input with saved hash $postinput = hash('sha256', hash('sha256', $_POST['pw'])); if (hash_equals($pwhash, $postinput)) { // Save previously accessed page, before clear the session $redirect_url = 'index.php'; if (isset($_SESSION['prev_url'])) { $redirect_url = $_SESSION['prev_url']; } // Regenerate session ID to prevent session fixation session_regenerate_id(); // Clear the old session $_SESSION = array(); // Set hash in new session $_SESSION['hash'] = $pwhash; // Set persistent cookie if selected if (isset($_POST['persistentlogin'])) { // Generate cookie with new expiry $token = genPersistentLoginToken(); $time = time() + 60 * 60 * 24 * 7; // 7 days writePersistentLoginToken($token, $time); // setcookie($name, $value, $expire, $path, $domain, $secure, $httponly) setcookie('persistentlogin', $token, $time, null, null, null, true); } $_SESSION['auth'] = true; // Login successful, redirect the user to the original requested page if ( $_SERVER['REQUEST_METHOD'] === 'POST' && strlen($_SERVER['SCRIPT_NAME']) >= 10 && substr_compare($_SERVER['SCRIPT_NAME'], '/login.php', -10) === 0 ) { header('Location: '.$redirect_url); exit; } } else { $_SESSION['auth'] = false; $validpassword = false; } } elseif (isset($_SESSION['hash'])) { // Compare auth hash with saved hash if (hash_equals($pwhash, $_SESSION['hash'])) { $_SESSION['auth'] = true; } } elseif ($use_api && isset($_GET['auth'])) { // API can use the hash to get data without logging in via plain-text password if (hash_equals($pwhash, $_GET['auth'])) { $_SESSION['auth'] = true; } } else { // Password or hash wrong $_SESSION['auth'] = false; } } else { // No password set $_SESSION['auth'] = true; } return $validpassword; } $wrongpassword = !verifyPassword($pwhash, isset($api)); $auth = $_SESSION['auth'];