<?php
// ------------------------------------------------------------
//  چت‌روم ساده – PHP 8.3 با ذخیره پیام‌ها در فایل متنی
//  Author: ویرا (مدل درنا)
//  توضیحات: یک فایل PHP فقط، با ذخیره پیام‌ها در فایل متنی
// ------------------------------------------------------------

// تنظیمات پایه
header('Content-Type: text/html; charset=utf-8');
session_start();

// مسیر فایل ذخیره پیام‌ها (فایل متنی)
define('CHAT_FILE', __DIR__ . '/messages.txt');

// ایجاد فایل messages.txt در صورت عدم وجود
if (!file_exists(CHAT_FILE)) {
    touch(CHAT_FILE);
}

// ---------- تابع برای ذخیره پیام ----------
function saveMessage(string $user, string $msg): void
{
    $time = date('Y-m-d H:i:s');
    $line = $time . ' ' . $user . ': ' . $msg . PHP_EOL;

    // افزودن به انتهای فایل (قفل‌گذاری برای جلوگیری از تداخل)
    file_put_contents(CHAT_FILE, $line, FILE_APPEND | LOCK_EX);
}

// ---------- تابع برای دریافت پیام‌ها ----------
function loadMessages(int $limit = 20): array
{
    if (!file_exists(CHAT_FILE)) {
        return [];
    }

    $lines = file(CHAT_FILE, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $lines = array_slice($lines, -$limit);

    $messages = [];
    foreach ($lines as $line) {
        $parts = explode(' ', $line, 3);
        if (count($parts) === 3) {
            $time = $parts[0];
            $user = $parts[1];
            $msg = $parts[2];
            $messages[] = [
                'time' => $time,
                'user' => $user,
                'msg' => $msg
            ];
        }
    }
    return $messages;
}

// ---------- ورود کاربر ----------
if (isset($_POST['username']) && $_POST['username'] !== '') {
    // نام کاربری را در سشن ذخیره می‌کنیم
    $_SESSION['username'] = trim($_POST['username']);
    // ریدایرکت برای جلوگیری از ارسال مجدد فرم هنگام رفرش صفحه
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit;
}

// ---------- ارسال پیام ----------
if (isset($_POST['message']) && $_POST['message'] !== '' && isset($_SESSION['username'])) {
    $user = $_SESSION['username'];
    $msg  = trim($_POST['message']);

    // جلوگیری از اسکریپت‌نویسی ساده
    $msg = htmlspecialchars($msg, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');

    saveMessage($user, $msg);

    // ریدایرکت مجدد برای پاک کردن فیلد ورودی
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit;
}

// -----------------------------------------------------------------
// نمایش صفحه HTML
?>
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>چت‌روم ساده</title>
    <style>
        body {font-family: 'Tahoma', Arial, sans-serif; background-color: #f9f9f9; margin: 0; padding: 0;}
        .container {max-width: 800px; margin: 20px auto; background-color: #fff; border: 1px solid #ddd; padding: 15px;}
        .chat-box {height: 400px; overflow-y: auto; border: 1px solid #ccc; padding: 10px; background-color: #fafafa;}
        .msg {margin: 5px 0;}
        .msg span.time {color: #777; font-size: 0.85em; margin-left: 5px;}
        .msg span.user {font-weight: bold; margin-right: 5px;}
        .form {margin-top: 15px;}
        input[type=text] {width: 80%; padding: 5px;}
        input[type=submit] {padding: 5px 10px;}

        /* ریسپانسیو */
        @media (max-width: 600px) {
            .container {padding: 10px;}
            input[type=text] {width: 70%;}
        }
    </style>
</head>
<body>
<div class="container">
    <h2>چت‌روم ساده</h2>

<?php if (!isset($_SESSION['username'])): ?>
    <!-- فرم ورود -->
    <form method="post">
        <label>نام کاربری خود را وارد کنید:</label><br>
        <input type="text" name="username" required autocomplete="off">
        <input type="submit" value="ورود">
    </form>
<?php else: ?>
    <p>سلام <strong><?php echo htmlspecialchars($_SESSION['username']); ?></strong>! خوش آمدید.</p>

    <div class="chat-box" id="chatBox">
        <?php
        $messages = loadMessages(20); // می‌توانید تعداد دلخواه را تنظیم کنید
        foreach ($messages as $m):
        ?>
            <div class="msg">
                <span class="user"><?php echo htmlspecialchars($m['user']); ?>:</span>
                <span class="text"><?php echo nl2br(htmlspecialchars($m['msg'])); ?></span>
                <span class="time"><?php echo $m['time']; ?></span>
            </div>
        <?php endforeach; ?>
    </div>

    <!-- فرم ارسال پیام -->
    <div class="form">
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
            <input type="text" name="message" placeholder="پیام خود را بنویسید..." required>
            <input type="submit" value="ارسال">
        </form>
    </div>
<?php endif; ?>
</div>
</body>
</html>