Ich habe folgende File: Chat.php
Nun will ich das er aus meinem Membereich die Namen auslie´t, ich habe es schonmal versucht anhand der Session uid die ich mit dem Login habe die Namen auslesen zu lassen und dann an den Chat zu übergeben. an dieser Stelle ist das geregelt welcher Name benutzt wird:
Wenn ich da jetzt Statt User, Hallo eingeb funktioniert der Chat noch, wenn ich nun meine MySQL ausgabe da einfüge ($row['username']) dann bleibt der Chat bei Connecting..... stehen.
Kann mir wer nen Tipp geben? habe auch schon die ausgabe anders definiert und es funktioniert nicht... auch schon bei der Chat Session selber statt User_ID uid eingetragen aber i-wie ist es verhext...
hier wichtige Daten:
Mein Userbereich hat flgende Userid Session $_Session['uid']
meine MySQL Datenbank hat folgende Struktur:
user.sql:
Vielen Dank schon mal!
Mfg Raage
PHP:
<?php
error_reporting(0);
session_start();
header('Cache-control: private'); // IE6 fix
header("Content-Type: text/html; charset=utf-8");
if (!isset($_SESSION['USER_ID'])) $_SESSION['USER_ID'] = rand(1, 24);
$USER_ID = $_SESSION['USER_ID'];
session_write_close();
ob_flush();
flush();
$fn = 'chat.txt';
$read = &$_GET['r'];
if (isset($read)) {
if (!file_exists($fn)) {
touch($fn);
chmod($fn, 0644);
}
if ($read == 0) chat_write('<E>');
ignore_user_abort(true);
$i = 0;
while (true) {
$f = fopen($fn, 'r');
flock($f, 2);
$offset = 0;
$offset = trim(fgets($f));
if ($offset > $read) break;
flock($f, 3);
fclose($f);
@set_time_limit(0);
if ($i > 20) sleep(10);
else sleep(3);
echo "\n";
ob_flush();
flush();
if (connection_status() != 0) {
chat_write('<L>');
exit();
}
$i++;
}
while ($s = fgets($f)) {
echo utf8_encode($s);
if ($offset <= ++$read) break;
}
flock($f, 3);
fclose($f);
exit();
}
function chat_write($write) {
global $USER_ID, $fn;
$maxlines = 35;
if (trim($write) == '') return;
if (!file_exists($fn)) {
touch($fn);
chmod($fn, 0644);
}
$f = fopen($fn, 'r+');
flock($f, 2);
$offset = 0;
fscanf($f, "%s\n", $offset);
$offset++;
$i = 0;
$chat = '';
while (($i < $maxlines) && ($s = fgets($f))) {
$chat .= $s;
$i++;
}
$time = date('H:i:s');
$js = "cs($offset,$USER_ID,'$time','User','$write','');\n";
fseek($f, 0);
ftruncate($f, 0);
fwrite($f, "$offset\n");
fwrite($f, $js);
fwrite($f, $chat);
flock($f, 3);
fclose($f);
return $js;
}
function chat_delete($delete) {
global $fn;
if ($delete == '') exit();
if (!file_exists($fn)) {
touch($fn);
chmod($fn, 0644);
}
$f = fopen($fn, 'r+');
flock($f, 2);
$offset = 0;
fscanf($f, "%s\n", $offset);
$chat = '';
$i = 0;
while ($s = fgets($f)) {
$s = str_replace("'$delete'", "''", $s);
$chat .= $s;
$i++;
}
fseek($f, 0);
ftruncate($f, 0);
fwrite($f, "$offset\n");
fwrite($f, $chat);
flock($f, 3);
fclose($f);
}
$write = &$_POST['w'];
if (isset($write)) {
if ($write == '') exit();
$write = stripslashes($write);
$write = htmlspecialchars($write, ENT_QUOTES);
$write = addslashes($write);
if (strpos($write, '/del ') === 0) {
$delete = str_replace('/del ', '', $write);
chat_delete($delete);
exit();
}
$lines = wordwrap($write, 100, "\n", true);
$lines = explode("\n", $lines);
foreach ($lines as &$line) {
echo utf8_encode(chat_write($line));
}
exit();
}
?>
var lines = 35;
var title = '';
var offset = 0;
var messages = new Array();
var message = document.getElementById('message');
var chat = document.getElementById('chat');
var tmrRead = setTimeout('chat_read();', 300);
function request_write(url, post) {
r = false;
if (window.XMLHttpRequest) {
r = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
r = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
r = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
}
}
}
if (!r) return false;
r.onreadystatechange = alert_write;
if (post == null) {
r.open('GET', url, true);
r.send(null);
} else {
r.open('POST', url, true);
r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
r.send(post);
}
}
function alert_write() {
try {
if ((r.readyState == 4) && (r.status == 200)) parse(r.responseText);
} catch(e) {
}
}
function request_read(url, post) {
r2 = false;
if (window.XMLHttpRequest) {
r2 = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
r2 = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
r2 = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
}
}
}
if (!r2) return false;
r2.abort();
r2.onreadystatechange = alert_read;
if (post == null) {
r2.open('GET', url, true);
r2.send(null);
} else {
r2.open('POST', url, true);
r2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
r2.send(post);
}
}
function alert_read() {
clearTimeout(tmrRead);
try {
if ((r2.readyState == 4) && (r2.status == 200)) {
parse(r2.responseText);
tmrRead = setTimeout('chat_read();', 30);
}
} catch(e) {
tmrRead = setTimeout('chat_read();', 3000);
}
}
function chat_read() {
clearTimeout(tmrRead);
request_read('chat.php?r='+offset, null);
}
function keyup(e) {
if (window.event) k = window.event.keyCode;
else if (e) k = e.which;
else return true;
if (k == 13) chat_write();
}
function chat_display() {
html = '';
i = 0;
while ((i < lines) && (i < offset)) {
h = offset-i;
if (messages[h]) html = messages[h] + html;
i++;
}
chat.innerHTML = html;
if (title != '') {
title = title.replace(/&/g, '&');
title = title.replace(/"/g, '"');
title = title.replace(/'/g, '\'');
title = title.replace(/</g, '<');
title = title.replace(/>/g, '>');
document.title = title + ' - Chat by WebTemp.org';
}
}
function chat_write() {
request_write('chat.php', 'w='+escape(message.value));
message.value = '';
}
function cs(o, i, t, u, m, c) {
if (m == '<E>') {
if (u != '') messages[o] = '<span id="C'+i+'">['+t+'] * '+u+' has entered the chat *</span><br />';
} else if (m == '<L>') {
if (u != '') messages[o] = '<span id="C'+i+'">['+t+'] * '+u+' has left the chat *</span><br />';
} else {
if (u != '') {
u += ':';
spaces = 5 - u.length;
for (j = 0; j < spaces; j++) u += " ";
u += ' ';
}
if (title == '') title = m;
m = m.replace(/ /g, ' ');
messages[o] = '<span id="C'+i+'">['+t+'] '+u+'<b>'+m+'</b></span><br />';
}
if (o > offset) {
offset = o;
window.focus();
message.focus();
}
}
function parse(s) {
if (s != '') {
s = unescape(s);
eval(s);
chat_display();
}
}
Nun will ich das er aus meinem Membereich die Namen auslie´t, ich habe es schonmal versucht anhand der Session uid die ich mit dem Login habe die Namen auslesen zu lassen und dann an den Chat zu übergeben. an dieser Stelle ist das geregelt welcher Name benutzt wird:
PHP:
$js = "cs($offset,$USER_ID,'$time','User','$write','');\n";
Wenn ich da jetzt Statt User, Hallo eingeb funktioniert der Chat noch, wenn ich nun meine MySQL ausgabe da einfüge ($row['username']) dann bleibt der Chat bei Connecting..... stehen.
Kann mir wer nen Tipp geben? habe auch schon die ausgabe anders definiert und es funktioniert nicht... auch schon bei der Chat Session selber statt User_ID uid eingetragen aber i-wie ist es verhext...
hier wichtige Daten:
Mein Userbereich hat flgende Userid Session $_Session['uid']
meine MySQL Datenbank hat folgende Struktur:
user.sql:
Code:
`id` int(11) NOT NULL auto_increment,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`email` varchar(255) NOT NULL,
`name` varchar(64) NOT NULL,
`icq` varchar(16) NOT NULL,
`admin` int(11) NOT NULL default '0',
`time` int(15) NOT NULL default '0',
`msn` varchar(45) NOT NULL,
`hobbie` text NOT NULL,
`lieblingsfaecher` text NOT NULL,
`hassfaecher` text NOT NULL,
`klasse` varchar(3) NOT NULL,
`schule` text NOT NULL,
`avatarid` int(8) NOT NULL,
`online` int(2) default NULL,
PRIMARY KEY (`id`)
Vielen Dank schon mal!
Mfg Raage