Archief - PhP: Chatbox

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

50Euro

Legacy Member
Ik wou dit gewoon met jullie delen want dit lijkt me goed en handig...

Hier link..
Voorbeeld..
Al lijken me er wel nog fouten in te staan. (Niet alles blijft erop staan..)

Kent iemand andere scripts van een chatbox?

Hier nog 1..

Irtimid2001

Legacy Member
wreed scriptje :niceone: , kheb em al wa zitten aanpassen zoda'k op mijne site me die session username werk, dage dus ni onder nen andere naam kunt typen. Waar da'k nu nog ees ga naar zien is dage iets kunt doorsturen door op enter te duwen, want altijd op say duwen is ni echt gemakkelijk

DarkBone

Legacy Member
Eigenlijk valt dit meer onder de noemer JavaScript dan PHP hoor. PHP wordt enkel gebruikt om de textfile uit te lezen. Maar de echte chatfunctionaliteit wordt bekomen via JavaScript, meerbepaald het XMLhttpRequest object.

Irtimid2001

Legacy Member
@Darkbone: idd :p

Euhm, zou iemand mij ees kunnen zeggen hoe ge die onKeypress zodanig zet da, als ge op enter duwt, ge u bijdrage toevoegd. Kheb al zitten zoeken en knoeien me die keycode = 13, ma da wilt echt ni werken :help: :oink:
Kben ni zo echt ne krak in javascript, 'k kan beter me php werken :)
Dees is de code waarin da'k wa zitten aanpassen heb
Code:
<?php session_start(); ?>
<html>
<link rel="stylesheet" type="text/css" href="../../stylesheet.css"/>
<head>
<title>chatbox</title>
</head>
<body>
<h1>chat-pagina</h1>
<?
if (!isset($_SESSION["username"])){
	$tekst = "<h3>U hebt geen toegang meer tot deze pagina, u kunt <a href=\"../login.php\">hier</a>  inloggen.</h3>";
	echo($tekst);
}else{
?>
<script language="javascript">
var xmlhttp=false;
/*
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
}
*/

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}
timer = 6000; //iedere 5 seconden refreshen

function say(value)
{
    name = document.getElementById('name').value;
    xmlhttp.open("GET", "chat.php?text="+value+"&name="+name,true);//method, target, async (set always true!)
    
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            document.getElementById('chatwindow').innerHTML = xmlhttp.responseText;
        }
    }
    
    xmlhttp.send(null);
    timer = 6000;
    counter();
}

function update()
{
    xmlhttp.open("GET", "chat.php",true);//method, target, async (set always true!)
    
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            document.getElementById('chatwindow').innerHTML = xmlhttp.responseText;
        }
    }
    
    xmlhttp.send(null);
    timer = 6000;
    counter();
}

function counter()
{
    if(timer == 0)
    {
        update();
    }
    else
    {
        timer = timer - 1000;
        setTimeout("counter()", 1000);
    }
}

function hasvalue(value)
{
    if(value != "")
    {
        document.getElementById('submitbutton').disabled = false;
    }
    else
    {
        document.getElementById('submitbutton').disabled = true;
    }
}
</script>
<form name="ourform">
<input type="hidden" id="name" name="name" style="width: 600px;" maxlength="256" value="Annoniem"/>
<div id="chatwindow" style="display:block; width: 600px; height: 250px; overflow: noscroll;">
</div><br/><br/>
<input type="text" id="chattext" name="chattext" onKeyPress="hasvalue(this.value);" maxlength="256" style="width: 450px; "/>
<input type="submit" id="submitbutton" onMouseDown="javascript: say(document.getElementById('chattext').value);document.getElementById('chattext').value = '';" value="Toevoegen" style="width:100px; " disabled />
</form>
<script>
    update()
</script>
<?
}
  echo "<br/><br/>Klik <a href=\"../beveiligd.php\">hier</a> om terug te keren";
?>
<h5><a href="http://www.phphulp.nl/php/scripts/5/326/" target="blanc">Origineel script</a> bewerkt door Irtimid2001</h5>
</body>
</html>

Fr3aK

Legacy Member
<form name="ourform">

veranderen naar:

<form name="ourform" onkeypress="if(event.keyCode==13) { say(document.getElementById('chattext').value); document.getElementById('chattext').value = ''; }">

EDIT: Tis mss wel een schoon scriptje maar vergeet ni da als mensen ActiveX en/of JavaScript hebben uitgeschakeld het niet werkt ;)

Fr3aK

Legacy Member
Zeker dat et ni marcheert ?
Hebt ge ne link naar en voorbeeldje want normaal werkt da wel :)

xml

Legacy Member
Irtimid2001 zei:
kheb me loginsysteem gewerkt, ma kzal em ees public zetten

edit: http://dimi.ath.cx/chat/chatbox.php (als em ni werkt is't omda mijne pc ni opstaat)

nice, nog juist maken dat bij het laden van de pagina de focus onmiddelijk in het tekstvak komt. Nu kan je niet gewoon typen, enter, typen, enter, typen, enter, .. doen, maar moet je altijd typen, enter, klikken, typen, enter, klikken, ... doen. :p

Irtimid2001

Legacy Member
Kheb de focus goe gezet daarjuist, was nog simpel feitelijk. Ma nu hebbek nog altijd dienen enter ni gevonden, iemand?

Irtimid2001

Legacy Member
:s zo raar, bij mij dus ni in FF, wel in IE :s. Ma kga der nimer achter zoeken, als't toch bij iedereen gaat buite mij :)

edit: voor als iemand mijn code wilt hebben


chatbox.php
PHP:
<?php session_start();?>
<html>
<head>
<title>chatbox</title>
</head>
<body OnLoad="placeFocus()">
<h1>chat-pagina</h1>
<?
?>
<script language="javascript">
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}
timer = 6000; //iedere 5 seconden refreshen

function say(value)
{
    name = document.getElementById('name').value;
    xmlhttp.open("GET", "chat.php?text="+value+"&name="+name,true);//method, target, async (set always true!)
    
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            document.getElementById('chatwindow').innerHTML = xmlhttp.responseText;
        }
    }
    
    xmlhttp.send(null);
    timer = 6000;
    counter();
}

function update()
{
    xmlhttp.open("GET", "chat.php",true);//method, target, async (set always true!)
    
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            document.getElementById('chatwindow').innerHTML = xmlhttp.responseText;
        }
    }
    
    xmlhttp.send(null);
    timer = 6000;
    counter();
}

function counter()
{
    if(timer == 0)
    {
        update();
    }
    else
    {
        timer = timer - 1000;
        setTimeout("counter()", 1000);
    }
}

function hasvalue(value)
{
    if(value != "")
    {
        document.getElementById('submitbutton').disabled = false;
    }
    else
    {
        document.getElementById('submitbutton').disabled = true;
    }
}

function placeFocus() {
if (document.forms.length > 0) {
var field = document.forms[0];
for (i = 0; i < field.length; i++) {
if ((field.elements[i].type == "text")) {
document.forms[0].elements[i].focus();
break;
         }
      }
   }
}

</script>
<? if(isset($_POST["naam"])){
$_SESSION["naam"] = $_POST["naam"];
}
?>
<form name="ourform" onkeypress="if(event.keyCode==13) { say(document.getElementById('chattext').value); document.getElementById('chattext').value = ''; }">
<input type="hidden" id="name" name="name" style="width: 600px;" maxlength="256" value="anoniem"/>
<div id="chatwindow" style="display:block; width: 600px; height: 525px; overflow: noscroll;">
</div><br/><br/>
<input type="text" id="chattext" name="chattext" onKeyPress="hasvalue(this.value);" maxlength="256" style="width: 450px; "/>
<input type="submit" id="submitbutton" onMouseDown="javascript: say(document.getElementById('chattext').value);document.getElementById('chattext').value = '';" value="Toevoegen" style="width:100px; " disabled />
</form>
<script>
    update()
</script>
<h5><a href="http://www.phphulp.nl/php/scripts/5/326/" target="blanc">Origineel script</a> bewerkt door Irtimid2001</h5>
</body>
</html>
chat.php
PHP:
<?php session_start(); ?>
<pre>
<?php
if(isset($_GET['text']))
{
    $today = date("d/m h:i");
    $already = file("text.txt");
    $already[] = htmlentities($_SESSION['naam'])." ($today):\t".htmlentities($_GET['text'])."\r\n";
    $handle = fopen("text.txt",'w');
    $iwant = array_chunk(array_reverse($already), 35);
    if(!fwrite($handle, implode("", array_reverse($iwant[0]))))
    {
        die("ERROR!");
    }
    fclose($handle);
    echo implode("", array_reverse($iwant[0]));
}
else
{
    echo implode("", file("text.txt"));
}
?>
</pre>

edit: versie aangepast (in de vorige zaten fouten omda der vanalles inzat van op mijne site) dees zou normaal bij iedereen moeten werken.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan