This commit is contained in:
2025-02-05 15:50:04 +05:30
parent 7f15dbfc08
commit 55448e34c6
38 changed files with 449 additions and 663 deletions

View File

@@ -2,6 +2,7 @@
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
@@ -11,29 +12,28 @@ if (!isset($_SESSION['user_id'])) {
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta charset="UTF-8">
<meta charset="UTF-8">
<title>Account</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Xeorl - The All-In-One, Fully Free to Use Advanced Link Shortener and Management Tool - Equipped with Multi-layered URL encryption, URL metadata remover, Mass shrinker, Quick link and Many more! - Powered by @xodivorce...">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/_monetization.css">
</head>
<body>
<?php include "assets/_header.php"; ?>
<main>
<h2>Welcome, <?php echo $_SESSION['user_name']; ?>!</h2>
<p>Email: <?php echo $_SESSION['user_email']; ?></p>
<a href="logout.php">Logout</a>
</main>
<?php include "assets/_footer.php"; ?>
<?php include "assets/_header.php"; ?>
<main>
<h2>Welcome, <?php echo $_SESSION['user_name']; ?>!</h2>
<p>Email: <?php echo $_SESSION['user_email']; ?></p>
<a href="logout.php">Logout</a>
</main>
<?php include "assets/_footer.php"; ?>
</body>
</html>

View File

@@ -1,39 +1,6 @@
<?php
if (isset($_POST['acceptCookies'])) {
setcookie("user_cookies", "accepted", time() + (86400 * 30), "/");
exit;
} elseif (isset($_POST['rejectCookies'])) {
setcookie("user_cookies", "rejected", time() + (86400 * 30), "/");
exit;
}
?>
<link rel="stylesheet" href="_cookies.css">
<link rel="stylesheet" href="assets/css/_cookies.css">
<div id="cookieBanner">
<p>By clicking "Accept All Cookies", you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.</p>
<button class="cookie-settings">Cookies Settings</button>
<button class="reject" onclick="setCookieChoice('reject')">Reject All</button>
<button class="accept" onclick="setCookieChoice('accept')">Accept All Cookies</button>
<span class="close" onclick="hideBanner()">×</span>
<p>This website uses cookies to ensure you get the best experience on our website. <a href="/privacy-policy">Learn more</a>.</p>
<button class="accept" onclick="acceptCookies()">GOT IT!</button>
</div>
<script>
function setCookieChoice(choice) {
fetch("_cookies.php", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: choice === "accept" ? "acceptCookies=true" : "rejectCookies=true"
}).then(() => {
document.getElementById("cookieBanner").style.display = "none";
});
}
function hideBanner() {
document.getElementById("cookieBanner").style.display = "none";
}
window.onload = function() {
if (!document.cookie.includes("user_cookies")) {
document.getElementById("cookieBanner").style.display = "flex";
}
};
</script>
<script src="assets/js/_cookies.js"></script>

View File

@@ -10,10 +10,9 @@ if (session_status() === PHP_SESSION_NONE) {
<div class="logo">
<img src="assets/images/url.png" alt="Xeorl Logo" class="logo-img">
<span>Xeorl</span>
<span class="version-number">4.1.4</span>
<span class="version-number">4.2.3</span>
</div>
<!-- Burger Menu -->
<label class="burger">
<input type="checkbox" id="burger-toggle">
<span></span>
@@ -21,23 +20,21 @@ if (session_status() === PHP_SESSION_NONE) {
<span></span>
</label>
<!-- Sidebar -->
<div class="sidebar">
<nav>
<ul>
<li><a href="home.php" class="<?php echo in_array(basename($_SERVER['PHP_SELF']), ['index.php', 'home.php']) ? 'active disabled' : ''; ?>">Home</a></li>
<li><a href="monetization.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'monetization.php' ? 'active disabled' : ''; ?>">Monetization</a></li>
<?php if (isset($_SESSION['user_id'])): ?>
<li><a href="account.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'account.php' ? 'active disabled' : ''; ?>">Account</a></li>
<?php else: ?>
<li><a href="login.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'login.php' ? 'active disabled' : ''; ?>">Get-Started</a></li>
<?php endif; ?>
<li><a href="contact.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'contact.php' ? 'active disabled' : ''; ?>">Contact</a></li>
</ul>
</nav>
<nav>
<ul>
<li><a href="home.php" class="<?php echo in_array(basename($_SERVER['PHP_SELF']), ['index.php', 'home.php']) ? 'active disabled' : ''; ?>">Home</a></li>
<li><a href="monetization.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'monetization.php' ? 'active disabled' : ''; ?>">Monetization</a></li>
<?php if (isset($_SESSION['user_id'])): ?>
<li><a href="account.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'account.php' ? 'active disabled' : ''; ?>">Account</a></li>
<?php else: ?>
<li><a href="login.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'login.php' ? 'active disabled' : ''; ?>">Get-Started</a></li>
<?php endif; ?>
<li><a href="contact.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'contact.php' ? 'active disabled' : ''; ?>">Contact</a></li>
</ul>
</nav>
</div>
<!-- Regular Navigation (Hidden on Mobile) -->
<nav>
<ul>
<li><a href="home.php" class="<?php echo in_array(basename($_SERVER['PHP_SELF']), ['index.php', 'home.php']) ? 'active disabled' : ''; ?>">Home</a></li>
@@ -47,9 +44,9 @@ if (session_status() === PHP_SESSION_NONE) {
<?php else: ?>
<li><a href="login.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'login.php' ? 'active disabled' : ''; ?>">Get-Started</a></li>
<?php endif; ?>
<li><a href="contact.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'contact.php' ? 'active disabled' : ''; ?>">Contact</a></li>
<li><a href="home.php" class="<?php echo basename($_SERVER['PHP_SELF']) == 'contact.php' ? 'active disabled' : ''; ?>">Contact</a></li>
</ul>
</nav>
</div>
</header>
<script src="assets/js/_header.js"> </script>
<script src="assets/js/_header.js"></script>

View File

@@ -3,45 +3,104 @@
bottom: 0;
left: 0;
width: 100%;
background: white;
background: #ffffff;
box-shadow: 0 -2px 10px rgba(0,0,0,0.1);
padding: 15px;
padding: 10px;
display: flex;
align-items: center;
justify-content: space-between;
font-family: Arial, sans-serif;
z-index: 10;
color: #333;
border-top: 1px solid #ddd;
font-size: 14px;
flex-wrap: wrap;
}
#cookieBanner p {
font-size: 14px;
color: #333;
font-size: 16px;
margin: 0;
flex: 1;
margin-left: 1.5em;
max-width: 70%;
line-height: 1.5;
}
button {
padding: 10px 15px;
border: 1px solid #002147;
cursor: pointer;
font-size: 14px;
border-radius: 4px;
margin: 0 5px;
}
.cookie-settings {
background: white;
color: #002147;
}
.reject, .accept {
background: #002147;
color: white;
}
.close {
font-size: 18px;
#cookieBanner a {
color: #677583;
font-weight: bold;
cursor: pointer;
margin-left: 10px;
text-decoration: none;
}
.accept {
font-family: "Montserrat", sans-serif;
padding: 10px 20px;
background-color: #4d555cec;
margin-right: 3em;
color: #ffffff;
border: none;
border-radius: 20px;
cursor: pointer;
font-weight: 600;
font-size: 14px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.082);
outline: none;
box-sizing: border-box;
transition: box-shadow 0.3s ease, background-color 0.3s ease;
}
.accept:hover {
background-color: #171C24;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.250);
}
/* Mobile and Tablet Responsive Styles */
@media (max-width: 720px) {
#cookieBanner p {
font-size: 16px;
margin: 0;
flex: 1;
margin-left: 1.5em;
max-width: 70%;
line-height: 1.5;
}
#cookieBanner a {
color: #677583;
font-weight: bold;
text-decoration: none;
}
.accept {
background-color:#171C24 ;
}
}
@media (max-width: 509px) {
#cookieBanner p {
font-size: 14px;
margin: 0;
flex: 1;
margin-left: 1.5em;
max-width: 70%;
line-height: 1.5;
}
#cookieBanner a {
text-decoration: none;
}
.accept {
font-size: 12px;
background-color:#171C24 ;
padding: 9px 18px;
}
}
@media (max-width: 409px){
.accept {
font-size: 12px;
background-color:#171C24 ;
padding: 8px 16px;
}
}

View File

@@ -52,7 +52,6 @@ h2 {
.countdown {
font-size: 16px;
font-weight: 400;
margin-top: -px;
color: rgb(70, 41, 204);
text-align: center;
}
@@ -83,17 +82,19 @@ button:active {
box-shadow: rgba(68, 68, 68, 0.572) 3px 2px 10px 0px;
cursor: pointer;
}
@media (max-width: 1170px){
.container{
@media (max-width: 1170px) {
.container {
width: 650px;
}
}
@media (max-width: 1024px){
.container{
@media (max-width: 1024px) {
.container {
width: 500px;
}
}
@media (max-width: 768px) {
.container {
padding: 40px 20px;
@@ -129,7 +130,6 @@ button:active {
font-size: 22px;
}
.countdown span {
font-size: 18px;
}

View File

@@ -0,0 +1,12 @@
function acceptCookies() {
document.cookie = "user_cookies=accepted; path=/; max-age=" + 60*60*24*30;
document.getElementById("cookieBanner").style.display = "none";
}
window.onload = function() {
if (document.cookie.indexOf("user_cookies") === -1) {
document.getElementById("cookieBanner").style.display = "flex";
} else {
document.getElementById("cookieBanner").style.display = "none";
}
};

View File

@@ -0,0 +1,23 @@
(function() {
function checkDevTools() {
console.clear();
console.log('%cSTOP!', 'color: red; font-size: 50px; font-weight: bold;');
console.log('%cThis is a browser feature intended for developers.', 'color: white; background: red; font-size: 16px; padding: 5px;');
console.log('%cIf someone told you to copy-paste something here to enable a premium feature or "hack" someone\'s account, it is a scam and will give them access to your Xeorl account.', 'color: white; background: black; font-size: 14px; padding: 5px;');
}
function detectDevTools() {
const threshold = 160;
const widthThreshold = 400;
if (
window.outerHeight - window.innerHeight > threshold ||
window.outerWidth - window.innerWidth > widthThreshold
) {
checkDevTools();
}
}
window.addEventListener('resize', detectDevTools);
setInterval(detectDevTools, 1000);
})();

View File

@@ -1,13 +1,7 @@
function storeEmailAndContinue() {
// Get the email entered by the user
var email = document.getElementById('email').value;
// Store the email in sessionStorage
sessionStorage.setItem('userEmail', email);
// Redirect to the next step
location.href = 'forgot_pass_step_two.php';
}
// Retrieve the email from sessionStorage and display it
document.getElementById('userEmail').textContent = sessionStorage.getItem('userEmail') || 'hygeonhealth@example.com';
document.getElementById('userEmail').textContent = sessionStorage.getItem('userEmail') || 'supportxeorl@example.com';

View File

@@ -1,66 +1,33 @@
// // Array of background image sources
// const images = ['assets/images/dna.jpg', 'assets/images/dna2.jpg', 'assets/images/dna3.jpg', 'assets/images/dna4.jpg'];
// let currentIndex = 0;
// function changeBackgroundImage() {
// const imgElement = document.getElementById('background-image');
// // Fade out
// imgElement.style.opacity = 0;
// setTimeout(() => {
// // Change image source
// currentIndex = (currentIndex + 1) % images.length;
// imgElement.src = images[currentIndex];
// // Fade in
// imgElement.style.opacity = 1;
// }, 800); // Match this timeout with the CSS transition duration
// }
// // Change image every 5 seconds
// setInterval(changeBackgroundImage, 5000);
// Password visibility toggle logic
const passwordField = document.getElementById('password-field');
const togglePassword = document.getElementById('toggle-password');
togglePassword.addEventListener('click', function () {
// Toggle between 'password' and 'text'
const type = passwordField.getAttribute('type') === 'password' ? 'text' : 'password';
passwordField.setAttribute('type', type);
// Optionally toggle the eye icon image (if different images are needed)
this.src = type === 'password' ? 'assets/images/eye.svg' : 'assets/images/eye-off.svg';
});
// Password Reset Function
function togglePasswordVisibility() {
const confirmPasswordInput = document.getElementById('confirmPassword');
if (confirmPasswordInput.type === 'password') {
confirmPasswordInput.type = 'text'; // Show password
} else {
confirmPasswordInput.type = 'password'; // Hide password
}
confirmPasswordInput.type = confirmPasswordInput.type === 'password' ? 'text' : 'password';
}
// Conform Password Seen Function
function resetPassword() {
const newPassword = document.getElementById('newPassword').value;
const confirmPassword = document.getElementById('confirmPassword').value;
const validationMessage = document.getElementById('validation-message');
if (newPassword.length < 8) {
showMessage('Password must be at least 8 characters long.', '#FF0000'); // Red color for error
showMessage('Password must be at least 8 characters long.', '#FF0000');
return;
}
if (newPassword !== confirmPassword) {
showMessage('Passwords do not match. Please try again.', '#FF0000'); // Red color for error
showMessage('Passwords do not match. Please try again.', '#FF0000');
return;
}
// Redirect or submit form after validation
location.href = 'password_reset_success.php'; // Change this to your success page
location.href = 'password_reset_success.php';
}
function showMessage(message, color) {
@@ -69,8 +36,7 @@ function showMessage(message, color) {
validationMessage.style.color = color;
validationMessage.style.display = 'block';
// Hide the message after 5 seconds (5000ms)
setTimeout(function() {
validationMessage.style.display = 'none';
}, 5000);
}
}

View File

@@ -2,7 +2,6 @@ document.addEventListener("DOMContentLoaded", function () {
const burgerToggle = document.getElementById("burger-toggle");
const sidebar = document.querySelector(".sidebar");
// Ensure sidebar is hidden initially
sidebar.style.display = "none";
burgerToggle.addEventListener("click", function () {
@@ -17,12 +16,11 @@ document.addEventListener("DOMContentLoaded", function () {
});
window.addEventListener('scroll', function () {
const header = document.querySelector('.header'); // Get the header element
const header = document.querySelector('.header');
// Check if the page has been scrolled
if (window.scrollY > 0) {
header.classList.add('scrolled'); // Add the "scrolled" class
header.classList.add('scrolled');
} else {
header.classList.remove('scrolled'); // Remove the "scrolled" class
header.classList.remove('scrolled');
}
});

View File

@@ -3,7 +3,6 @@ const form = document.querySelector(".shorten-form"),
shortenBtn = document.querySelector("#shorten-btn"),
linksList = document.querySelector("#links-list");
// Clear the list and show the "You don't have any shortened links" message
function resetLinksList() {
linksList.innerHTML = `
<li id="default-message">
@@ -18,7 +17,6 @@ function resetLinksList() {
`;
}
// Check session storage for existing links on page load
document.addEventListener("DOMContentLoaded", () => {
const savedLinks = sessionStorage.getItem("shortenedLinks");
if (savedLinks) {
@@ -35,17 +33,15 @@ shortenBtn.onclick = () => {
if (xhr.readyState == 4 && xhr.status == 200) {
let data = xhr.response;
if (data.length <= 5) {
//This is your domain name
const domain = "xeorl.buzz/";
// This is your shoeten domain name
const domain = "http://localhost/Php-Projects/xeorl/htdocs//";
let shortenURL = domain + data;
// Remove the default message if it exists
const defaultMessage = document.getElementById("default-message");
if (defaultMessage) {
defaultMessage.remove();
}
// Add the new link to the list
let newRow = `
<li>
<div class="link-icon"><img src="assets/images/url.png" class="logo-img"></div>
@@ -58,12 +54,9 @@ shortenBtn.onclick = () => {
</li>
`;
// Append the new link to the list and update session storage
linksList.insertAdjacentHTML('afterbegin', newRow);
sessionStorage.setItem("shortenedLinks", linksList.innerHTML);
// Clear the input field
urlInput.value = "";
urlInput.value = "";
} else {
alert(data);
}
@@ -74,7 +67,6 @@ shortenBtn.onclick = () => {
xhr.send(formData);
};
// Handle copy button clicks
document.addEventListener('click', function(e) {
if (e.target.closest('.copy-btn')) {
const linkInfo = e.target.closest('li').querySelector('.short-link').textContent;
@@ -84,13 +76,13 @@ document.addEventListener('click', function(e) {
}
});
// Handle members only delete button clicks!!
document.addEventListener('click', function(e) {
if (e.target.closest('.delete-btn')) {
alert("This feature is available for members only.");
}
});
// Handle delete button clicks
/*
document.addEventListener('click', function(e) {
@@ -118,5 +110,3 @@ document.addEventListener('click', function(e) {
}
});*/

View File

@@ -1,6 +1,3 @@
// script.js
// Add any form validation or interactivity here, like checking if the fields are filled
document.querySelector("form").addEventListener("submit", function(event) {
const inputs = document.querySelectorAll(".input-field");
let valid = true;
@@ -15,40 +12,14 @@ document.querySelector("form").addEventListener("submit", function(event) {
});
if (!valid) {
event.preventDefault(); // Prevent form submission if validation fails
event.preventDefault();
alert("Please fill all the fields.");
}
});
document.getElementById('toggle-password').addEventListener('click', function () {
const passwordField = document.getElementById('password-field');
const passwordType = passwordField.getAttribute('type') === 'password' ? 'text' : 'password';
passwordField.setAttribute('type', passwordType);
// Optionally, you can change the eye icon to an "eye-off" icon when the password is visible
this.src = passwordType === 'password' ? 'assets/images/eye.svg' : 'assets/images/eye-off.svg';
});
// // Array of background image sources
// const images = ['assets/images/wire.jpg', 'assets/images/internet.jpg','assets/images/redworld.jpg','assets/images/travel.jpg'];
// let currentIndex = 0;
// function changeBackgroundImage() {
// const imgElement = document.getElementById('background-image');
// // Fade out
// imgElement.style.opacity = 0;
// setTimeout(() => {
// // Change image source
// currentIndex = (currentIndex + 1) % images.length;
// imgElement.src = images[currentIndex];
// // Fade in
// imgElement.style.opacity = 1;
// }, 800); // Match this timeout with the CSS transition duration
// }
// // Change image every 5 seconds
// setInterval(changeBackgroundImage, 5000);

View File

@@ -1,10 +1,7 @@
// script.js
// Add any form validation or interactivity here, like checking if the fields are filled
document.querySelector("form").addEventListener("submit", function(event) {
const inputs = document.querySelectorAll(".input-field");
let valid = true;
inputs.forEach(input => {
if (input.value === "") {
valid = false;
@@ -15,39 +12,29 @@ document.querySelector("form").addEventListener("submit", function(event) {
});
if (!valid) {
event.preventDefault(); // Prevent form submission if validation fails
event.preventDefault();
alert("Please fill all the fields.");
}
});
document.getElementById('toggle-password').addEventListener('click', function () {
document.getElementById('toggle-password').addEventListener('click', function() {
const passwordField = document.getElementById('password-field');
const passwordType = passwordField.getAttribute('type') === 'password' ? 'text' : 'password';
passwordField.setAttribute('type', passwordType);
// Optionally, you can change the eye icon to an "eye-off" icon when the password is visible
this.src = passwordType === 'password' ? 'assets/images/eye.svg' : 'assets/images/eye-off.svg';
});
// // Array of background image sources
// const images = ['assets/images/dna.jpg', 'assets/images/dna2.jpg','assets/images/dna3.jpg','assets/images/dna4.jpg'];
// let currentIndex = 0;
function toggleSubmitButton() {
const checkbox = document.getElementById("agree");
const submitBtn = document.getElementById("submit-btn");
const errorMessage = document.getElementById("error-message");
// function changeBackgroundImage() {
// const imgElement = document.getElementById('background-image');
// // Fade out
// imgElement.style.opacity = 0;
if (checkbox.checked) {
submitBtn.disabled = false;
errorMessage.style.display = "none";
} else {
submitBtn.disabled = true;
}
}
// setTimeout(() => {
// // Change image source
// currentIndex = (currentIndex + 1) % images.length;
// imgElement.src = images[currentIndex];
// // Fade in
// imgElement.style.opacity = 1;
// }, 800); // Match this timeout with the CSS transition duration
// }
// // Change image every 5 seconds
// setInterval(changeBackgroundImage, 5000);
document.addEventListener("DOMContentLoaded", toggleSubmitButton);

View File

@@ -1,4 +1,3 @@
// Countdown logic
let countdown = 10;
let countdownInterval;
const timerElement = document.getElementById("timer");
@@ -10,15 +9,15 @@ function updateCountdown() {
timerElement.textContent = countdown;
}
if (countdown <= 0) {
button.disabled = false; // Enable the button when countdown ends
button.classList.add("active"); // Optional, if you use active class for style
button.style.cursor = "pointer"; // Enable cursor
setTimeout(function () {
button.textContent = "Getting links..."; // Change text before enabling
}, 300); // 0.3 seconds delay
setTimeout(function () {
button.textContent = "Get link"; // Final button text
}, 600); // After another 0.3 seconds
button.disabled = false;
button.classList.add("active");
button.style.cursor = "pointer";
setTimeout(() => {
button.textContent = "Getting links...";
}, 300);
setTimeout(() => {
button.textContent = "Get link";
}, 600);
clearInterval(countdownInterval);
}
}
@@ -32,14 +31,12 @@ function stopCountdown() {
}
function init() {
// Initialize countdown value and button state
countdown = 10;
timerElement.textContent = countdown;
button.disabled = true;
button.classList.remove("active");
button.style.cursor = "not-allowed";
button.textContent = "PLEASE WAIT...";
startCountdown();
}
@@ -52,11 +49,11 @@ document.addEventListener("visibilitychange", () => {
});
window.addEventListener("beforeunload", () => {
init(); // Reset state when the page is about to be unloaded
init();
});
init(); // Call init to initialize the countdown when the page loads
init();
function redirect() {
window.location.href = redirectUrl; // Redirect to the full URL
window.location.href = redirectUrl;
}

View File

@@ -1,23 +0,0 @@
//Right-click disable
document.addEventListener('contextmenu', event => event.preventDefault());
// Disable common keyboard shortcuts for developer tools
document.addEventListener('keydown', function(event) {
if (event.ctrlKey && (event.key === 'I' || event.key === 'i' || event.key === 'J' || event.key === 'j' || event.key === 'U' || event.key === 'u')) {
event.preventDefault();
}
if (event.key === 'F12') {
event.preventDefault();
}
});
// Detect developer tools opening
(function() {
const element = new Image();
Object.defineProperty(element, 'id', {
get: function() {
alert('Developer tools opened!');
}
});
console.log(element);
})();

View File

@@ -1,18 +1,15 @@
<?php
// Load Composer's autoloader
require_once __DIR__ . '/vendor/autoload.php'; // Correct path for vendor directory in core
// Initialize dotenv and load environment variables
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); // Adjusted to point to htdocs/.env
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
// Database configuration
$host = $_ENV['DB_HOST'];
$user = $_ENV['DB_USER'];
$pass = $_ENV['DB_PASS'];
$db = $_ENV['DB_NAME'];
// Establish database connection
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
die("Database connection error: " . mysqli_connect_error());

View File

@@ -1,10 +1,8 @@
<?php
// Start timer for debugging
$start_time = microtime(true);
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Include the environment variables and PHPMailer
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
@@ -14,37 +12,30 @@ use Dotenv\Dotenv;
$dotenv = Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
// Database connection
require_once 'config.php';
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Generate a 6-digit OTP
$otp = rand(100000, 999999); // 6-digit OTP
$otp = rand(100000, 999999);
// Update the OTP in the database using mysqli
$sql = "UPDATE user SET user_otp = '$otp' WHERE user_email = '$email'";
if ($conn->query($sql) === TRUE) {
// Send OTP email
$mail = new PHPMailer(true);
try {
// Server settings
$mail->isSMTP();
$mail->Host = $_ENV['SMTP_HOST']; // Set the SMTP server to send through
$mail->Host = $_ENV['SMTP_HOST'];
$mail->SMTPAuth = true;
$mail->Username = $_ENV['SMTP_USER']; // SMTP username
$mail->Password = $_ENV['SMTP_PASS']; // SMTP password
$mail->Username = $_ENV['SMTP_USER'];
$mail->Password = $_ENV['SMTP_PASS'];
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = $_ENV['SMTP_PORT'];
// Recipients
$mail->setFrom($_ENV['SMTP_USER'], 'Xeorl Support');
$mail->addAddress($email); // Add a recipient
$mail->addAddress($email);
// Content
$mail->isHTML(true);
$mail->Subject = 'Password Reset - Xeorl';
$mail->Body =
@@ -62,11 +53,11 @@ if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$mail->AltBody = 'Your OTP code is ' . $otp;
$mail->send();
// Redirect to ../forgot_pass_step_two.php
session_start(); // Start the session
$_SESSION['email'] = $email; // Store the email in the session
header('Location: ../forgot_pass_step_two.php'); // Redirect to the next page
exit; // Ensure no further script execution after redirection
session_start();
$_SESSION['email'] = $email;
header('Location: ../forgot_pass_step_two.php');
exit;
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

View File

@@ -1,10 +1,9 @@
<?php
session_start(); // Start the session to access session variables
require_once 'config.php'; // Ensure this is your mysqli connection file
session_start();
require_once 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Check if the email is stored in the session
if (!isset($_SESSION['email'])) {
header('Location: login.php');
exit();
@@ -16,28 +15,22 @@ if (isset($_POST['newPassword']) && isset($_POST['confirmPassword'])) {
$newPassword = $_POST['newPassword'];
$confirmPassword = $_POST['confirmPassword'];
// Check if the new password is at least 8 characters long
if (strlen($newPassword) < 8) {
$_SESSION['error_message'] = 'Password must be at least 8 characters long.';
header('Location: ../forgot_pass_step_three.php');
exit();
}
// Check if the new password and confirm password match
if ($newPassword !== $confirmPassword) {
$_SESSION['error_message'] = 'Passwords do not match.';
header('Location: ../forgot_pass_step_three.php');
exit();
}
// Hash the new password before storing it
$hashedPassword = password_hash($newPassword, PASSWORD_BCRYPT);
// Prepare the SQL query using mysqli
$sql = "UPDATE user SET user_pass = '$hashedPassword' WHERE user_email = '$email'";
if (mysqli_query($conn, $sql)) {
// No additional code needed here
header('Location: ../password_reset_success.php');
exit();
} else {

View File

@@ -1,44 +1,40 @@
<?php
session_start(); // Start the session to access session variables
require_once 'config.php'; // Include the database connection
session_start();
require_once 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
$email = isset($_SESSION['email']) ? $_SESSION['email'] : ''; // Retrieve the email from the session
$email = $_SESSION['email'] ?? '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$userOtp = $_POST['otp']; // Get the OTP entered by the user
$userOtp = $_POST['otp'];
// Validate if email and OTP are set
if (!empty($email) && !empty($userOtp)) {
// Query the database to get the OTP for the user with the provided email using MySQLi
$sql = "SELECT user_otp FROM user WHERE user_email = '$email'";
$result = $conn->query($sql); // Execute the query
$sql = "SELECT user_otp FROM user WHERE user_email = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $email);
$stmt->execute();
$result = $stmt->get_result();
if ($result && $result->num_rows > 0) {
$row = $result->fetch_assoc();
$dbOtp = $row['user_otp']; // Fetch the OTP from the result set
$dbOtp = $row['user_otp'];
// Check if the OTP entered by the user matches the one in the database
if ($userOtp == $dbOtp) {
// OTP is correct, redirect to the next step
header('Location: ../forgot_pass_step_three.php');
exit;
} else {
// OTP is incorrect, set error message
$_SESSION['error_message'] = "Invalid OTP. Please double-check the OTP.";
header('Location: ../forgot_pass_step_two.php');
exit;
}
} else {
// Query failed or no result, set error message
$_SESSION['error_message'] = "Failed to retrieve OTP from the database.";
header('Location: ../forgot_pass_step_two.php');
exit;
}
} else {
// If email or OTP is empty, set error message
$_SESSION['error_message'] = "Please fill out the OTP.";
header('Location: ../forgot_pass_step_two.php');
exit;

View File

@@ -4,12 +4,10 @@ include "config.php";
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Check if the session variable for storing shortened links exists
if (!isset($_SESSION['shortened_links'])) {
$_SESSION['shortened_links'] = array();
}
// Retrieve and return the list of shortened links for the current session
$links = array();
foreach ($_SESSION['shortened_links'] as $link_id) {
$sql = mysqli_query($conn, "SELECT * FROM url WHERE id = '{$link_id}'");

View File

@@ -1,16 +1,12 @@
<?php
// core/get_statistics.php
require 'config.php'; // Assuming config.php contains your database connection setup
require 'config.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Initialize variables in case the queries fail
$total_links = 0;
$total_clicks = 0;
$active_users = 0;
// Calculate total links
$sql_total_links = "SELECT COUNT(*) as total_links FROM url";
$result_total_links = mysqli_query($conn, $sql_total_links);
if ($result_total_links) {
@@ -20,7 +16,6 @@ if ($result_total_links) {
echo "Error fetching total links: " . mysqli_error($conn);
}
// Calculate total clicks
$sql_total_clicks = "SELECT SUM(clicks) as total_clicks FROM url";
$result_total_clicks = mysqli_query($conn, $sql_total_clicks);
if ($result_total_clicks) {
@@ -30,7 +25,6 @@ if ($result_total_clicks) {
echo "Error fetching total clicks: " . mysqli_error($conn);
}
// Calculate active users
$sql_total_users = "SELECT COUNT(*) as total_users FROM user";
$result_total_users = mysqli_query($conn, $sql_total_users);
if ($result_total_users) {
@@ -39,6 +33,4 @@ if ($result_total_users) {
} else {
echo "Error fetching total users: " . mysqli_error($conn);
}
?>

View File

@@ -8,7 +8,6 @@ if (isset($_POST['login_btn'])) {
$email = mysqli_real_escape_string($conn, $_POST['user_email']);
$password = $_POST['user_pass'];
// Check if the email exists
$stmt = mysqli_prepare($conn, "SELECT * FROM user WHERE user_email = ?");
mysqli_stmt_bind_param($stmt, "s", $email);
mysqli_stmt_execute($stmt);
@@ -17,22 +16,18 @@ if (isset($_POST['login_btn'])) {
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
// Check if the user is banned
if ($row['user_type'] == 4) {
$_SESSION['error'] = "Your account is banned. Please contact support.";
header('Location: ../login.php');
exit();
}
// Verify the password
if (password_verify($password, $row['user_pass'])) {
// Set session variables
$_SESSION['user_id'] = $row['id'];
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['user_email'] = $row['user_email'];
$_SESSION['user_type'] = $row['user_type'];
// Redirect to monetization after successful login
header('Location: ../monetization.php');
exit();
} else {
@@ -46,4 +41,4 @@ if (isset($_POST['login_btn'])) {
exit();
}
}
?>
?>

View File

@@ -1,57 +1,42 @@
<?php
// Enable error reporting
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Include the configuration file
include "core/config.php";
// Start session management
session_start();
// Initialize dotenv and load environment variables
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
// Retrieve environment variables
$host = $_ENV['DB_HOST'];
$user = $_ENV['DB_USER'];
$pass = $_ENV['DB_PASS'];
$db = $_ENV['DB_NAME'];
// Establish database connection
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
die("Database connection error: " . mysqli_connect_error());
}
// Initialize the shortened URL variable
$new_url = "";
// Check if there's a GET request and process the shortened URL
if (isset($_GET)) {
foreach ($_GET as $key => $val) {
$u = mysqli_real_escape_string($conn, $key);
$new_url = str_replace('/', '', $u);
}
// Query the database for the full URL associated with the shortened URL
$sql = mysqli_query($conn, "SELECT full_url FROM url WHERE shorten_url = '{$new_url}'");
if (mysqli_num_rows($sql) > 0) {
// Increment the click count for the shortened URL
$sql2 = mysqli_query($conn, "UPDATE url SET clicks = clicks + 1 WHERE shorten_url = '{$new_url}'");
if ($sql2) {
// Fetch the full URL and store it in the session
$full_url = mysqli_fetch_assoc($sql);
$_SESSION['redirect_url'] = $full_url['full_url'];
// Instead of header redirect, include the unzipper.php page here
include 'unzipper.php'; // Include the unzipper.php page in this URL
exit(); // Exit to ensure the rest of the script doesn't run
include 'unzipper.php';
exit();
}
} else {
}
}
?>

View File

@@ -1,17 +1,14 @@
<?php
session_start();
// Load Composer's autoloader
require_once __DIR__ . '/vendor/autoload.php'; // Correct path for vendor directory in core
require_once __DIR__ . '/vendor/autoload.php';
require_once 'config.php';
// Initialize dotenv and load environment variables
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); // Adjusted to point to htdocs/.env
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Database configuration
$clientID = $_ENV['CLIENT_ID'];
$clientSecret = $_ENV['CLIENT_SECRET'];
$redirectUri = $_ENV['REDIRECT_URI'];
@@ -34,33 +31,28 @@ if (isset($_GET['code'])) {
$name = $google_account_info->name;
$email = $google_account_info->email;
// Check if user exists in database
$stmt = $conn->prepare("SELECT id, user_name, user_email, user_type FROM user WHERE google_id = ? OR user_email = ?");
$stmt->bind_param("ss", $google_id, $email);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 0) {
// Insert new user
$default_user_type = 3; // Default user type
$default_user_type = 3;
$stmt = $conn->prepare("INSERT INTO user (google_id, user_email, user_name, user_type) VALUES (?, ?, ?, ?)");
$stmt->bind_param("sssi", $google_id, $email, $name, $default_user_type);
$stmt->execute();
$user_id = $stmt->insert_id;
} else {
// User exists, fetch user ID
$row = $result->fetch_assoc();
$user_id = $row['id'];
$name = $row['user_name'];
$email = $row['user_email'];
}
// Store user session
$_SESSION['user_id'] = $user_id;
$_SESSION['user_name'] = $name;
$_SESSION['user_email'] = $email;
// Redirect to monetization
header("Location: ../monetization.php");
exit();
} else {

View File

@@ -1,57 +1,52 @@
<?php
include('config.php');
session_start(); // Start the session for storing error messages
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
require_once 'config.php';
if (isset($_POST['submit_btn'])) {
$fName = mysqli_real_escape_string($conn, $_POST['f_name']);
$lName = mysqli_real_escape_string($conn, $_POST['l_name']);
$email = mysqli_real_escape_string($conn, $_POST['user_email']);
$password = mysqli_real_escape_string($conn, $_POST['user_pass']); // Plain text password
$uName = $fName . " " . $lName;
$uType = 3; // Default user type (can be changed as per requirements)
// Check if password is at least 8 characters long
if (strlen($password) < 8) {
$_SESSION['error'] = "Password must be at least 8 characters long.";
header('Location: ../register.php'); // Redirect to the register page
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!isset($_POST['user_agree'])) {
$_SESSION['error'] = "You must agree to the Terms & Conditions.";
header("Location: ../register.php");
exit();
}
// Check if email already exists
$checkEmail = "SELECT * FROM user WHERE user_email = '$email'";
$result = $conn->query($checkEmail);
if (isset($_POST['submit_btn'])) {
$fName = mysqli_real_escape_string($conn, $_POST['f_name']);
$lName = mysqli_real_escape_string($conn, $_POST['l_name']);
$email = mysqli_real_escape_string($conn, $_POST['user_email']);
$password = mysqli_real_escape_string($conn, $_POST['user_pass']);
$uName = $fName . " " . $lName;
$uType = 3;
if ($result->num_rows > 0) {
// Store the error message in the session
$_SESSION['error'] = "Email already exists. Please use a different email.";
header('Location: ../register.php'); // Redirect to the register page
exit();
} else {
// Hash the password before storing it
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
// Insert the user data with hashed password
$sql = "INSERT INTO user (`user_name`, `user_email`, `user_pass`, `user_type`, `user_otp`)
VALUES ('$uName', '$email', '$hashedPassword', '$uType', NULL)";
if ($conn->query($sql) === TRUE) {
// Get the user ID of the newly registered user
$userId = $conn->insert_id;
// Optionally, send an email or OTP for verification here
// Redirect to login page after successful registration
header('Location: ../login.php');
exit();
} else {
$_SESSION['error'] = "Error: " . $sql . "<br>" . $conn->error;
if (strlen($password) < 8) {
$_SESSION['error'] = "Password must be at least 8 characters long.";
header('Location: ../register.php');
exit();
}
}
}
$conn->close();
$checkEmail = "SELECT * FROM user WHERE user_email = '$email'";
$result = $conn->query($checkEmail);
if ($result->num_rows > 0) {
$_SESSION['error'] = "Email already exists. Please use a different email.";
header('Location: ../register.php');
exit();
} else {
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
$sql = "INSERT INTO user (`user_name`, `user_email`, `user_pass`, `user_type`, `user_otp`)
VALUES ('$uName', '$email', '$hashedPassword', '$uType', NULL)";
if ($conn->query($sql) === TRUE) {
$userId = $conn->insert_id;
header('Location: ../login.php');
exit();
} else {
$_SESSION['error'] = "Error: " . $sql . "<br>" . $conn->error;
header('Location: ../register.php');
exit();
}
}
}
$conn->close();
}
?>

View File

@@ -1,70 +1,46 @@
<?php
// Start the session
session_start();
// Include necessary files
require_once 'config.php'; // Ensure this is your mysqli connection file
require_once 'config.php';
require 'vendor/autoload.php';
error_reporting(E_ALL);
ini_set('display_errors', 1);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use Dotenv\Dotenv;
// Load environment variables using Dotenv
$dotenv = Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
// Check if the email is stored in the session
if (isset($_SESSION['email'])) {
$email = $_SESSION['email'];
$otp = rand(100000, 999999);
// Generate a new 6-digit OTP
$otp = rand(100000, 999999); // Change this to generate a 6-digit OTP
// Update the OTP in the database for the user using mysqli
$sql = "UPDATE user SET user_otp = '$otp' WHERE user_email = '$email'";
if (mysqli_query($conn, $sql)) {
// Send the OTP to the user's email
$mail = new PHPMailer(true);
try {
// Server settings
$mail->isSMTP();
$mail->Host = $_ENV['SMTP_HOST']; // SMTP server
$mail->SMTPAuth = true;
$mail->Username = $_ENV['SMTP_USER']; // SMTP username
$mail->Password = $_ENV['SMTP_PASS']; // SMTP password
$mail->Host = $_ENV['SMTP_HOST'];
$mail->SMTPAuth = true;
$mail->Username = $_ENV['SMTP_USER'];
$mail->Password = $_ENV['SMTP_PASS'];
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = $_ENV['SMTP_PORT'];
$mail->Port = $_ENV['SMTP_PORT'];
// Recipients
$mail->setFrom($_ENV['SMTP_USER'], 'Xeorl Support');
$mail->addAddress($email); // Add a recipient
$mail->addAddress($email);
// Content
$mail->isHTML(true);
$mail->Subject = 'Password Reset - Xeorl';
$mail->Body =
'Hello User,<br><br>
Your one time password: <b>' . $otp . '</b>.<br><br>
Your one-time password (OTP) is valid for a single session. If you refresh the page or exit the Next Step portal, you will need to regenerate a new OTP.<br><br>
If you did not request this OTP, please contact us immediately at www.xeorl.buzz<br><br>
Regards,<br>
Xeorl<br>
' . date("Y") . ' © All rights reserved';
$mail->Body = 'Hello User,<br><br>Your one time password: <b>' . $otp . '</b>.<br><br>Your one-time password (OTP) is valid for a single session. If you refresh the page or exit the Next Step portal, you will need to regenerate a new OTP.<br><br>If you did not request this OTP, please contact us immediately at www.xeorl.buzz<br><br>Regards,<br>Xeorl<br>' . date("Y") . ' © All rights reserved';
$mail->AltBody = 'Your OTP code is ' . $otp;
// Send the email
$mail->send();
$_SESSION['success_message'] = 'A new OTP has been sent to your email address.';
header('Location: ../forgot_pass_step_two.php'); // Redirect back to the confirmation page
header('Location: ../forgot_pass_step_two.php');
exit;
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
@@ -72,7 +48,6 @@ if (isset($_SESSION['email'])) {
echo "Failed to update OTP in the database: " . mysqli_error($conn);
}
// Close the MySQLi statement
mysqli_close($conn);
} else {
echo "No email found in session.";

View File

@@ -3,6 +3,7 @@ session_start();
include "config.php";
error_reporting(E_ALL);
ini_set('display_errors', 1);
$full_url = mysqli_real_escape_string($conn, $_POST['full_url']);
if (!empty($full_url) && filter_var($full_url, FILTER_VALIDATE_URL)) {
@@ -12,14 +13,22 @@ if (!empty($full_url) && filter_var($full_url, FILTER_VALIDATE_URL)) {
if (mysqli_num_rows($sql) > 0) {
echo "Something went wrong. Please generate again!";
} else {
$sql2 = mysqli_query($conn, "INSERT INTO url (full_url, shorten_url, clicks)
VALUES ('{$full_url}', '{$ran_url}', '0')");
$user_email = isset($_SESSION['user_email']) ? $_SESSION['user_email'] : NULL;
if ($user_email !== NULL) {
$sql2 = mysqli_query($conn, "INSERT INTO url (full_url, shorten_url, clicks, user_email)
VALUES ('{$full_url}', '{$ran_url}', '0', '{$user_email}')");
} else {
$sql2 = mysqli_query($conn, "INSERT INTO url (full_url, shorten_url, clicks)
VALUES ('{$full_url}', '{$ran_url}', '0')");
}
if ($sql2) {
$link_id = mysqli_insert_id($conn); // Get the ID of the newly inserted row
$link_id = mysqli_insert_id($conn);
if (!isset($_SESSION['shortened_links'])) {
$_SESSION['shortened_links'] = array();
}
$_SESSION['shortened_links'][] = $link_id; // Store the link ID in session
$_SESSION['shortened_links'][] = $link_id;
$shorten_url = $ran_url;
echo $shorten_url;

View File

@@ -3,12 +3,12 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
@@ -17,19 +17,16 @@
</head>
<body>
<div class="container">
<!-- Left Section (Image and Logo) -->
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
<h1 class="logo">Xeorl</h1>
<button class="back-button" onclick="window.location.href='login.php';">Back to Login &rarr;</button>
</div>
<div class="content">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<h2>Unimited Shortens but,<br>One Link at a Time</h2>
<h2>Unlimited Shortens but,<br>One Link at a Time</h2>
</div>
</div>
<!-- Right Section (Form) -->
<div class="right-section">
<div class="form-container">
<h2>Reset your password</h2>
@@ -41,7 +38,6 @@
</div>
</div>
</div>
<script src="assets/js/_forgot_pass.js"></script>
<script src="assets/js/_email.js"></script>
</body>

View File

@@ -1,59 +1,51 @@
<?php
// Start the session to access session variables
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$email = isset($_SESSION['email']) ? $_SESSION['email'] : ''; // Get the email from the session
// Display any error or success message if set in session
$error_message = isset($_SESSION['error_message']) ? $_SESSION['error_message'] : '';
$success_message = isset($_SESSION['success_message']) ? $_SESSION['success_message'] : '';
$email = $_SESSION['email'] ?? '';
$error_message = $_SESSION['error_message'] ?? '';
$success_message = $_SESSION['success_message'] ?? '';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Mulish:wght@200..1000&family=Work+Sans:wght@100..900&display=swap" rel="stylesheet">
<title>Reset Password</title>
<link rel="stylesheet" href="assets/css/_forgot_pass.css">
</head>
<body>
<div class="container">
<!-- Left Section (Image and Logo) -->
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
<h1 class="logo">Xeorl</h1>
<button class="back-button" onclick="window.location.href='login.php';">Back to Login &rarr;</button>
</div>
<div class="content">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<h2>Unimited Shortens but,<br>One Link at a Time</h2>
<h2>Unlimited Shortens but,<br>One Link at a Time</h2>
</div>
</div>
<!-- Right Section (Create Password Form) -->
<div class="right-section">
<div class="form-container">
<h2>Create a New Password</h2>
<p>Please choose a password that hasn't been used before. Must be at least 8 characters.</p>
<!-- Display success or error message -->
<?php if ($error_message): ?>
<p class="error-message" style="color:red"><?= htmlspecialchars($error_message) ?></p>
<?php endif; ?>
<?php if ($success_message): ?>
<p class="success-message"><?= htmlspecialchars($success_message) ?></p>
<?php endif; ?>
<form action="./core/forgot_pass_action_three.php" method="post">
<input type="password" placeholder="Set new password" class="input-field full-width" name="newPassword" required minlength="8">
<input type="password" placeholder="Confirm new password" class="input-field full-width" name="confirmPassword" required minlength="8">

View File

@@ -1,8 +1,8 @@
<?php
session_start(); // Start the session
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$email = isset($_SESSION['email']) ? $_SESSION['email'] : ''; // Retrieve the email from the session
$email = isset($_SESSION['email']) ? $_SESSION['email'] : '';
?>
<!DOCTYPE html>
@@ -26,65 +26,48 @@ $email = isset($_SESSION['email']) ? $_SESSION['email'] : ''; // Retrieve the em
<body>
<div class="container">
<!-- Left Section (Image and Logo) -->
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
<button class="back-button" onclick="window.location.href='login.php';">Back to Login &rarr;</button>
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
<button class="back-button" onclick="window.location.href='login.php';">Back to Login &rarr;</button>
</div>
<div class="content">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<h2>Unlimited Shortens but,<br>One Link at a Time</h2>
</div>
</div>
<div class="content">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<h2>Unimited Shortens but,<br>One Link at a Time</h2>
</div>
</div>
<!-- Right Section (Form) -->
<div class="right-section">
<div class="form-container">
<h2>Enter Confirmation Code</h2>
<p>We sent a code to <strong id="userEmail"><?php echo htmlspecialchars($email); ?></strong></p>
<form id="codeForm" action="./core/forgot_pass_action_two.php" method="post">
<!-- Input type set to 'tel' for numeric keyboard, with pattern for validation -->
<input type="tel" name="otp" pattern="[0-9]*" inputmode="numeric" placeholder="Enter 6-digit code" class="input-field full-width" maxlength="6" required>
<button type="submit" class="submit-button">Continue</button>
</form>
<div class="resend-code">
<p>Didn't receive the email? <a href="core/resend.php">Click to resend</a></p>
</div>
<div id="success-message" class="success-message">
<!-- Error message container -->
<?php if (isset($_SESSION['error_message'])): ?>
<div class="error-message" style="display: block; color: red; font-size: 14px; margin-top: 10px;">
<?php echo htmlspecialchars($_SESSION['error_message']);
unset($_SESSION['error_message']); ?>
</div>
<?php endif; ?>
<!-- Success message container -->
<?php
if (isset($_SESSION['success_message'])) {
echo '<span style="display: block; color: #4CAF50; font-size: 14px; margin-top: 10px;">' . htmlspecialchars($_SESSION['success_message']) . '</span>';
unset($_SESSION['success_message']);
}
?>
<?php if (isset($_SESSION['success_message'])): ?>
<span style="display: block; color: #4CAF50; font-size: 14px; margin-top: 10px;">
<?php echo htmlspecialchars($_SESSION['success_message']);
unset($_SESSION['success_message']); ?>
</span>
<?php endif; ?>
</div>
</div>
</div>
</div>
<script>
// Pass the PHP email value to JavaScript and set it in the HTML
document.getElementById('userEmail').textContent = "<?php echo isset($email) ? htmlspecialchars($email) : ''; ?>";
</script>
<script src="assets/js/_forgot_pass.js"></script>
</body>
</html>
</html>

View File

@@ -1,8 +1,9 @@
<?php
require 'core/process.php';
require 'core/get_statistics.php';
require 'core/get_statistics.php';
error_reporting(E_ALL);
ini_set('display_errors', 1); // Include the statistics file
ini_set('display_errors', 1);
?>
<!DOCTYPE html>
@@ -24,7 +25,7 @@ ini_set('display_errors', 1); // Include the statistics file
<link rel="stylesheet" href="assets/css/_home.css">
</head>
<body>
<?php include "assets/_header.php"; ?>
<?php include "assets/_header.php"; ?>
<main>
<!-- Shorten Section -->
@@ -38,8 +39,7 @@ ini_set('display_errors', 1); // Include the statistics file
</div>
<div class="shortened-links">
<h2>Your shortened links :</h2>
<ul id="links-list">
</ul>
<ul id="links-list"></ul>
</div>
</section>
@@ -58,19 +58,16 @@ ini_set('display_errors', 1); // Include the statistics file
<div class="stat-item">
<img src="assets/images/total.png" alt="Total Clicks" class="stat-icon total-icon">
<h3>Total Clicks</h3>
<!-- Here we are adding extra values + total clicks for ranking up the website values -->
<p><?php echo 77467 + $total_clicks; ?></p>
</div>
<div class="stat-item">
<img src="assets/images/links.png" alt="Total Links" class="stat-icon links-icon">
<h3>Total URLs</h3>
<!-- Here we are adding extra values + total links for ranking up the website values -->
<p><?php echo 9730 + $total_links; ?></p>
</div>
<div class="stat-item">
<img src="assets/images/users.png" alt="Active Users" class="stat-icon users-icon">
<h3>Register Users</h3>
<!-- Here we are adding extra values + total users for ranking up the website values -->
<strong style="font-weight: bold; font-size: 1.5em;"><?php echo 3987 + $total_users; ?></strong>
</div>
</div>
@@ -91,8 +88,10 @@ ini_set('display_errors', 1); // Include the statistics file
</div>
</section>
</main>
<?php include 'assets/_cookies.php'; ?>
<?php include 'assets/_footer.php'; ?>
<script src="assets/js/_home.js"></script>
<script src="assets/js/developer_tools.js"></script>
<script src="assets/js/_developer_tools.js"></script>
</body>
</html>

View File

@@ -9,21 +9,20 @@ ini_set('display_errors', 1);
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Mulish:wght@200..1000&family=Work+Sans:wght@100..900&display=swap" rel="stylesheet">
<title>Login</title>
<link rel="stylesheet" href="assets/css/_login.css">
</head>
<body>
<div class="container" style="user-select: none;">
<!-- Left Section (Image and Logo) -->
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
@@ -34,29 +33,22 @@ ini_set('display_errors', 1);
<h2>Unlocking Links,<br>One Link at a Time</h2>
</div>
</div>
<!-- Right Section (Form) -->
<div class="right-section">
<div class="form-container">
<h2>Login to your account</h2>
<p>Don't have an account? <a href="register.php">Register</a></p>
<form action="./core/login_action.php" method="post">
<input type="email" placeholder="Email" class="input-field full-width" name="user_email" required>
<!-- Password field with eye icon -->
<div class="input-container">
<input type="password" placeholder="Enter your password" class="input-field full-width" id="password-field" name="user_pass" required>
<img src="assets/images/eye.svg" alt="Show Password" class="eye-icon" id="toggle-password">
</div>
<!-- Displaying error messages -->
<?php
if (isset($_SESSION['error'])) {
echo "<div style='color: red; font-size: 14px; margin-top: -20px; margin-bottom: 3px;' class='error-message'>" . $_SESSION['error'] . "</div>";
unset($_SESSION['error']);
}
?>
<!-- Remember Me Checkbox, Forgot Password link, and Beta Notice -->
<div class="checkbox-forgot-container">
<div class="checkbox-container">
<input type="checkbox" id="remember-me" class="custom-checkbox">
@@ -64,23 +56,16 @@ ini_set('display_errors', 1);
</div>
<a href="forgot_pass_step_one.php" class="forgot-password-link">Forgot password?</a>
</div>
<!-- Beta Notice -->
<p class="beta-notice">
This is a beta functionality. Please note that there are potential security concerns related to leaving your account logged in for long periods of time; especially when using an insecure, shared, or public device.
</p>
<button type="submit" class="submit-button" name="login_btn">Login</button>
</form>
<div class="divider">Or login with</div>
<div class="social-login">
<!-- Link to Google login via redirect.php -->
<button class="google-btn" onclick="window.location.href='core/redirect_google.php'">
<img src="assets/images/google.png" alt="Google Logo"> Google
</button>
<button class="apple-btn">
<img src="assets/images/apple.png" alt="Apple Logo"> Apple
</button>
@@ -88,7 +73,6 @@ ini_set('display_errors', 1);
</div>
</div>
</div>
<script src="assets/js/_login.js"></script>
</body>
</html>

View File

@@ -2,6 +2,7 @@
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
@@ -11,29 +12,28 @@ if (!isset($_SESSION['user_id'])) {
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta charset="UTF-8">
<meta charset="UTF-8">
<title>Monetization</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Xeorl - The All-In-One, Fully Free to Use Advanced Link Shortener and Management Tool - Equipped with Multi-layered URL encryption, URL metadata remover, Mass shrinker, Quick link and Many more! - Powered by @xodivorce...">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/_monetization.css">
</head>
<body>
<?php include "assets/_header.php"; ?>
<main>
<h2>Welcome, <?php echo $_SESSION['user_name']; ?>!</h2>
<p>Email: <?php echo $_SESSION['user_email']; ?></p>
<a href="logout.php">Logout</a>
</main>
<?php include "assets/_footer.php"; ?>
<?php include "assets/_header.php"; ?>
<main>
<h2>Welcome, <?php echo htmlspecialchars($_SESSION['user_name']); ?>!</h2>
<p>Email: <?php echo htmlspecialchars($_SESSION['user_email']); ?></p>
<a href="logout.php">Logout</a>
</main>
<?php include "assets/_footer.php"; ?>
</body>
</html>

View File

@@ -3,12 +3,12 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
@@ -17,38 +17,24 @@
</head>
<body>
<div class="container">
<!-- Left Section (Image and Logo) -->
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
<h1 class="logo">Xeorl</h1>
<button class="back-button" onclick="window.location.href='login.php';">Back to Login &rarr;</button>
</div>
<div class="content">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<h2>Unimited Shortens but,<br>One Link at a Time</h2>
<h2>Unlimited Shortens but,<br>One Link at a Time</h2>
</div>
</div>
<!-- Right Section (Success Message) -->
<div class="right-section">
<div class="form-container">
<h2>Password Reset!</h2>
<p>
Your password has been successfully reset.
We understand that keeping your account secure is important,
and we're here to help you every step of the way.
You can now log in using your new password.
If you have any questions or need further assistance,
feel free to reach out to our support team at
<a href="mailto:hey@xodivorce.in" class="support-email">support@xeorl.buzz</a>.
Click the button below to log in and access your account.
</p>
<p>Your password has been successfully reset. We understand that keeping your account secure is important, and we're here to help you every step of the way. You can now log in using your new password. If you have any questions or need further assistance, feel free to reach out to our support team at <a href="mailto:hey@xodivorce.in" class="support-email">support@xeorl.buzz</a>. Click the button below to log in and access your account.</p>
<button class="submit-button" onclick="window.location.href='login.php';">Continue</button>
</div>
</div>
</div>
<script src="assets/js/_forgot_pass.js"></script>
</body>
</html>

View File

@@ -1,5 +1,5 @@
<?php
session_start(); // Start the session to access error messages
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
@@ -9,12 +9,12 @@ ini_set('display_errors', 1);
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
@@ -23,63 +23,63 @@ ini_set('display_errors', 1);
</head>
<body>
<div class="container" style="user-select: none;">
<!-- Left Section (Image and Logo) -->
<div class="left-section">
<div class="header">
<h1 class="logo">Xeorl</h1>
<h1 class="logo">Xeorl</h1>
<button class="back-button" onclick="window.location.href='home.php';">Back to website &rarr;</button>
</div>
<div class="content">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<img id="background-image" src="assets/images/travel.jpg" alt="Background Image" class="background-img">
<h2>Capturing Links,<br>One Link at a Time</h2>
</div>
</div>
<!-- Right Section (Form) -->
<div class="right-section">
<div class="form-container">
<h2>Create an account</h2>
<p>Already have an account? <a href="login.php">Log in</a></p>
<form action="./core/register_action.php" method="post">
<div class="input-container">
<input type="text" placeholder="First name" class="input-field" name="f_name">
<input type="text" placeholder="Last name" class="input-field" name="l_name">
</div>
<input type="email" placeholder="Email" class="input-field full-width" name="user_email">
<!-- Password field with eye icon -->
<div class="input-container">
<input type="password" placeholder="Enter your password" class="input-field full-width" id="password-field" name="user_pass">
<img src="assets/images/eye.svg" alt="Show Password" class="eye-icon" id="toggle-password">
</div>
<!-- Displaying error messages -->
<?php
if (isset($_SESSION['error'])) {
echo "<div style='color: red; font-size: 14px; margin-top: -24px; margin-bottom: 7px;'>" . $_SESSION['error'] . "</div>";
unset($_SESSION['error']); // Clear the error message after displaying it
}
?>
<?php if (isset($_SESSION['error'])): ?>
<div style="color: red; font-size: 14px; margin-top: -24px; margin-bottom: 7px;">
<?= $_SESSION['error'] ?>
</div>
<?php unset($_SESSION['error']); ?>
<?php endif; ?>
<div class="checkbox-container">
<input type="checkbox" id="agree" class="custom-checkbox" name="user_agree" value="1">
<label for="agree">I agree to the <a href="#" class="terms-link">Terms & Conditions</a></label>
</div>
<?php if (isset($_SESSION['error'])): ?>
<div id="error-message" style="color: red; font-size: 14px; margin-top: 5px;">
<?= $_SESSION['error'] ?>
</div>
<?php unset($_SESSION['error']); ?>
<?php else: ?>
<div id="error-message" style="color: red; font-size: 14px; margin-top: 5px; display: none;"></div>
<?php endif; ?>
<button type="submit" class="submit-button" name="submit_btn">Create account</button>
</form>
<div class="divider">Or register with</div>
<div class="social-login">
<button class="google-btn" onclick="window.location.href='core/redirect_google.php'"> <img src="assets/images/google.png" alt="Google Logo"> Google</button>
<button class="apple-btn"> <img src="assets/images/apple.png" alt="Apple Logo"> Apple</button>
<button class="google-btn" onclick="window.location.href='core/redirect_google.php'">
<img src="assets/images/google.png" alt="Google Logo"> Google
</button>
<button class="apple-btn">
<img src="assets/images/apple.png" alt="Apple Logo"> Apple
</button>
</div>
</div>
</div>
</div>
<script src="assets/js/_register.js"></script>
<script src="assets/js/_developer_tools.js"></script>
</body>
</html>

View File

@@ -13,42 +13,40 @@ $redirect_url = $_SESSION['redirect_url'];
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta charset="UTF-8">
<title>Xeorl - Unzipper</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Xeorl - The All-In-One, Fully Free to Use Advanced Link Shortener and Management Tool - Equipped with Multi-layered URL encryption, URL metadata remover, Mass shrinker, Quick link and Many more! - Powered by @xodivorce...">
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg" />
<link rel="shortcut icon" href="./assets/images/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png" />
<link rel="icon" type="image/png" href="./assets/images/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="./assets/images/favicon.svg">
<link rel="shortcut icon" href="./assets/images/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="./assets/images/apple-touch-icon.png">
<meta name="apple-mobile-web-app-title" content="Xeorl">
<link rel="manifest" href="./assets/images/site.webmanifest" />
<link rel="manifest" href="./assets/images/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="assets/css/_unzipper.css">
</head>
<body>
<?php include "assets/_header.php"; ?>
<div class="max-container">
<div class="container">
<h2>Your link is almost ready.</h2>
<div class="countdown-wrapper">
<div class="countdown">
<span id="timer">10</span><br>Seconds
<?php include "assets/_header.php"; ?>
<div class="max-container">
<div class="container">
<h2>Your link is almost ready.</h2>
<div class="countdown-wrapper">
<div class="countdown">
<span id="timer">10</span><br>Seconds
</div>
</div>
<button id="getLinkBtn" disabled onclick="redirect()">PLEASE WAIT...</button>
</div>
<button id="getLinkBtn" disabled onclick="redirect()">PLEASE WAIT...</button>
</div>
</div>
<?php include "assets/_footer.php"; ?>
<script>
const redirectUrl = "<?php echo $redirect_url; ?>";
</script>
<script src="assets/js/_unzipper.js"></script>
<?php include "assets/_cookies.php"; ?>
<?php include "assets/_footer.php"; ?>
<script>
const redirectUrl = "<?php echo $redirect_url; ?>";
</script>
<script src="assets/js/_developer_tools.js"></script>
<script src="assets/js/_unzipper.js"></script>
</body>
</html>