PHP chatbox

Door Jelmer -, 12 jaar geleden, 8.265x bekeken

Wil je iets uitgebreiders? Kijk dan even naar de mysql-versie

Dit is een te simpele chatbox puur gemaakt om een beetje duidelijk te maken wat er allemaal mogelijk is met javascript's XMLhttpRequest.

Met XMLhttpRequest is het mogelijk data (niet alleen xml-bestanden zoals de naam doet vermoeden) binnen te slepen in een pagina (client-side) zonder de pagina te hoeven herladen, en dus ongemerkt.

Ik heb dus als voorbeeld even een chatbox gemaakt. Maar mooier is natuurlijk dat als je bijvoorbeeld in een formulier je postcode invoert, je woonplaats vast voor je geselecteerd wordt.

Ik heb deze tutorial hiervoor gebruikt.

Deze chatbox heeft geen enkele beveiliging, en dient hoogstens als ondergrond voor iets anders.

Voor diegenen die een kant en klare vergelijkbare chatbox willen, zie deze webpagina

Quote:
Om een of andere reden haalt (bij mij in ieder geval) Internet Explorer de opgevraagde data alsmaar weer uit de cache. Ik weet niet wat ik er tegen moet doen. In Firefox spelen er geen problemen op...
Probleem opgelost!

---

Revisie:
titel even verbeterd

Revisie 2:
Klein beetje beveiliging erin gestopt. Het is niet meer mogelijk om geen tekst toe te sturen, en html wordt niet meer uitgevoerd.

Revisie 327 april 2005:
Eindelijk erachter hoe ik in internet explorer om het cacheprobleem heen kom. Stuur gewoon iedere keer een andere url (natuurlijk, hoe logisch!). Klinkt ingewikkeld, maar het komt erop neer dat je gewoon iedere aanvraag even een random nummer meestuurd.

Kleine revisie 3.121 maart 2006:
Dankzij Cees moet het nu ook mogelijk zijn [enter] te gebruiken.

mogelijke verbeteringen:
checken of gebruikersnaam al in gebruik is
alleen de nog niet toegevoegde berichten toevoegen -> mysql :S
Mogelijk in versie 2
enterknop aan de praat krijgen ^^,
Mogelijk in versie 2
Nu ook in deze dankzij Cees.

Voorbeeld: http://phphulp.ikhoefgeen.nl/chatv1/

Gesponsorde koppelingen

PHP script bestanden

  1. php-chatbox

 

Er zijn 86 reacties op 'Php chatbox'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


12 jaar geleden
 
0 +1 -0 -1
cool :)
Joris van Rooij
Joris van Rooij
12 jaar geleden
 
0 +1 -0 -1
Ik zie mogelijkheden voor terminal services :)
Ik ga gelijk aan de slag, php daemon voor i/o en pleur het maar in die xml cache. Heel handig, hartstikke bedankt!


12 jaar geleden
 
0 +1 -0 -1
kraak
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
kraak?
Bram Z
Bram Z
12 jaar geleden
 
0 +1 -0 -1
Lekke veilig ;-).
Johan
Johan
12 jaar geleden
 
0 +1 -0 -1
Prima script hor... beetje ombouwen en ga ik et gebruiken..:)
Bram Z
Bram Z
12 jaar geleden
 
0 +1 -0 -1
Waarom doe je inplaats van :
echo implode("", file("text.txt"));
Niet :
echo file_get_contents('text.txt');
??
Joris van Rooij
Joris van Rooij
12 jaar geleden
 
0 +1 -0 -1
file_get_contents werkt pas vanaf php 4.3.nogwa, dit is php (vrijwel) all.
Kasper Isgek
Kasper Isgek
12 jaar geleden
 
0 +1 -0 -1
Je kan misschien nog een check uitvoeren op de input? Je kan nu namelijk ook verzenden als hij leeg is of als er phptags in staan of iets dergelijks. Dat soort dingen kan je imho beter opvangen met een error dan niks laten zien of laten toestaan.

Verder erg cool script ;)
Thijs X
Thijs X
12 jaar geleden
 
0 +1 -0 -1
lal je moet zoals < b > etc.. automatisch laten afsluiten als iemand dat gbruikt want zoals nu heb je allz vetgedrukt
Han eev
Han eev
12 jaar geleden
 
0 +1 -0 -1
erg leuk scrppie
niks mis mee ;)
Thijs X
Thijs X
12 jaar geleden
 
0 +1 -0 -1
Owja nog wat je moet nog ff een limiet op het aantal char zette in de box waar je je naam in vult.. Want dit is oneindig heb ik gmerkt en zo word je hele chat ding verneukt

maxlength="15" ofzo
Bo az
Bo az
12 jaar geleden
 
0 +1 -0 -1
Hij is lkkr buggy met html codes ;)

ik zou ff deze toevoegen:

htmlentities()
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Quote:
Deze chatbox heeft geen enkele beveiliging, en dient hoogstens als ondergrond voor iets anders.


Maar als jullie dat zo graag willen, zal ik er wel even wat beveiliging inbouwen.
Thijs X
Thijs X
12 jaar geleden
 
0 +1 -0 -1
Ok die HTML bugs zijn dr wel uit maar je kan nog steeds oneindig lange naam ? :S STop er een maxlength="" in oid..
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
<input type="text" id="name" name="name" style="width: 600px;" maxlength="256" value="Annoniem"/>

Al gedaan. Als je kritiek hebt op de lengte, verander je die naar eigen wil. Ik wil de mogelijkheden niet laten schikken voor de veiligheid, (net zoals ik liever privicy dan een antiterreurbeleid)
Thijs X
Thijs X
12 jaar geleden
 
0 +1 -0 -1
Hmm ok hadk nog niet gzien :) ieder zn eigen keus heh
DaeDaluz
DaeDaluz
12 jaar geleden
 
0 +1 -0 -1
Cool script, brengt me op leuke ideeën!
Bas Kreleger
Bas Kreleger
12 jaar geleden
 
0 +1 -0 -1
mooi script Jelmer!!

'niet veilig!' reacties worden verwijderd.. dit script is bedoeld als opstapje!


12 jaar geleden
 
0 +1 -0 -1
@Bas helemaal mee eens,
Het is een opstapje en een mooi script
Alfred -
Alfred -
12 jaar geleden
 
0 +1 -0 -1
Echt een leuk script, ik ga dit zeker proberen uit te bouwen, maar toch een klein vraagje... Ik zie ergens dat het elke 5 seconden refresht etc... Mijn vraag dus, gaat dit spul veel traffic halen ? :)
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Mijn eerste idee was om het id van het laatste bericht mee te sturen, en dan alleen de nieuwe berichten op te halen en erin te schrijven, maar dat werd een beetje te ingewikkeld voor een simpel voorbeeld.
Nu vraagt hij dus iedere 5 seconden een pagina met alle 20 berichten op ja, dus om dit nou op een gratis host met 100+ mensen te bekijken zal wel wat zwaar worden.
Alfred -
Alfred -
12 jaar geleden
 
0 +1 -0 -1
Hm :) Dan ga ik me er eens verder mee amuseren ;)
Ik heb trouwens een betaalde host, daarmee net ;) Dat ik volgende maand niet zo veel traffic extra heb met een chatbox... :) Tot nu toe werk ik met een JavaApplet gelinkt naar irc.krey.be, Belgische IRC Server :)


12 jaar geleden
 
0 +1 -0 -1
postcode+huisnummer levert volledig adres in veel systemen.
Weet iemand hoe je aan de basis-database hiervoor kan komen? Liefst gratis natuurlijk...


12 jaar geleden
 
0 +1 -0 -1
Waw! Heel erg mooi, en niet heel erg moeilijk.
Das wel mooi voor zo'n beginneling als ik,
*snapt nog geen hol van php*. Maar daar komt verandering in.
Vewy pwitty! :)


12 jaar geleden
 
0 +1 -0 -1
Ik ben een beginner met php.
dit scripje is heel mooi, maar het enige wat ik raar vond was: je kunt met alle namen berigjes plaatsen. en kun je daar iets tegen doen???

reacties graag via meel: jannick.bolten@schaersvoorde.nl
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
als je het script zou verbinden met een soort van db, dan zou je de gebruikte namen kunnen registreren en dergelijke.
Yme-Jan
Yme-Jan
12 jaar geleden
 
0 +1 -0 -1
die van mij is beter... :P
http://chat.a4o.nl/
zal wel een beveiliging van niks zijn, want ik heb geen id hoe da veiliger kan 8-)
DaeDaluz
DaeDaluz
12 jaar geleden
 
0 +1 -0 -1
Dit is ook een voorbeeld/ondergrond voor een ander script, En als je het dan gaat vergelijken met een helemaal uitgewerkt script zal dat script er wel beter uit komen ja :)
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Misschien is er zo'n live-postcode search uit te voeren met de gegevens van deze website. In tegenstelling tot de officiele tpgpost site, codeert hij de uitvoer niet.

En voor de bedrijfstoepassingen onder ons:
http://www.postcode.nl/index.php?PageID=55
Quote:
De Postcode.nl Development Kit lite is verkrijgbaar vanaf € 950,-

Quote:
Prijzen vanaf € 2.650 voor de standaard TPG Post versie op reeksniveau. Exclusief software voor het toegankelijk maken, zoeken en updaten van de database.


Ik ga zelf nu eens expirimenteren met telefoongids.e2u.cc. Als het is gelukt, plaats ik wel even een kopietje hier.
DDragonz
DDragonz
12 jaar geleden
 
0 +1 -0 -1
vreet dit niet je brandbreedte op?
Erik
Erik
12 jaar geleden
 
0 +1 -0 -1
Grappig scriptje xPp


12 jaar geleden
 
0 +1 -0 -1
FORTZA ROMANIA!


12 jaar geleden
 
0 +1 -0 -1
als ik zelf een bericht typ gaat ie na een seconde weer weg :S hoe kan ik dat oplossen??
Jelmer -
Jelmer -
12 jaar geleden
 
0 +1 -0 -1
Klikt als Internet Explorer. Ik heb er zelf ook geen oplossing voor kunnen vinden. Misschien zou je eens kunnen kijken naar hoe de maker van dit script het heeft opgelost.
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
Porbleem met Internet Explorer opgelost ^^,


11 jaar geleden
 
0 +1 -0 -1
Luister mee naar onze internetstation op http://weblogs.bnn.nl/radiodebuizerd je kan onder op de webpagina chatten.


11 jaar geleden
 
0 +1 -0 -1
Met word-wrap:break-word; in de style van div 'chatwindow' hoef je niet te scrollen bij een lange zin. Onmisbaar om een pre-tag te wrappen.


11 jaar geleden
 
0 +1 -0 -1
vraagje als ik hem op mijn ftp zet dan geeft hij 2 fouten 1 dat hij geen permissie heeft om naar dat .txt bestandje te schrijven heeft en 2 dat hij die array niet ondersteund : Array_chunk omdat het waarschijnlijk nog php 4 of 3 is.
wie kan mij helpen daarmee????
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
dat eerste kun je oplossen me chmod (zie tutorial ergens hier op de site) en dat tweede heb ik zo geen oplossing voor. Zelf zit ik aan de PHP5. Maar wat voor een server draait op iets ouders dan 4.2?
(misschien kun je het oplossen met explode, en dan handmatig (met een for-lus) gaan 'afhakken'.


11 jaar geleden
 
0 +1 -0 -1
Ehhh die eerste is weg maar op die server draait idd een oude versie maar wordt waarschijnlijk zeer binnekort upgedated dus dan ben ik ervan af:P Thnx


11 jaar geleden
 
0 +1 -0 -1
ik krijg een fout op lijn 14 met die array_chunk weet iemand wat hier dan fout me is??
<pre>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(isset($_GET['text']))
{

    $already = file("text.txt");
    $already[] = htmlentities($_GET['name'])." says:\t".htmlentities($_GET['text'])."\n";
    $handle = fopen("text.txt",'w');
    $iwant = array_chunk(array_reverse($already), 20);
    if(!fwrite($handle, implode("", array_reverse($iwant[0]))))
    {

        die("grote error!");
    }

    fclose($handle);
    echo implode("", array_reverse($iwant[0]));
}

else
{
    echo implode("", file("text.txt"));
}

?>

</pre>


11 jaar geleden
 
0 +1 -0 -1
het werkt niet bij, kan iemand mehelpen? http://airmax.port5.com


11 jaar geleden
 
0 +1 -0 -1
hoe krijg je als je enter drukt dat hij het meteen vertuurd????


11 jaar geleden
 
0 +1 -0 -1
bij mij doet hij het niet bij line 10 geeft tie een fout



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(isset($_GET['text']))
{

    $already = file("text.txt");
    $already[] = htmlentities($_GET['name'])." says:\t".htmlentities($_GET['text'])."\n";
    $handle = fopen("text.txt",'w');
    $iwant = array_chunk(array_reverse($already), 20);
    if(!fwrite($handle, implode("", array_reverse($iwant[0]))))
    {

        die("grote error!");
    }

    fclose($handle);
    echo implode("", array_reverse($iwant[0]));
}

else
{
    echo implode("", file("text.txt"));
}

?>
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
Probeer eens je text.txt naar 0775 te chmodden. Hij geeft namelijk als het bestand niet beschrijfbaar is.


11 jaar geleden
 
0 +1 -0 -1
ik heb de broncode van jouw linksite gekopieerd naar een eigen bestand. Welke code moet ik verder nog waar plaatsen om een werkende chatbox te krijgen? Wanneer ik nu dat html bestandje opstart, krijg ik wel de box in beeld en kan ook invullen maar wanneer ik op 'say' klik, komt er een foutmelding 'fout op de pagina'. Ik ben een beginner, moge dat duidelijk zijn, sorry.
m.vr.gr
frans
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
Je hebt de achterliggende php-code nodig. Dat is server-sided en kan je niet zomaar kopieren van een webpagina (tenzij het zoals hier gegeven natuurlijk ^^,)

Hiervoor heb je eerst een webeserver (of hosting) nodig die php ondersteund. Als dat zo is, dan moet je een bestand genaamd chat.php aanmaken, en daar datgene inzetten wat hierboven onder het kopje code, en dan onder het kopje ---chat.php--- staat.
Jurgen
Jurgen
11 jaar geleden
 
0 +1 -0 -1
vet relaxed scriptje :-)
ik heb nu alleen een check erbij ingemaakt die kijkt of er
een een $_SESSION['login'] geset is. zo ja dan wordt $naam
de sessie inlognaam. zo nee wordt ie gast. anoniem wordt $naam.

werkt lekker :-)


11 jaar geleden
 
0 +1 -0 -1
hij doet het bij mij niet wat moet ik doen hier is de link http://be.msnusers.com/w-t/Documenten/chat.htm


11 jaar geleden
 
0 +1 -0 -1
hij werk niet op mijn ftp
ik heb zelf een ftp server lopen maar
die codes die dan het bij mij niet ik ken wer wel iets in type
maar dan verzend die niet
wat ken ik er aan doen

groetjes hennie
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
Je moet wel php support hebben, een webserver dus. FTP heeft daar op zich niets mee te maken. Daarbij moet het bestand text.txt ingesteld zijn op minstens 775.
Philip b
philip b
11 jaar geleden
 
0 +1 -0 -1
vete chatbox,
hij werkt ook bij mij :P.
maar hoe verwijder je na afloop de teksten want die blijven staan.

ik heb geen ervaring dus.
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
text.txt met notepad even legen.
Niels Beckers
Niels Beckers
11 jaar geleden
 
0 +1 -0 -1
stoeme spam


11 jaar geleden
 
0 +1 -0 -1
Jah het is heel duidelijk deze uitleg, ik snap het meteen.
Egt aardig om dit allemaal uit te leggen.
Ik waardeer het zeer.
Zonder jullie was ik nergens.
Gelukkig dat jullie php kunnen uitleggen.
enne nog bedankt eh!
ik waardeer het zeer!
bedankt iedereen :)
Helix
Helix
11 jaar geleden
 
0 +1 -0 -1
Heey ik krijg steeds dit:

Quote:
the resquested document was not found on this server


Sorry man maar ik ben een echte n00b, ik ben net begonnen met al deze shit!

Latr Helix
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1
Ik denk dat je het verkeerde pad in je browser hebt getypt.
Niels
Niels
11 jaar geleden
 
0 +1 -0 -1
Mooie chat!
Alleen ik krijg het niet voor elkaar om een <br> na elk bericht
erin te krijgen, iemand enig idee hoe het moet?
Willem Jan Z
Willem Jan Z
11 jaar geleden
 
0 +1 -0 -1
Gebruik versie 2?
Jelmer -
Jelmer -
11 jaar geleden
 
0 +1 -0 -1


11 jaar geleden
 
0 +1 -0 -1
Ja ;p
Niels
Niels
11 jaar geleden
 
0 +1 -0 -1
Moet ik perse die nieuwe versie gebruiken?
Kan ik niet hier iets aan passen zodat er
een enter tussen komt? Iig. bedankt!
Cees St
Cees St
10 jaar geleden
 
0 +1 -0 -1
Deze chatbox is een handig begin met AJAX.
Mijn inziens zat er een onhandigheidje aan, je moet altijd met de muis klikken om te zenden. Terwijl de [ENTER] toets makkelijker zou zijn.
Nu heb ik dat opgelost, maar het vergt een paar aanpassingen. Als er belangstelling voor is, zal ik het spul uploaden.
Cees St
Cees St
10 jaar geleden
 
0 +1 -0 -1
Op http://www.ade-solutions.nl/cees/chat/chat.htm heb ik tijdelijk een demo draaien van de Chatbox met ENTER voor het bevestigen/zenden van een bericht
Geert
Geert
10 jaar geleden
 
0 +1 -0 -1
Heey Jelmer,
mooi script hoor maar ik krijg een fout waar ik geen oplossing op weet:

http://www.garnalenkweker.nl/chatbox/index.php

wat doe ik fout??? :S

Groetjes,
Geert
Bert Kamphuis
Bert Kamphuis
9 jaar geleden
 
0 +1 -0 -1
Bij mij doet het script het niet:S. Als ik wat invul, krijg ik het volgende bericht: "grote error"

http://tulp.bekadesign.nl/chatbox.html

Kan iemand mij vertellen wat er verkeerd is?

Groeten Bert
Jelmer -
Jelmer -
9 jaar geleden
 
0 +1 -0 -1
Het bestand text.txt kan niet gemaakt/beschreven worden. Tijd voor een geschikte chmod :) Zie de eerdere opmerkingen, daar staat het wel in vermeld.
Bert Kamphuis
Bert Kamphuis
9 jaar geleden
 
0 +1 -0 -1
Ok, sorry
Bert Kamphuis
Bert Kamphuis
9 jaar geleden
 
0 +1 -0 -1
Hoe kan ik ervoor zorgen dat na een bepaald aantal tekens de rest van de tekst automatisch op een nieuwe regel verschijnt? Nu heb ik namelijk bij een lang stuk tekst dat ik een horizontale schuifbalk krijg.

Groeten Bert
Ruben
ruben
9 jaar geleden
 
0 +1 -0 -1
bij mij werkt hij niet:(
Ruben
ruben
9 jaar geleden
 
0 +1 -0 -1
bij mij werkt hij nog steeds niet:(
Mike
mike
9 jaar geleden
 
0 +1 -0 -1
hoe kan ik er voor zorgen dat het laatste bericht bovenaan staat
nu is het zo dat het bericht onder elkaar word gezet
Jelmer -
Jelmer -
9 jaar geleden
 
0 +1 -0 -1
Probeer deze versie van chat.php eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<pre>
<?php
if(!empty($_GET['text'])) {
    // bestand inladen en inkorten
    $already = array_chunk(file("text.txt"), 19);
    
    // Lijn toevoegen aan het begin vd array
    array_unshift($already, htmlentities($_GET['name'])." says:\t".htmlentities($_GET['text'])."\n");
    
    $handle = fopen("text.txt",'w');
    $fileContents = implode("", $already);
    
    if(!fwrite($handle, $fileContents)) {
        die("grote error!");
    }


    fclose($handle);

    echo $fileContents;
}

else
{
    echo implode("", file("text.txt"));
}

?>

</pre>
Mike
mike
9 jaar geleden
 
0 +1 -0 -1
@jelmer

krijg een fout op regel 5
de comma staat fout


Parse error: syntax error, unexpected ',' in /public_html/chatbox/chat.php on line 5
Erik Rijk
Erik Rijk
9 jaar geleden
 
0 +1 -0 -1
mike,

http://www.phphulp.nl/php/scripts/6/474/
Je kan beter deze gebruiken. Ook van Jelmer, maar dan wel de nieuwste versie :)

Mvg,

Erik
Mike
mike
9 jaar geleden
 
0 +1 -0 -1
Jah maar die zet ook alles onder elkaar

Zou graag willen dat de nieuwe berichten bovenaan komen
Jelmer -
Jelmer -
9 jaar geleden
 
0 +1 -0 -1
Mike, er stond een ) te veel in. Ik heb het bericht verbeterd, probeer hem nu nog eens.
Mike
mike
9 jaar geleden
 
0 +1 -0 -1
dat had ik ook al geprobeert maar dan overschrijft hij de eerste regel
en houd je dus alleen het laatste bericht over
Kurtik watson
kurtik watson
9 jaar geleden
 
0 +1 -0 -1
bij mij hetzelfde probleem, de berichten komen onderaan, iemand een oplossing?
Kurtik watson
kurtik watson
8 jaar geleden
 
0 +1 -0 -1
niemand die weet hoe deze chatbox te fixen? In die nieuwe versie komen de berichten wel bovenaan maar je houd enkel het laatste bericht over bij ingave..
Jeroen berg
jeroen berg
8 jaar geleden
 
0 +1 -0 -1
ik heb hier nog ff een vraag over de chatbox werkt bij mijn wel goed maar toch heb ik een vraagje hier over kan je op deze chat box ook ip ban op doen en smilly's er op maken
Daimen
daimen
8 jaar geleden
 
0 +1 -0 -1
http://www.daimen.be/chatbox.html
check,

Als je de wensite toe doet, en terug open, en zelf cookie ect verwijderd,
dan refress de chatbox niet.
En soms refres die zichzelf en laat een error zien Jammer

Iemand oplossing.?
Kasper Heyndrickx
Kasper Heyndrickx
7 jaar geleden
 
0 +1 -0 -1
leuk eens uitproberen (:
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Gm1999
gm1999
6 jaar geleden
 
0 +1 -0 -1
het werkt niet als,als ik op 'say' druk en ik heb een bericht ingevoerd dan staat er niks ook niet in het tekst.txt bestand.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. php-chatbox

Labels

  • Geen tags toegevoegd.

Navigatie