Diese Woche am beliebtesten

Vertiefendes Material

Mehrbenutzer KI Chat

Unser Dreamcodes Cafeteria Chat System Script bietet eine innovative, interaktive Art, mit einer KI wie mit einem alten Kumpel zu plaudern, direkt im Browser und in echter Cafeteria-Atmosphäre. Jeder Nutzer erhält einen eigenen „Tisch“ mit separatem Chat-Verlauf, der automatisch gespeichert wird, sodass Gespräche beim Neuladen erhalten bleiben.

Highlights:

  • Mehrbenutzer-fähig: Jeder Nutzer hat einen eigenen Chat, gespeichert über Session-ID.
  • Dynamische KI-Antworten: Die KI via OpenAI GPT API antwortet locker, umgangssprachlich und mit gelegentlichen Witzen.
  • Cafeteria-Design: Attraktives Hintergrundbild, abgerundete Chatblasen, responsive Oberfläche.
  • AJAX-basiert: Nachrichten erscheinen sofort, ohne die Seite neu zu laden.
  • Einfache Erweiterung: Emojis, längere Gespräche oder Admin-Panel können integriert werden.

Unser Script eignet sich ideal für Websites, Blogs oder Lernplattformen, um eine interaktive, persönliche Chat-Erfahrung zu schaffen. Nutzer können direkt und unkompliziert in den Dialog treten, während ihre Konversationen automatisch protokolliert werden.

<?php
session_start();

// API-Key und Speicher-Datei
$openai_api_key = 'DEIN_OPENAI_API_KEY';
$chatDir = 'chat_sessions';
if(!is_dir($chatDir)) mkdir($chatDir, 0777, true);

// eindeutiger Benutzer-Tisch
$sessionId = session_id();
$chatFile = "$chatDir/chat_$sessionId.json";

// Chat-Nachricht empfangen
if(isset($_POST['message'])){
    $userMessage = $_POST['message'];

    // GPT API Anfrage vorbereiten
    $data = [
        "model" => "gpt-3.5-turbo",
        "messages" => [
            ["role" => "system", "content" => "Du bist ein alter Kumpel im Café. Locker, umgangssprachlich, kurze Sätze, zwischendurch Witze, freundlich, lustig."],
            ["role" => "user", "content" => $userMessage]
        ],
        "temperature" => 0.8
    ];

    $ch = curl_init('https://api.openai.com/v1/chat/completions');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Authorization: Bearer '.$openai_api_key
    ]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    $result = curl_exec($ch);
    curl_close($ch);

    $res = json_decode($result, true);
    $reply = $res['choices'][0]['message']['content'] ?? "Hmm, da bin ich mir gerade nicht sicher...";

    // Chat lokal speichern
    $chatHistory = [];
    if(file_exists($chatFile)){
        $chatHistory = json_decode(file_get_contents($chatFile), true);
    }
    $chatHistory[] = ["role"=>"user","text"=>$userMessage];
    $chatHistory[] = ["role"=>"ai","text"=>$reply];
    file_put_contents($chatFile, json_encode($chatHistory, JSON_PRETTY_PRINT));

    echo json_encode(['reply'=>$reply]);
    exit;
}

// Verlauf abfragen
if(isset($_GET['load'])){
    $chatHistory = [];
    if(file_exists($chatFile)){
        $chatHistory = json_decode(file_get_contents($chatFile), true);
    }
    echo json_encode($chatHistory);
    exit;
}
?>

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dreamcodes - Cafeteria Chat – Dein Tisch</title>
<style>
body {
    font-family: Arial, sans-serif;
    background: url('cafeteria-bg.jpg') no-repeat center center fixed;
    background-size: cover;
    margin: 0;
    padding: 0;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}
#chat-container {
    background: rgba(255, 255, 255, 0.95);
    width: 400px;
    max-width: 90%;
    border-radius: 10px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
#chat-box {
    flex: 1;
    padding: 10px;
    overflow-y: auto;
    max-height: 500px;
}
.message { margin-bottom: 10px; line-height: 1.4; }
.user { text-align: right; }
.user .text { background: #007bff; color: white; display: inline-block; padding: 8px 12px; border-radius: 15px; }
.ai { text-align: left; }
.ai .text { background: #e0e0e0; color: black; display: inline-block; padding: 8px 12px; border-radius: 15px; }
#chat-form { display: flex; border-top: 1px solid #ccc; }
#chat-input { flex: 1; padding: 10px; border: none; outline: none; font-size: 14px; }
#chat-submit { padding: 10px 15px; border: none; background: #007bff; color: white; cursor: pointer; font-size: 14px; }
#chat-submit:hover { background: #0056b3; }
</style>
</head>
<body>

<div id="chat-container">
  <div id="chat-box"></div>
  <form id="chat-form">
    <input type="text" id="chat-input" placeholder="Schreib etwas..." autocomplete="off" required>
    <button type="submit" id="chat-submit">Senden</button>
  </form>
</div>
<div style="text-align:center; padding:10px; font-size:12px; color:#555; background:#f1f1f1; border-top:1px solid #ccc;">
  <p class="footer-note">Hinweis: Die Chatverläufe bleiben lokal gespeichert. Powered by <a href="https://www.dreamcodes.net" target="_blank" style="color:#007bff; text-decoration:none;">Dreamcodes</a>.</p>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(function() {
    const chatBox = $('#chat-box');

    function addMessage(sender, text){
        const msgDiv = $('<div class="message '+sender+'"><div class="text"></div></div>');
        msgDiv.find('.text').text(text);
        chatBox.append(msgDiv);
        chatBox.scrollTop(chatBox[0].scrollHeight);
    }

    // Chatverlauf laden
    $.getJSON('?load=1', function(data){
        if(data.length === 0){
            addMessage('ai', 'Hey! Dein Tisch ist bereit. Stell dir vor, wir sitzen gemütlich im Café.');
        } else {
            data.forEach(msg => addMessage(msg.role === 'user' ? 'user':'ai', msg.text));
        }
    });

    $('#chat-form').on('submit', function(e){
        e.preventDefault();
        const userInput = $('#chat-input').val().trim();
        if(!userInput) return;
        addMessage('user', userInput);
        $('#chat-input').val('');

        $.post('', { message: userInput }, function(data){
            addMessage('ai', data.reply);
        }, 'json');
    });
});
</script>

</body>
</html>
Dreamcodes Redaktion
Dreamcodes Redaktion
Jeder Inhalt auf Dreamcodes entsteht mit einem klaren Anspruch: geprüfte Praxis statt schneller Theorie. Was hier veröffentlicht wird, basiert auf Best Practices, echten Projekterfahrungen und technischem Verständnis, das über das Offensichtliche hinausgeht. Unser Ziel ist ein Fundament, auf dem du aufbauen kannst, nicht eines, das beim ersten produktiven Einsatz bricht. Wie du die Inhalte integrierst, absicherst und in deinen Kontext überträgst, liegt bei dir. Die fachliche Grundlage liefern wir, die Verantwortung für den Einsatz bleibt deine.
Vorheriges Tutorial
Nächstes Tutorial

Vielleicht einen Blick WERT?