Einfache Talkbox - Website X5 Helpsite

Logo Schriftzug
Logo WSX5
Scan QR or Download Android App
Direkt zum Seiteninhalt

Einfache Talkbox

Scripte > Attachment

Eine kleine Talkbox zur Unterhaltung

Die Talkbox für eine schnelle Nachricht. Der Benutzer kann einen Namen und eine Nachricht eintragen, diese wird dann sofort auf der Seite angezeigt. Somit kann eine kurze Unterhaltung mit mehren Benutzern geführt werden.
Es kann eine Zeichen-Begrenzung von 'Name', 'Nachricht' und auch die Anzahl der Nachrichten festgelegt werden. Die Nachrichten werden automatsch aktualisiert.
Auch Emojis werden vom aktuellen Browser unterstützt. Diese (😁💔🤣💋🤟🌹😎👍 …) werden nativ dargestellt.
(Mozilla Firefox, Microsoft Edge und Google Chrome) unterstützt — Windows-Taste + . (Punkt)
Die Nachrichten werden in einer Datenbank-Datei 'talkbox.sqt'  mit SQLite gespeichert, es wird keine Verbindung zu einem Datenbank-Server benötigt.
ZIP-Datei in ein beliebiges Verzeichnis auf dem PC entpacken und das Verzeichnis "wsX5Obj" auf den Webserver in das Root-Verzeichnis kopieren. Nur den HTML-Code in den BODY-Bereich <body>.....</body> der aufrufende Datei einfügen.
Über die Datei 'talkbox.css' kann die Box der Homepage nach eigenen Bedürfnissen angepasst werden.
Die Datei "talkbox_admin.php" öffne mit einem Editor und trage Dein gewünschtes Admin Passwort ein (Standard: 0000).
Eine demo.html ist beigefügt, die zum Test in das Root-Verzeichnis des Webservers kopiert werden kann bzw. als Einbaubeispiel gedacht ist.
Ein Aufruf zum Test kann dann aber auch über "http://www.domain.tld/wsX5Obj/Obj120_0/talkbox.html" erfolgen.
Download Button
x runter geladen
In die Talkbox kann jeder Benutzer "alles mögliche" hineinschreiben. Deshalb sollten die Nachrichten der Benutzer regelmäßig kontrolliert und auch gelöscht werden.
Zum Löschen der Nachrichten rufe die Datei "talkbox_admin.php" auf oder nutze den Admin-Link (falls mit eingebaut). Damit die Datenbank-Datei nicht zu groß wird, sollten alte Nachrichten auch öfter gelöscht werden. Die Datei "talkbox.sqt" (Datenbank) darf nicht mit einem Texteditor bearbeitet werden, dadurch könnte die Datei unbrauchbar werden! Hierzu gibt es einen DB-Browser für SQL-Lite Dateien zur lokalen Installation: https://sqlitebrowser.org/dl/, bereis x runter geladen.
Code für den <BODY> Bereich
<div align="center" style="text-align: center; font-family: Verdana, Arial, Sans-Serif;">
<iframe
src="wsX5Obj/Obj120_0/talkbox.php" width="240" height="400" style="border: 2px solid #876835;">
</iframe>
<br>
<a href="wsX5Obj/Obj120_0/talkbox_admin.php" target="_blank"><small>Admin</small></a>
</div>
Code Datei "talkbox.php"
<?php
// Maximale Zeichen die der Benutzer eingeben darf
$maxZeichenName = 25; // 25
$maxZeichenNachricht = 125; // 125
// Maximale Anzahl der Nachrichten
$maxNachrichten = 25; // 25
// Nachrichten neu laden nach:
$sekunden = 10; // 10
// Pfad zur Datenbank
$datenbank = "talkbox.sqt";
// Datenbank-Datei erstellen
if (!file_exists($datenbank)) {
$db = new PDO('sqlite:' . $datenbank);
$db->exec("CREATE TABLE talk(
id INTEGER PRIMARY KEY,
name TEXT,
nachricht TEXT)");
} else {
// Verbindung
if (!isset($db)) {
$db = new PDO('sqlite:' . $datenbank);
}
}
// Eintragen und Lesen
if ($_SERVER["REQUEST_METHOD"] == "POST" ||
isset($_GET["lesen"])) {
if (isset($_POST["name"], $_POST["nachricht"])) {
$insert = $db->prepare("INSERT INTO talk( name, nachricht) VALUES (:name, :nachricht)");
$insert->execute([":name" => strip_tags($_POST["name"]), ":nachricht" => strip_tags($_POST["nachricht"])]);
}
$select = $db->query("SELECT name, nachricht FROM talk ORDER BY id DESC LIMIT " . $maxNachrichten);
$nachrichten = $select->fetchAll();
foreach ($nachrichten as $nachricht) {
$text = htmlspecialchars($nachricht["nachricht"], ENT_HTML5, 'UTF-8');
echo '<div><span class="Obj120_Benutzer">' . htmlspecialchars($nachricht["name"], ENT_HTML5, 'UTF-8') . '</span>: ' .
wordwrap($text, 45, "<br>\n", true) . '</div>';
}
exit;
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="talkbox.css"/>
<script>
"use strict";
var xhr = new XMLHttpRequest();
window.addEventListener("DOMContentLoaded", function() {
document.getElementById("talk").addEventListener("click", talk);
});
function talk() {
if (document.getElementById("Obj120_Name").value != "" &&
document.getElementById("Obj120_Text").value != "") {
var daten = new FormData(document.getElementsByName("Form")[0]);
xhr.open("POST", "talkbox.php");
xhr.send(daten);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE &&
xhr.status == 200) {
document.getElementById("Obj120_Name").value="";
document.getElementById("Obj120_Text").value="";
document.getElementById("Obj120_Nachrichten").innerHTML = xhr.responseText;
}
}
}
}
function get() {
xhr.open("GET", "talkbox.php" + "?lesen");
xhr.send(null);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE &&
xhr.status == 200) {
document.getElementById("Obj120_Nachrichten").innerHTML = xhr.responseText;
}
}
}
get();
window.setInterval("get()", (<?=$sekunden;?>*1000));
</script>
</head>
<body>
<form name="Form" id="Obj120">
<div id="Obj120_Caption">&#128490; Talkbox</div>
<div id="Obj120_Nachrichten"></div>
<input type="text" name="name" id="Obj120_Name" maxlength="<?=$maxZeichenName;?>" placeholder="Name">
&nbsp; &nbsp; <input class="Obj120_Button" type="button" value="&raquo" id="talk" title="Eintragen"><br>
<textarea name="nachricht" id="Obj120_Text" maxlength="<?=$maxZeichenNachricht;?>" placeholder="Nachricht"></textarea>
</form>
</body>
</html>
Code Datei "talkbox_admin.php"
<?php
// Passwort
$passwort = "0000";  // Passwort setzen
session_start();
// Passwort überprüfen
if (isset($_POST["passwort"])) {
if ($_POST["passwort"] == $passwort) {
$_SESSION["user"] = true;
}
}
// Abmelden
if (isset($_GET["logout"])) {
session_destroy();
header("Location: talkbox_admin.php");
}
// DB
$db = new PDO('sqlite:' . "talkbox.sqt");
$ausgabe = '';
// Löschen
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["option"])) {
$params = $_POST["option"];
$placeholder = implode(',', array_fill(0, count($params), '?'));
$delete = $db->prepare("DELETE FROM talk WHERE id IN (" . $placeholder . ")");
if ($delete->execute($params)) {
$ausgabe .= '<p>&#10004; Die Nachrichten wurden gelöscht.</p>';
}
}
}
// Formular ausgeben
if (isset($_SESSION["user"])) {
$ausgabe .= '<form method="post">';
$select = $db->query("SELECT id, name, nachricht FROM talk ORDER BY id DESC");
$nachrichten = $select->fetchAll();
foreach ($nachrichten as $nachricht) {
$ausgabe .= '<input type="checkbox" name="option[]" value="' . $nachricht["id"] . '" id="lbl' . $nachricht["id"] . '"> ';
$ausgabe .= '<label for="lbl' . $nachricht["id"] . '"><strong>' . $nachricht["name"] . ':</strong> ' . $nachricht["nachricht"] . '</label><br>';
}
$ausgabe .= '<br><input class="Obj120_Button" type="submit" value="Löschen" title="Ausgewählte Nachrichten löschen"> -
<input class="Obj120_Button" type="button" value="Abmelden"
onClick="window.location.href=\'talkbox_admin.php?logout\'" title="Admin abmelden">
</form>';
} else {
// Anmeldung
$ausgabe .= '<form method="post">
<label>Passwort: <input id="Obj120_Name" type="password" name="passwort" required="required"></label>
<input class="Obj120_Button" type="submit" value="&raquo;">
</form>';
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Talkbox - Admin</title>
<link rel="stylesheet" href="talkbox.css"/>
</head>
<body>
<fieldset>
<legend>Talkbox - Admin</legend>
<?=$ausgabe;?>
</fieldset>
</body>
</html>
Code Datei "talkbox.css"
html, body { padding: 0px; margin: 0px; background-color: #EEF6E9; }
form#Obj120 { width: 200px; margin: auto; padding: 10px; background-color: #EEF6E9; }
div#Obj120_Caption {
text-align: center;
font-family: Tahoma, Arial, Sans-Serif;
text-decoration: underline;
font-weight: bold;
color: #876835;
}
div#Obj120_Nachrichten {
width: 200px;
height: 200px;
margin: 10px 0 25px 0;
overflow: auto;
font-family: Arial, Tahoma, Sans-Serif;
font-size: 12px;
}
input#Obj120_Name { width: 140px; border: 1px solid #7c6031; transition: all 0.15s ease-in-out; padding: 3px; }
textarea#Obj120_Text {
width: 190px;
height: 80px;
border: 1px solid #876835;
transition: all 0.15s ease-in-out;
margin-top: 6px;
padding: 3px;
}
input#Obj120_Name:focus,
textarea#Obj120_Text:focus { box-shadow: 0 0 3px #5353A8; font-family: Arial, Tahoma, Sans-Serif; font-size: 12px; }
span.Obj120_Benutzer { color: #f00; }
fieldset { width: 450px; margin: auto; }
legend { color: #876835; font-weight: bold; margin-top: 40px; }
input[type=checkbox]:checked + label { color: #DF0000; }
.Obj120_Button {
color: #876835;
font-size: 14px;
font-weight: bold;
background-color: #EEF6E8;
border: 1px solid #876835;
border-radius: 3px;
padding: 1px 8px 1px 8px;
}
.Obj120_Button:hover { background-color: #B4DA9F; }

» nach oben «
Logo Host Europe
Button Spenden
🏠 © 2009 - 2024
Hosting by
Zurück zum Seiteninhalt