Chatbox
ik heb de volgende code voor een chatbox, maar deze geeft ip-adressen als username weer. Kan iemand mij vertellen hoe je een zelf gekozen naam kan weergeven. Dus iemand moet eerst een naam opgegeven voordat hij kan chatten
De code:
$refresh = 6 ; // Pagina refresh in seconden
$max = 20 ; // Maximaal aantal opgeslagen berichten
$remain = 400 ; // Tijd dat berichten bewaard blijven
$file = "msg.txt" ; // Bestand waar berichten in worden opgeslagen
$user = $HTTP_SERVER_VARS['REMOTE_ADDR'] ;
$f = file($file) ;
$users = array($user) ;
$fp = fopen($file, "w") ;
if (!$fp) { die ('Can not write to file .') ; }
for ($i=0; isset($f[$i])||$i==0; $i++)
{
$e=explode('||', $f[$i]) ;
if ($e[2]=="\r\n" && !in_array($e[0], $users) && ( time() - $e[1] < $refresh*2 ) ) $users[]=$e[0] ;
if ($i==0) { fputs($fp, $user."||".time()."||\r\n") ;
if ( isset($HTTP_POST_VARS['msg']) ) fputs ($fp, $user."||".time()."||".str_replace("||", "", str_replace("\n", "", htmlspecialchars(stripslashes($HTTP_POST_VARS['msg']))))."\r\n") ; }
if ( ($e[0]!=$user && $e[2]=="\r\n") || ( $i<$max && ($e[1]+$remain)>time() && $e[2]!="\r\n") ) fputs($fp, $f[$i]) ;
}
fclose($fp) ;
if (isset($HTTP_GET_VARS['f1']))
{
$f2 = file($file) ;
echo("<html><head><title></title><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head>") ;
echo("<body text=#FFFF00><meta http-equiv='refresh' content='{$refresh}; url={$HTTP_SERVER_VARS['REQUEST_URI']}'>") ;
echo("<font color=#FFFF00>Online Users: ") ;
foreach($users as $u) echo "<font color=#FFFF00>".$u."</font> - " ;
echo "</font><hr>" ;
for($i=0; isset($f2[$i]) && $i<$max; $i++) {
$e=explode("||", $f2[$i]) ;
if ($e[2]!="\r\n") echo "<font color=#FFFF00>{$e[0]}</font> <font color=#FFFF00>:</font> {$e[2]}<br>\r\n" ;
}
die("</body></html>") ;
}
else
{
die("
<html><head><title>Chat</title><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<script><!--
function msg(){ document.m.msg.focus(); } // --></script>
</head>
<body align='center' onLoad='msg()'> <center>
<iframe src='?f1=1' width='95%' height='85%'></iframe><br>
<table width='95%'><tr><td align='center' width='100%'>
<form action='' method='post' name='m'>
Message : <input name='msg' size=60> <input type='submit' name='send' value='Send'>
<br />
</form>
</td></tr></table>
</body></html>
") ;
}
?>
Ik ben nog maar een beginner dus alle info is welkom
Gegroet
Jeroen
Quote:
... KNIP ... $user = $HTTP_SERVER_VARS['REMOTE_ADDR'] ; ... KNIP ...
Je zorgt dat dmv een form eerst $user gezet wordt naar de gekozen nickname, en tis done...
Edit: en op de zelfde pagina ook nog een hidden field zetten ofzo, dat de var $user ook elke keer wordt doorgegeven bij een refresh...
Gewijzigd op 08/10/2004 16:29:00 door Alfred -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
echo "<kies een nickname:>";
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";
echo "<p><input type=\"text\"name=\"user\"></p>\n";
echo "<input type=\"submit\"name=\"versturen\" value=\"Nickname versturen\">\n";
echo "</form>\n";
echo "U heeft de volgende nickname ingevoerd:\n";
echo $user;
if(isset($user)){
echo "<form action=\"chatbox.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"user\" value=\"$user\">\n";
echo "<input type=\"submit\" name=\"versturen\" value=\"Chatten !!!\">\n";
echo "</form>\n";
}
?>
echo "<kies een nickname:>";
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";
echo "<p><input type=\"text\"name=\"user\"></p>\n";
echo "<input type=\"submit\"name=\"versturen\" value=\"Nickname versturen\">\n";
echo "</form>\n";
echo "U heeft de volgende nickname ingevoerd:\n";
echo $user;
if(isset($user)){
echo "<form action=\"chatbox.php\" method=\"post\">\n";
echo "<input type=\"hidden\" name=\"user\" value=\"$user\">\n";
echo "<input type=\"submit\" name=\"versturen\" value=\"Chatten !!!\">\n";
echo "</form>\n";
}
?>
als je dan naar de chatbox gaat staat er keurig netjes Online Users: naam.die.je.ingevult.heb (zoasls het hoort dus) maar als je een bericht verzend, komt er allen de geschreven tekst te staan en niet de user die het geschreven heeft.