Skip to content

Profile System

Overview

The profile system allows users to view and manage their personal information, including account details and preferences.

Features

  • View profile information
  • Update personal details
  • Change password
  • Manage account settings
  • Upload profile picture

Profile Management

Viewing Profile

Users can view their profile information including:

  • Username
  • Email address
  • Mobile number
  • Account status
  • Profile picture

Updating Profile

Users can update various aspects of their profile:

  1. Personal Information
    • Email address
    • Mobile number
    • Profile picture
  2. Security Settings
    • Password change
    • Account preferences

Security Features

  • Input validation for all updates
  • Password verification for sensitive changes
  • Secure file upload for profile pictures
  • XSS prevention
  • CSRF protection

User Interface

  • Responsive design
  • Intuitive layout
  • Clear feedback messages
  • Easy navigation

Profile Picture Management

  • Supported formats: JPG, PNG, GIF
  • Maximum file size: 2MB
  • Automatic resizing
  • Default avatar for new users

Error Handling

  • Clear error messages
  • Input validation feedback
  • File upload restrictions
  • Session management
  • User authentication system
  • File upload system
  • Database management
  • Session handling

Profile Page Documentation

Overview

The profile page (profile.php) serves as the public-facing page for each user, displaying their username, avatar, and social media links in a clean, modern interface.

Profile Interface

Public Profile View

Public ProfileThe public-facing profile page with social media links and custom styling

Profile Editing Interface

Edit ProfileThe profile editing interface where users can customize their details

Implementation Details

1. Initial Setup and Data Retrieval

php
<?php
session_start();
require_once "admin/pages/config.php";

$username = $_GET['user'];

// Fetch user settings
$stmt2 = $conn->prepare("SELECT * FROM settings WHERE username = ?");
$stmt2->bind_param("s", $username); 
$stmt2->execute();
$result_settings = $stmt2->get_result();

// Fetch user details
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result_user = $stmt->get_result();

Key Features:

  • Session initialization
  • Database connection setup
  • Secure parameter handling using prepared statements
  • Separate queries for user details and settings

2. User Validation and 404 Handling

php
if ($result_user->num_rows > 0) {
    $row_user = $result_user->fetch_assoc();
} else {
    header("Location: 404.html");
    exit();
}

Features:

  • User existence validation
  • Graceful handling of non-existent profiles
  • Clean redirect to 404 page
php
$social_links = [];
while ($row = $result_settings->fetch_assoc()) {
    $social_links[] = $row;
}

Features:

  • Array initialization for social links
  • Efficient data structure for link storage
  • Easy iteration for display

4. Visit Tracking Implementation

php
$ip_address = $_SERVER['REMOTE_ADDR'];
$profile_id = $row_user['id'];

$visit_stmt = $conn->prepare("INSERT INTO profile_visitors (profile_id, ip) VALUES (?, ?)");
$visit_stmt->bind_param("is", $profile_id, $ip_address);
$visit_stmt->execute();
$visit_stmt->close();

Features:

  • Visitor IP tracking
  • Profile visit logging
  • Prepared statement for security
  • Proper resource cleanup

5. HTML Structure and Meta Tags

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="shortcut icon" href="https://foras.ca/wp-content/uploads/2024/07/Logo_500x500.png" type="image/webp">
    <link rel="icon" href="https://foras.ca/wp-content/uploads/2024/07/cropped-Logo_100x100.png" type="image/webp">
    <link rel="canonical" href="https://foras.ca/Links">
    <title><?php echo htmlspecialchars($row_user['username']); ?></title>

Features:

  • Proper meta tag implementation
  • Responsive viewport settings
  • Favicon configuration
  • XSS prevention with htmlspecialchars
  • SEO optimization with canonical URL

6. Profile Display Section

html
<div id="background_div">
    <div class="page-full-wrap">
        <img class="display-image" src="https://foras.ca/wp-content/uploads/2024/07/Mazen_avatar.jpg" alt="User Avatar">
        <h2 class="page-title"><?php echo htmlspecialchars($row_user['username']); ?></h2>

Features:

  • Clean container structure
  • Responsive image display
  • Secure username output
  • Semantic HTML usage

7. Social Icons Section

php
<div class="flex-both-center">
    <?php foreach ($social_links as $link): ?>
        <div class="page-social">
            <a class="social-icon-anchor" href="<?php echo htmlspecialchars($link['linkURL']); ?>" target="_blank">
                <i class="<?php echo htmlspecialchars($link['iconClass']); ?>"></i>
            </a>
        </div>
    <?php endforeach; ?>
</div>

Features:

  • Flexible social icon layout
  • Dynamic icon rendering
  • Secure URL handling
  • External link safety with target="_blank"
php
<div class="mt-24">
    <?php foreach ($social_links as $item): ?>
        <div class="page-item-wrap">
            <a class="page-item-each" href="<?php echo htmlspecialchars($item['linkURL']); ?>" target="_blank">
                <i class="<?php echo htmlspecialchars($item['iconClass']); ?>"></i>
                <span class="item-title"><?php echo htmlspecialchars($item['linkName']); ?></span>
            </a>
        </div>
    <?php endforeach; ?>
</div>

Features:

  • Consistent link styling
  • Icon and text combination
  • XSS prevention
  • Responsive layout

Security Features

  1. SQL Injection Prevention

    • Prepared statements for all queries
    • Parameterized user input
    • Secure database handling
  2. XSS Prevention

    • htmlspecialchars for all output
    • Proper encoding of special characters
    • Secure handling of user data
  3. Resource Management

    php
    $stmt->close();
    $stmt2->close();
    $conn->close();
    • Proper closure of database connections
    • Statement cleanup
    • Resource optimization

Styling and UI

  1. External Resources

    html
    <link href="https://fonts.googleapis.com/css2?family=Balsamiq+Sans:wght@400;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <link rel="stylesheet" href="assets/css/style.css">
    • Google Fonts integration
    • Font Awesome icons
    • Custom styling
  2. Responsive Design

    • Mobile-first approach
    • Flexible layouts
    • Viewport optimization

Performance Optimization

  1. Resource Loading

    • Efficient CSS loading
    • Optimized image delivery
    • Minimal JavaScript usage
  2. Database Optimization

    • Prepared statement reuse
    • Efficient query structure
    • Proper indexing

Analytics Integration

  1. Visit Tracking
    • IP address logging
    • Profile visit counting
    • Analytics data collection

Error Handling

  1. User Not Found
    • 404 page redirection
    • Clean error handling
    • User-friendly messaging
  • User settings management
  • Social link administration
  • Profile customization
  • Analytics dashboard