Sindbad~EG File Manager
<?php
require_once 'config/config.php';
// Redirect to dashboard if already logged in
if (is_logged_in()) {
redirect('dashboard.php');
}
$database = new Database();
$conn = $database->getConnection();
$user = new User($conn);
$error = '';
$success = '';
// Handle login
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'login') {
$login = sanitize_input($_POST['login'] ?? '');
$password = $_POST['password'] ?? '';
if (empty($login) || empty($password)) {
$error = 'Please fill in all fields';
} else {
$user_data = $user->authenticate($login, $password);
if ($user_data) {
$_SESSION['user_id'] = $user_data['id'];
$_SESSION['user_name'] = $user_data['name'];
$_SESSION['account_type'] = $user_data['account_type'];
$_SESSION['location_type'] = $user_data['location_type'];
$_SESSION['location_name'] = $user_data['location_name'];
flash_message('Welcome back, ' . $user_data['name'] . '!', 'success');
redirect('dashboard.php');
} else {
$error = 'Invalid username/email or password';
}
}
}
// Handle registration
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'register') {
$name = sanitize_input($_POST['name'] ?? '');
$email = sanitize_input($_POST['email'] ?? '');
$username = sanitize_input($_POST['username'] ?? '');
$password = $_POST['password'] ?? '';
$confirm_password = $_POST['confirm_password'] ?? '';
if (empty($name) || empty($email) || empty($username) || empty($password)) {
$error = 'Please fill in all required fields';
} elseif ($password !== $confirm_password) {
$error = 'Passwords do not match';
} elseif (strlen($password) < 6) {
$error = 'Password must be at least 6 characters long';
} elseif ($user->emailExists($email)) {
$error = 'Email already exists';
} elseif ($user->usernameExists($username)) {
$error = 'Username already exists';
} else {
$user_data = [
'name' => $name,
'email' => $email,
'username' => $username,
'password' => $password,
'account_type' => 'user',
'status' => 'active'
];
if ($user->create($user_data)) {
$success = 'Account created successfully! You can now log in.';
} else {
$error = 'Failed to create account. Please try again.';
}
}
}
$flash = get_flash_message();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login - <?php echo get_site_title(); ?></title>
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<!-- Custom CSS -->
<link rel="stylesheet" href="assets/css/style.css">
<style>
body {
background: linear-gradient(135deg, #3B82F6 0%, #F59E0B 100%);
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
font-family: 'Inter', sans-serif;
}
.login-container {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border-radius: 20px;
padding: 3rem;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
width: 100%;
max-width: 450px;
border: 1px solid rgba(255, 255, 255, 0.2);
}
.login-header {
text-align: center;
margin-bottom: 2rem;
}
.login-header h1 {
color: var(--dark-grey);
font-size: 2rem;
font-weight: 700;
margin-bottom: 0.5rem;
}
.login-header p {
color: var(--primary-grey);
font-size: 1rem;
}
.form-tabs {
display: flex;
margin-bottom: 2rem;
border-radius: 12px;
background: var(--light-grey);
padding: 0.25rem;
}
.tab-button {
flex: 1;
padding: 0.75rem 1rem;
border: none;
background: transparent;
border-radius: 10px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
color: var(--primary-grey);
}
.tab-button.active {
background: var(--white);
color: var(--primary-blue);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.form-content {
display: none;
}
.form-content.active {
display: block;
}
.form-group {
margin-bottom: 1.5rem;
}
.form-label {
display: block;
margin-bottom: 0.5rem;
font-weight: 600;
color: var(--dark-grey);
}
.form-control {
width: 100%;
padding: 0.875rem 1rem;
border: 2px solid var(--light-grey);
border-radius: 12px;
font-size: 1rem;
transition: all 0.3s ease;
background: var(--white);
}
.form-control:focus {
outline: none;
border-color: var(--primary-blue);
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}
.btn-login {
width: 100%;
padding: 1rem;
background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
color: var(--white);
border: none;
border-radius: 12px;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
margin-top: 1rem;
}
.btn-login:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
}
.alert {
padding: 1rem;
border-radius: 12px;
margin-bottom: 1.5rem;
font-weight: 500;
}
.alert-error {
background: rgba(239, 68, 68, 0.1);
color: #DC2626;
border: 1px solid rgba(239, 68, 68, 0.2);
}
.alert-success {
background: rgba(16, 185, 129, 0.1);
color: #059669;
border: 1px solid rgba(16, 185, 129, 0.2);
}
.back-link {
text-align: center;
margin-top: 2rem;
}
.back-link a {
color: var(--primary-blue);
text-decoration: none;
font-weight: 500;
transition: color 0.3s ease;
}
.back-link a:hover {
color: var(--secondary-blue);
}
</style>
</head>
<body>
<div class="login-container">
<div class="login-header">
<h1><i class="fas fa-church"></i> <?php echo get_site_title(); ?></h1>
<p>Welcome to the COP News Portal</p>
</div>
<?php if ($flash): ?>
<div class="alert alert-<?php echo $flash['type']; ?>">
<i class="fas fa-info-circle"></i> <?php echo $flash['message']; ?>
</div>
<?php endif; ?>
<?php if ($error): ?>
<div class="alert alert-error">
<i class="fas fa-exclamation-circle"></i> <?php echo $error; ?>
</div>
<?php endif; ?>
<?php if ($success): ?>
<div class="alert alert-success">
<i class="fas fa-check-circle"></i> <?php echo $success; ?>
</div>
<?php endif; ?>
<div class="form-tabs">
<button type="button" class="tab-button active" onclick="switchTab('login')">Login</button>
<button type="button" class="tab-button" onclick="switchTab('register')">Register</button>
</div>
<!-- Login Form -->
<div id="login-form" class="form-content active">
<form method="POST" action="">
<input type="hidden" name="action" value="login">
<div class="form-group">
<label for="login" class="form-label">Username or Email</label>
<input type="text" id="login" name="login" class="form-control"
value="<?php echo htmlspecialchars($_POST['login'] ?? ''); ?>"
placeholder="Enter your username or email" required>
</div>
<div class="form-group">
<label for="password" class="form-label">Password</label>
<input type="password" id="password" name="password" class="form-control"
placeholder="Enter your password" required>
</div>
<button type="submit" class="btn-login">
<i class="fas fa-sign-in-alt"></i> Login
</button>
</form>
</div>
<!-- Register Form -->
<div id="register-form" class="form-content">
<form method="POST" action="">
<input type="hidden" name="action" value="register">
<div class="form-group">
<label for="reg-name" class="form-label">Full Name</label>
<input type="text" id="reg-name" name="name" class="form-control"
value="<?php echo htmlspecialchars($_POST['name'] ?? ''); ?>"
placeholder="Enter your full name" required>
</div>
<div class="form-group">
<label for="reg-email" class="form-label">Email</label>
<input type="email" id="reg-email" name="email" class="form-control"
value="<?php echo htmlspecialchars($_POST['email'] ?? ''); ?>"
placeholder="Enter your email address" required>
</div>
<div class="form-group">
<label for="reg-username" class="form-label">Username</label>
<input type="text" id="reg-username" name="username" class="form-control"
value="<?php echo htmlspecialchars($_POST['username'] ?? ''); ?>"
placeholder="Choose a username" required>
</div>
<div class="form-group">
<label for="reg-password" class="form-label">Password</label>
<input type="password" id="reg-password" name="password" class="form-control"
placeholder="Create a password (min. 6 characters)" required>
</div>
<div class="form-group">
<label for="reg-confirm-password" class="form-label">Confirm Password</label>
<input type="password" id="reg-confirm-password" name="confirm_password" class="form-control"
placeholder="Confirm your password" required>
</div>
<button type="submit" class="btn-login">
<i class="fas fa-user-plus"></i> Create Account
</button>
</form>
</div>
<div class="back-link">
<a href="index.php"><i class="fas fa-arrow-left"></i> Back to Home</a>
</div>
</div>
<script>
function switchTab(tab) {
// Remove active class from all tabs and forms
document.querySelectorAll('.tab-button').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.form-content').forEach(form => form.classList.remove('active'));
// Add active class to selected tab and form
event.target.classList.add('active');
document.getElementById(tab + '-form').classList.add('active');
}
</script>
</body>
</html>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists