v1.incomplete2
This commit is contained in:
parent
1b66a017fa
commit
fc1839d4b8
34
cancel_subscription.php
Normal file
34
cancel_subscription.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
if (!isset($_SESSION['user_id'])) {
|
||||||
|
header('Location: login.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once 'db/config.php';
|
||||||
|
|
||||||
|
if (isset($_GET['user_service_id'])) {
|
||||||
|
$user_service_id = $_GET['user_service_id'];
|
||||||
|
$user_id = $_SESSION['user_id'];
|
||||||
|
|
||||||
|
try {
|
||||||
|
$pdo = db();
|
||||||
|
// Verify the user owns this subscription before cancelling
|
||||||
|
$stmt = $pdo->prepare("UPDATE user_services SET status = 'cancelled' WHERE id = ? AND user_id = ?");
|
||||||
|
$stmt->execute([$user_service_id, $user_id]);
|
||||||
|
|
||||||
|
if ($stmt->rowCount() > 0) {
|
||||||
|
$_SESSION['message'] = 'Subscription cancelled successfully.';
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = 'Could not cancel subscription. It might have been already cancelled or you do not have permission to perform this action.';
|
||||||
|
}
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$_SESSION['error'] = 'Database error: ' . $e->getMessage();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = 'Invalid request.';
|
||||||
|
}
|
||||||
|
|
||||||
|
header('Location: dashboard.php');
|
||||||
|
exit;
|
||||||
@ -9,6 +9,16 @@ require_once 'includes/header.php';
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="container mt-5">
|
<div class="container mt-5">
|
||||||
|
<?php
|
||||||
|
if (isset($_SESSION['message'])) {
|
||||||
|
echo "<div class='alert alert-success'>" . $_SESSION['message'] . "</div>";
|
||||||
|
unset($_SESSION['message']);
|
||||||
|
}
|
||||||
|
if (isset($_SESSION['error'])) {
|
||||||
|
echo "<div class='alert alert-danger'>" . $_SESSION['error'] . "</div>";
|
||||||
|
unset($_SESSION['error']);
|
||||||
|
}
|
||||||
|
?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<h1>Welcome to your Dashboard, <?php echo htmlspecialchars($_SESSION['user_name']); ?>!</h1>
|
<h1>Welcome to your Dashboard, <?php echo htmlspecialchars($_SESSION['user_name']); ?>!</h1>
|
||||||
@ -22,15 +32,16 @@ require_once 'includes/header.php';
|
|||||||
<?php
|
<?php
|
||||||
require_once 'db/config.php';
|
require_once 'db/config.php';
|
||||||
$pdo = db();
|
$pdo = db();
|
||||||
$stmt = $pdo->prepare("SELECT s.name, s.description FROM services s JOIN user_services us ON s.id = us.service_id WHERE us.user_id = ? AND us.status = 'active'");
|
$stmt = $pdo->prepare("SELECT s.name, s.description, us.id as user_service_id FROM services s JOIN user_services us ON s.id = us.service_id WHERE us.user_id = ? AND us.status = 'active'");
|
||||||
$stmt->execute([$_SESSION['user_id']]);
|
$stmt->execute([$_SESSION['user_id']]);
|
||||||
$user_services = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
$user_services = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
if (count($user_services) > 0) {
|
if (count($user_services) > 0) {
|
||||||
echo "<ul class='list-group'>";
|
echo "<ul class='list-group'>";
|
||||||
foreach ($user_services as $service) {
|
foreach ($user_services as $service) {
|
||||||
echo "<li class='list-group-item'>";
|
echo "<li class='list-group-item d-flex justify-content-between align-items-center'>";
|
||||||
echo "<strong>" . htmlspecialchars($service['name']) . "</strong>: " . htmlspecialchars($service['description']);
|
echo "<div><strong>" . htmlspecialchars($service['name']) . "</strong>: " . htmlspecialchars($service['description']) . "</div>";
|
||||||
|
echo "<a href='cancel_subscription.php?user_service_id=" . $service['user_service_id'] . "' class='btn btn-danger btn-sm' onclick='return confirm("Are you sure you want to cancel this subscription?")'>Cancel</a>";
|
||||||
echo "</li>";
|
echo "</li>";
|
||||||
}
|
}
|
||||||
echo "</ul>";
|
echo "</ul>";
|
||||||
|
|||||||
@ -68,11 +68,14 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="dashboard.php">Dashboard</a>
|
<a class="nav-link" href="dashboard.php">Dashboard</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link" href="#">Hi, <?php echo htmlspecialchars($_SESSION['user_name']); ?></a>
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
</li>
|
Hi, <?php echo htmlspecialchars($_SESSION['user_name']); ?>
|
||||||
<li class="nav-item">
|
</a>
|
||||||
<a class="nav-link" href="logout.php">Logout</a>
|
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
<li><a class="dropdown-item" href="profile.php">Profile</a></li>
|
||||||
|
<li><a class="dropdown-item" href="logout.php">Logout</a></li>
|
||||||
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
|||||||
72
profile.php
Normal file
72
profile.php
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
require_once 'includes/header.php';
|
||||||
|
require_once 'db/config.php';
|
||||||
|
|
||||||
|
if (!isset($_SESSION['user_id'])) {
|
||||||
|
header('Location: login.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user_id = $_SESSION['user_id'];
|
||||||
|
|
||||||
|
$message = '';
|
||||||
|
$error = '';
|
||||||
|
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
$username = $_POST['username'];
|
||||||
|
$email = $_POST['email'];
|
||||||
|
|
||||||
|
if (empty($username) || empty($email)) {
|
||||||
|
$error = 'Username and email are required.';
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
$stmt = db()->prepare("UPDATE users SET username = ?, email = ? WHERE id = ?");
|
||||||
|
$stmt->execute([$username, $email, $user_id]);
|
||||||
|
$_SESSION['user_name'] = $username;
|
||||||
|
$message = 'Profile updated successfully!';
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
$error = 'Error updating profile: ' . $e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$stmt = db()->prepare("SELECT * FROM users WHERE id = ?");
|
||||||
|
$stmt->execute([$user_id]);
|
||||||
|
$user = $stmt->fetch();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="container mt-5">
|
||||||
|
<h1>User Profile</h1>
|
||||||
|
|
||||||
|
<?php if ($message): ?>
|
||||||
|
<div class="alert alert-success">
|
||||||
|
<?php echo $message; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if ($error): ?>
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<?php echo $error; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Edit Your Information</h5>
|
||||||
|
<form action="profile.php" method="POST">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="username" class="form-label">Username</label>
|
||||||
|
<input type="text" class="form-control" id="username" name="username" value="<?php echo htmlspecialchars($user['username']); ?>" required>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="email" class="form-label">Email address</label>
|
||||||
|
<input type="email" class="form-control" id="email" name="email" value="<?php echo htmlspecialchars($user['email']); ?>" required>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary">Update Profile</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php require_once 'includes/footer.php'; ?>
|
||||||
Loading…
x
Reference in New Issue
Block a user