Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „PHP Chat“

dataworld

Nicht mehr ganz neu hier

Hi@all,
sorry wenn es dieses Thema schon gibt aber ich hab einfach nix gefunden...

Zu meinem problem: Ich programmier gerade eine kleine Community und da will ich einen Chat reinbauen. Der eine User sieht zum Beispiel das der andere online ist und klickt danach auf einen Link "Zum Chatten einladen". Wenn er akzeptiert öffnet sich der Chat im selben Fenster (Also kein neues Tab oder so). Die User können also miteinander schreiben und trotzdem auf der Website weitersurfen. Es müssen nur 2 User miteinander reden können. Channels und so brauch ich nicht.

Ich hab schon von Ajax gehört aber mit dem kenn ich mich nicht so aus. Wie könnte man sowas also in PHP realisieren?
 

blackout

Schaf im Wolfspelz

AW: PHP Chat

Mit reinem PHP geht sowas nicht, denn ein Chat benötigt eine kontinuierliche aktualisierung der Seite (oder zumindest dann wenn eine neue Nachricht gesendet wurde), und das ist weder per HTML noch per PHP möglich. JavaScript wirst du auf jeden Fall brauchen, einen vernünftigen Chat wirst du aber nicht ohne XMLHttpRequests (von RTL2 auch AJAX genannt) hinbekommen.
 

blackout

Schaf im Wolfspelz

AW: PHP Chat

Wenn du schon PHP kannst ist JavaScript/XmlHttpRequest recht einfach zu lernen, ein Tutorial dafür kenn ich aber nicht. Es sollten aber genug im Umlauf sein.
Ich hab's mir aus nem Buch beigebracht, "Learning jQuery", welches sich gleich auch noch mit jQuery selbst beschäftigt, ein ziemlich praktisches Framework, welches einem das DOM-Rumgeschreibsel von JavaScript ziemlich vereinfacht.
 

dataworld

Nicht mehr ganz neu hier

AW: PHP Chat

Danke für die schnelle Antwort. PHP kann ich und JavaScript lern ich eigentlich gerade habe aber von Xml in verbindung mit Javascript noch nie was gehört. Aber Mr. Google wirds schon wissn ;)
 

Duddle

Posting-Frequenz: 14µHz

AW: PHP Chat

Ich hatte da mal vor einem Jahr was rudimentäres geschrieben (hauptsächlich der Übung wegen). Vielleicht hilft es dir ja, aber nicht vergessen: durchlesen und verstehen was genau passiert, nicht einfach übernehmen, sonst lernst du es ja nicht.

chat.html:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-strict.dtd">
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
	<head>
		<title>Chat</title>
		<script type="text/javascript">
			//<![CDATA[
var httpRequest = false;
function newhttpRequest()
{
	if(window.XMLHttpRequest)  // Mozilla, Safari, Opera, MS IE 7, ...
		httpRequest = new XMLHttpRequest();
	else if(window.ActiveXObject) { // MS IE 5, 6
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}
	return httpRequest;
}
function getData() {
	var ladeanzeige = document.getElementById('ladeanzeige');
	ladeanzeige.innerHTML = "(Lade...)";
	if(!httpRequest) httpRequest = newhttpRequest();
	if(httpRequest)
	{
		httpRequest.open("GET","chat.php");
		httpRequest.onreadystatechange = function () {
			if(httpRequest.readyState == 4 && httpRequest.status==200)
			{
				document.getElementById('chatfenster').innerHTML = httpRequest.responseText;
				ladeanzeige.innerHTML = "";
			}
		}
		httpRequest.send(null);
	}
	window.setTimeout("getData()", 4500);
}

function sendData(Daten) {
	if(!httpRequest) httpRequest = newhttpRequest();
	if(httpRequest)
	{
		httpRequest.open("POST", "chat.php", true);
		httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		httpRequest.onreadystatechange = function () {
			if(httpRequest.readyState == 4 && httpRequest.status==200)
			{
				document.getElementById('chatzeile').value ="";
			}
		}

		httpRequest.send(Daten);
	}
}

//]]>
</script>
<style type="text/css">
	body { margin: 0; padding: 0; background: #333; color:white;}
	#chatfenster { overflow:hidden; width: 100%; height: 500px; color: white; }
	#footer { position: absolute; bottom: 0px; left:0; width: 94%; background: #777; padding:2em;}
	.chatausgabe { margin: 0px; padding: 0px; height:2em;	 } 
</style>
</head>
<body onload="getData()">
	<h1>Chat</h1>

	<div id="chatfenster"></div>
	<p id="ladeanzeige"></p>
	<div id="footer">
		<form action="chat.html" onsubmit="sendData('text=' + document.getElementById('chatzeile').value); return false;">
			<input type="string" name="text" size="90" id="chatzeile" />
			<input type="submit" value="Abschicken" />
		</form>
	</div>
</body>
</html>

chat.php:
PHP:
<?php
//Datenbankverbindung herstellen
include("funktionen_db.php");
connecttodb();

if(isset($_POST['text']))
{ //neuer Eintrag
	$text = mysql_real_escape_string($_POST['text']);
	$ip = $_SERVER['REMOTE_ADDR'];
	$mittelwort = Array("schreibt",
		"meint",
		"sagt",
		"denkt");

	$text = $ip." ".$mittelwort[rand(0,count($mittelwort)-1)].": <strong>".$text."</strong>";
	$sql = "INSERT INTO `chat` (text)
		VALUES ('".$text."')";
	mysql_query($sql) or die(mysql_error());
}
else
{ //Ausgabe
	$sql = "SELECT *
		FROM `chat`
		ORDER BY id DESC";
	$result = mysql_query($sql) or die(mysql_error());

	while($reihe = mysql_fetch_assoc($result))
	{
		$farbe = "111";
		if($reihe['id']%2) $farbe = "555";

		echo "<p class='chatausgabe' style='background: #".$farbe.";'>"
			.$reihe['text']
			."</p>";
	}
}
mysql_close();
?>

Voraussetzung für obiges ist eine bestehende DB-Verbindung (bei mir in funktionen_db.php realisiert) und eine Tabelle namens "chat" mit den Feldern "id" und "text".

Duddle
 

dataworld

Nicht mehr ganz neu hier

AW: PHP Chat

Danke, werd mich mal durcharbeiten. der PHP teil ist ja noch ganz einfach, aber den Javascript teil werd ich mir etwas länger anschauen müssen ^^.

1 Frage hab ich noch:
was machen diese Zeilen in der chat.html?

HTML:
if(window.XMLHttpRequest)  // Mozilla, Safari, Opera, MS IE 7, ...
		httpRequest = new XMLHttpRequest();
 
Zuletzt bearbeitet:

blackout

Schaf im Wolfspelz

AW: PHP Chat

IE und Opera/FF haben unterschiedliche Implementierungen von XmlHttpRequests. Die Objekte selbst haben die gleichen Methoden, werden aber anders initialisiert.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.158
Beiträge
2.581.869
Mitglieder
67.223
Neuestes Mitglied
Desiree
Oben