Shoutbox systeem

Door Niels K, 16 jaar geleden, 22.533x bekeken

Nu heb een aantal Shoutbox applicaties gezien en daar zie ik dat er veel commentaar wordt gegevens qua veiligheid en overzichtelijkheid. Daarom ben ik vandaag aan de slag gegaan en heb ik een shoutboxsysteem gemaakt met zoals karl voorstelde, JQuery. Ik heb een systeem wat ik op internet heb gevonden verbeterd en aangepast. Zeker op het gedeelte van PHP want dat was helemaal prut. Ik heb uitgebreide documentatie toegevoegd zodat het voor iedereen makkelijk te lezen en te begrijpen is. Nu wil ik niet zeggen dat ik direct een goed Shoutbox systeem heb ontworpen maar volgens mij ben ik wel in de goede richting...

Commentaar is natuurlijk erg welkom.

Het zijn wel een aantal bestanden, en het kan wel wat onoverzichtelijk zijn daarom heb ik de onbelangrijke bestanden even weggelaten en alles online gezet.

Het is hier te downloaden: Klik

Voorbeeld: Klik

Voor de code duidelijkheid is het javascript bestandje geopend met PHP.

Toekomst:

- Adminpaneel voor degene die het gepost heeft
- Anti spam beveiliging ( Nu al last van spammers, kinderachtig... )
- IP blokker
- Admin panel voor de beheerder

Succes met het script!

Gesponsorde koppelingen

PHP script bestanden

  1. shoutbox.php
  2. index.html
  3. shoutbox.js
  4. functions.php
  5. db_connect.php

 

Er zijn 59 reacties op 'Shoutbox systeem'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Dalando De Zuil
Dalando De Zuil
16 jaar geleden
 
0 +1 -0 -1
dude! ShoutIT was de naam van mijn shoutbox systeem? Waarom kopieer jij dat?
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Hoi Dalando.. Dat heb ik gezien ja.. Maar Shout IT is toch gewoon een benaming van een shoutbox? Of had jij die naam echt verzonnen? Dan verander ik het gewoon in shoutbox.. Maar ik dacht dat shout IT hetzelfde is als shoutbox..

EDIT: Ik heb het voor je veranderd...
Dalando De Zuil
Dalando De Zuil
16 jaar geleden
 
0 +1 -0 -1
Niels.

Ik had de naam wel echt verzonnen :)

Vond je hem soms zo goed dat je hem geopieert had!

Bedankt voor het veranderen.

Maar je moet in je bericht ook nog een paar keer veranderen.

dalando
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Dalando.

Ok, njaa ik was hem een paar keer tegen gekomen op het internet dus was in de veronderstelling dat men hetzelfde bedoelde..

Geen probleem, goed opgemerkt ik was het vergeten, ga ik voor je veranderen..

Groeten
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Inderdaad.. maar ik bedoelde het echt als een shoutbox in PHP.. Maar goed dat neemt niet weg dat het zelf verzonnen toch wel een beetje overdreven is... maar goed:)
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
En zet aub even index.html in code-bb-tags

EDIT: Ook moet je even in je JS bestand zeggen dat de php tags slechts voor de highlighting zijn en niet gebruikt moeten worden.
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Gedaan..
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
Netjes gecoded verder. Alleen horen die doctags natuurlijk niet bij de call, maar bij de definitie.

En nog een tip: ik vind het zelf altijd fijn als ik de tabelnaam(prefix) kan aanpassen.

Je hebt een error: Er is een fout opgetreden bij het selecteren van de berichten.
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/gnrqmsoj/domains/kvt-webdevelopment.nl/public_html/test/shoutbox/shoutbox.php on line 37
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Dankjewel..

-- Alleen horen die doctags natuurlijk niet bij de call

Wat bedoel je?

-- Ik vind het zelf altijd fijn als ik de tabelnaam(prefix) kan aanpassen.

Ok ik zal het in de volgende versie verwerken..

-- Je hebt een error

Klopt..

->> EDIT: Voorbeeld is heel even uit de lucht omdat ik last heb van spammers.. Daarom is de tabel even vernoemd..

Dit heb ik in mijn begin post gezet ongeveer half uur geleden..
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
Je hebt doctags gedaan bij het callen van functies, bijv op shoutbox.php r25. Deze horen alleen bij de definitie (in dit geval functions.php r8) te staan.

Als spambescherming kan je natuurlijk gewoon bij de tabel het ip zetten, dat de berichten tellen afkomstig van de request-ip binnen 2 minuten en wanneer dit hoger is dan 5 oid, is het spam.

Evt kan je er ook nog een hash van wat request data bij doen: fingerprinting: http://www.phphulp.nl/php/forum/topic/user-fingerprinting/71377/last/
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
--> Ik bedoelde dat het fijn zou zijn als je ergens in een constant de tabelnaam zet

Ja klopt.. dat snap ik maar je had het over doctags..

Ik ben bezig met gelijksoortig iets als in de laatste link..
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
Ja ik reageerde verkeerd, heb het aangepast. Zie 1e alinea van mn vorige post.
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Geeft niet.. Ok. Ja ik doe het altijd allebei..

E: Nu snap ik ineens jouw zin van je post..
Dalando De Zuil
Dalando De Zuil
16 jaar geleden
 
0 +1 -1 -1
Goh. Ik had ShoutIT zelf verzonnen... Hadden andere mensen dat ook! :D
B a s
B a s
16 jaar geleden
 
0 +1 -0 -1
Mooi script Niels. Ik zal een mirror online zetten op server van PHPhulp.
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Dankjewel bas. Oké, zelf heb ik het voorbeeld weer online gezet. In de loop van de avond zal de spam beveiliging er opzitten.
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
Denk ook nog even aan je naamgeving. getMessageResult moet natuurlijk gewoon messages zijn. Ook kan je het script met wat kleine aanpassingen ook geschikt maken voor mensen zonder javascript.
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
@Pim

Goed opgemerkt.. Ik zal het veranderen, over 2 dagen komt er een nieuwe versie met wat aanpassingen + toevoegingen zoals:

- Adminpaneel voor degene die het gepost heeft ( wijzigen, verwijderen )
- Anti spam beveiliging
- IP blokker
- Admin panel voor de beheerder

Verder is eigenlijk het script niet bedoeld voor mensen zonder javascript. Wel goed opgemerkt, ik zal trachten het script zo te maken dat het voor iedereen te gebruiken is.

Bedankt!
Pim -
Pim -
16 jaar geleden
 
0 +1 -0 -1
Ik zou als ik jou was geen shouts laten wijzigen en ook de admin geen bewerk optie geven, hooguit deleten. Dit gaat tegen het idee van een shoutbox in, het is geen forum.

Je kan het dan heel simpel doen: geef de admin een login pagina en laat hem daarna op het overzicht bij elke shout de optie geven om de shout te verwijderen of de poster te bannen. En eventueel nog een unban pagina. Je hebt geen beheerpaneel nodig.
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Ik had beloofd om het script aan te passen. Maar dit is een heel nieuw script geworden.

Het wordt nu volledig in OOP herschreven, nog even geduld dus..
B a s
B a s
16 jaar geleden
 
0 +1 -0 -1
Nice, ben benieuwd!
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Ik heb in dit topic Al een gedeelte gepost.. ( Link naar een zip met dat gedeelte ) Maar ik ben het nu al weer aan het veranderen omdat het niet naar me zin is en dat er toch een aantal dingen in OOP niet kloppen. Verder ben ik bezig om MVC door te laten voeren.

EDIT:

Ik zal nu wel even gauw een spam beveiliging en IP logger bouwen

Had je trouwens al een mirror bas?
Niek s
niek s
16 jaar geleden
 
0 +1 -0 -1
Ah jezus, allemaal kansloos gezeik omdat iemand (zal geen naam noemen) een naam had bedacht :(

Goed, ontopic:
- Lange tekenreeksen worden niet onderbroken. Het overflowed nu ;)
- Het escapen van quotes doet ook vreemd? Er komt \' terug. Waarschijnlijk magic quotes aan
- Je gebruikt strip_tags zo te zien, ipv htmlentities? Kan wel, maar dan gaat die data wel verloren...

Dit zijn punten die ik zie zonder in de code te kijekn, want daar heb ik nu geen zin meer in. Dat doe ik morgen misschien nog wel
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
@Niek

- Lange tekenreeksen worden niet onderbroken. Het overflowed nu ;)

Klopt, is al verbeterd bij de nieuwe versie

- Het escapen van quotes doet ook vreemd? Er komt \' terug. Waarschijnlijk magic quotes aan

Uhh nee ik heb htmlspecialchars gedaan i.p.v htmlentities

- Je gebruikt strip_tags zo te zien, ipv htmlentities? Kan wel, maar dan gaat die data wel verloren...

Is ook al verbeterd..

'
Dit zijn punten die ik zie zonder in de code te kijekn, want daar heb ik nu geen zin meer in. Dat doe ik morgen misschien nog wel'

Dankjewel,.. Alleen kan je beter wachten totdat die nieuwe versie er is. Dit vind ik zelf een beetje prut geworden..
Tobias Tobias
Tobias Tobias
16 jaar geleden
 
0 +1 -0 -1
Kijk, dit cript is een goed voorbeeld zoals het hier hoort te gaan:

1. Persoon 1 post een script
2. Persoon 2 commentaar/verbeterpunten
3. Persoon 1 verbetert het cript -> ga door naar 2 tot script goed is.
4. PHPhulp heeft een goed, degelijk script waar anderen wat mee kunnen
Niek s
niek s
16 jaar geleden
 
0 +1 -0 -1
Wanneer is de nieuwe versie er? Dan wacht ik met commentaar tot je de nieuwe versie er op hebt gezet ;)
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Tja dat is een goeie.. Ik ben daar veel dingen in OOP aan het doorvoeren, maar kan nog wel een week of 2 duren
Moe BE
Moe BE
16 jaar geleden
 
0 +1 -0 -1
1. Ik zou de invulvelden weer leeg maken na verzending.
2. Zit hier een spamfilter ingebouwd? Anders moet je Akismet eens bekijken, dat is een hele mooie en de gebruikers hebben er geen weet van.
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
1: Komt op het lijstje
2: Bij deze is nog geen spam filter, bij de nieuwe wel. Akismet is toch alleen voor mail?


16 jaar geleden
 
Askimet is speciaal voor comment en trackback spam :-)
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Ik zie het ja.. Dankjewel:)
Mart B
Mart B
16 jaar geleden
 
0 +1 -0 -1
Wat is de data base code?....
Niels K
Niels K
16 jaar geleden
 
0 +1 -0 -1
Uh, dat is niet zo moeilijk? Je kan de database velden vanuit de code halen? Dan leer je ook wat:)

Btw. Veel post al.. ( 1200+ )
Mart B
Mart B
16 jaar geleden
 
0 +1 -0 -1
Tjah dat kan - maarjah als je niet zo veel snapt van php :D

en gratz op je posts, iniedergeval bedankt voor je reply :)
Niels K
Niels K
16 jaar geleden
 
1 +1 -0 -1
Haha, zal veel spam op zitten, maar goed ik heb hem dus niet voor niks gemaakt:)

Hier de code voor db:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
CREATE TABLE shoutbox (
  id int(5) NOT NULL AUTO_INCREMENT,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user` varchar(25) NOT NULL DEFAULT 'anonimous',
  message longtext NOT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1275 ;
Mart B
Mart B
16 jaar geleden
 
0 +1 -0 -1
Dude je bent geweldig!
Niels K
Niels K
16 jaar geleden
 
1 +1 -0 -1
Haha, dankjewel en succes :-)
Wendy verhees
wendy verhees
15 jaar geleden
 
0 +1 -0 -1
Ik neem aan dat de nieuwe versie er inmiddels is? Ben er erg benieuwt naar. En is daar ook de mogelijkheid om de layout zelf iets aan te passen naar de stijl van de website waar hij op komt?

verder top werk.
 - Diov  -
- Diov -
15 jaar geleden
 
0 +1 -0 -1
Laden duurt echt lang.
Misschien moet je de bericten anders oproepen? Of zijn het er zoveel?
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Beste @Dem Ian,

Het zijn er best wel veel.. Kijk maar naar de count. Ik denk dat ik die query eraf ga halen, want dat maakt hem zo traag..

@Wendy,

Wegens bepaalde redenen heb ik het systeem niet meer verder geprogrammeerd. Misschien dat ik het ooit nog doe, maar je moet je eigen even tevreden houden met deze versie :)

Niels
Maarten PHP
Maarten PHP
15 jaar geleden
 
0 +1 -0 -1
Niels het lijk wel waarom dat je godsnaam alle berichten ophalen, je hebt er maar 20 nodig, eerlijk gezegd vind ik dit niet netjes. Voor de rest vind ik het mooi gemaakt.
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Zoals ik al zei wordt doormiddel van een COUNT berekend hoeveel berichten erin staan.. Dat is de reden dat het zo traag is. Vanavond zal ik het voor je aanpassen .. ;)

Overigens, in de download zit de COUNT query niet :)
Maarten PHP
Maarten PHP
15 jaar geleden
 
0 +1 -0 -1
Ow oke
Vincent Huisman
Vincent Huisman
15 jaar geleden
 
0 +1 -0 -1
@Niels, ik ben anders ook wel bereid om een simpele versie met jquery te maken. anders moet je maar een pm sturen
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Deze versie is toch al met JQuery?
Vincent Huisman
Vincent Huisman
15 jaar geleden
 
0 +1 -0 -1
Het ging ook niet zo zeer om de jquery
Niels K
Niels K
15 jaar geleden
 
0 +1 -0 -1
Waar dan om? Ik volg je niet helemaal :-)
Jacco Brandt
Jacco Brandt
15 jaar geleden
 
0 +1 -0 -1
Een COUNT-query is echt supersnel hoor.
Vincent Huisman
Vincent Huisman
15 jaar geleden
 
0 +1 -0 -1
laat dan maar zitten :)


15 jaar geleden
 
0 +1 -0 -1
ja kan op http://www.ajaxload.info/ en http://www.loadinfo.net/ andere ajax loaders krijgen
Julian x
Julian x
15 jaar geleden
 
0 +1 -0 -1
Als ik mysql en zo heb ingevuld in connect_db.php of zoiets dan krijg ik deze error in de shoutbox: Er is een fout opgetreden bij het selecteren van de berichten.
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/juliaxu6/domains/hospitalhabbocontact.nl/public_html/shout/shoutbox.php on line 37 en ik heb geen sql code hoeven in voegen zo te zien want die zat er niet bij.
Frank WD
Frank WD
15 jaar geleden
 
0 +1 -0 -1
Niels,

Als ik een test wil uitvoeren en op verzenden klik.
Dan blijft die loaden. Tevens bij afsluiten en opnieuw openen van de pagina blijf ik loaden houden.

EDIT:
Zie nu dat het nu wel goed is. Alleen staat mijn post er nu 4x. Sorry voor de 4x zelfde post.
- Pepijn  -
- Pepijn -
13 jaar geleden
 
Sorry voor deze onnodige bump..

http://yensdesign.com/2009/01/create-a-shoutbox-using-php-and-ajax-jquery/

Maar dit is gewoon gekopieert
Wouter J
Wouter J
13 jaar geleden
 
1 +1 -0 -1
ja, behalve dat dit script eerder is geplaatst...
Niels K
Niels K
13 jaar geleden
 
0 +1 -0 -1
Quote:
Ik heb een systeem wat ik op internet heb gevonden verbeterd en aangepast.
- Pepijn  -
- Pepijn -
13 jaar geleden
 
0 +1 -0 -1
Dat verklaart een boel :D


13 jaar geleden
 
0 +1 -0 -1
Zou het gewoon lekker ShoutIT noemen. Als hij geen merk betaald is het vrij te gebruiken.
Niet zeiken en delen die handel, eeennn go!
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mounssif dev
mounssif dev
13 jaar geleden
 
1 +1 -0 -1
Update links aub

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

Inhoudsopgave

  1. shoutbox.php
  2. index.html
  3. shoutbox.js
  4. functions.php
  5. db_connect.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.