setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ایجاد جداول $db->exec("CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE, password TEXT )"); $db->exec("CREATE TABLE IF NOT EXISTS chats ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, role TEXT, content TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )"); } catch (PDOException $e) { die("خطا در اتصال به پایگاه داده: " . htmlspecialchars($e->getMessage())); } // خروج کاربر if (isset($_GET['logout'])) { session_destroy(); header("Location: index.php"); exit; } $error = ''; $success = ''; // ========================================== // پردازش فرم‌ها (ثبت‌نام، ورود، ارسال پیام) // ========================================== if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; // ۱. ثبت‌نام if ($action === 'register') { $username = trim($_POST['username'] ?? ''); $password = $_POST['password'] ?? ''; if (empty($username) || empty($password)) { $error = 'لطفاً تمامی فیلدها را پر کنید.'; } else { $hashed = password_hash($password, PASSWORD_DEFAULT); try { $stmt = $db->prepare("INSERT INTO users (username, password) VALUES (?, ?)"); $stmt->execute([$username, $hashed]); $success = 'ثبت‌نام با موفقیت انجام شد. اکنون وارد شوید.'; } catch (Exception $e) { $error = 'نام کاربری قبلاً ثبت شده است.'; } } } // ۲. ورود elseif ($action === 'login') { $username = trim($_POST['username'] ?? ''); $password = $_POST['password'] ?? ''; $stmt = $db->prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$username]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user && password_verify($password, $user['password'])) { $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; header("Location: index.php"); exit; } else { $error = 'نام کاربری یا رمز عبور اشتباه است.'; } } // ۳. ارسال پیام به هوش مصنوعی elseif ($action === 'ask' && isset($_SESSION['user_id'])) { $userPrompt = trim($_POST['message'] ?? ''); $selectedModel = $_POST['model'] ?? 'gpt-4o-mini'; if (!empty($userPrompt)) { // ذخیره پیام کاربر $stmt = $db->prepare("INSERT INTO chats (user_id, role, content) VALUES (?, 'user', ?)"); $stmt->execute([$_SESSION['user_id'], $userPrompt]); // ارتباط با AvalAI API $payload = [ 'model' => $selectedModel, 'messages' => [ ['role' => 'user', 'content' => $userPrompt] ] ]; $ch = curl_init(API_ENDPOINT); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE), CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: Bearer ' . AVALAI_API_KEY ], CURLOPT_TIMEOUT => 60 ]); $response = curl_exec($ch); $result = json_decode($response, true); curl_close($ch); $aiReply = $result['choices'][0]['message']['content'] ?? 'خطا در دریافت پاسخ از هوش مصنوعی.'; // ذخیره پاسخ هوش مصنوعی $stmt = $db->prepare("INSERT INTO chats (user_id, role, content) VALUES (?, 'assistant', ?)"); $stmt->execute([$_SESSION['user_id'], $aiReply]); header("Location: index.php"); exit; } } } // دریافت تاریخچه پیام‌های کاربر $history = []; if (isset($_SESSION['user_id'])) { $stmt = $db->prepare("SELECT * FROM chats WHERE user_id = ? ORDER BY created_at ASC"); $stmt->execute([$_SESSION['user_id']]); $history = $stmt->fetchAll(PDO::FETCH_ASSOC); } ?> پنل هوشمند چت‌بات

ورود / ثبت‌نام

خوش آمدید، خروج

هنوز پیامی ندارید. گفتگو را شروع کنید!