login  Naam:   Wachtwoord: 
Registreer je!
 Forum

prive berichten systeem

Offline compudoc - 24/01/2007 15:42
Avatar van compudocPHP beginner ik heb een vraagje, ik wil graag een prive berichten systeem maken maar ik weet niet echt goed hoe dit in elkaar zit.

dus moet je bijvoorbeeld alle berichten in een database ofzo opslaan of in aparte bestanden?

kan iemand mij uitleggen hoe zo'n systeempje in elkaar zit?

alvast bedankt

25 antwoorden

Gesponsorde links
Offline Ibrahim - 24/01/2007 15:45
Avatar van Ibrahim PHP expert ik heb een (slechte ) pm systeem gemaakt, dat kan als voorbeeld dienen om het uit te breiden.

* ik zal wel die pm systeem over een tijdje verbeteren, en nieuwe dingen aan toevoegen *
Offline Jim - 24/01/2007 15:45
Avatar van Jim Lid Je moet het zo zien:

iemand maakt een bericht waarin dus:

* het id van de verzender
* het id van de ontvanger
* het bericht

in staat.

Dan maak je een systeem waarin enkel de ontvanger en lezer dat bericht kunnen lezen.

Als je wilt kun je ook natuurlijk een extra optie toevoegen, gelezen ja of nee, en daar kun je dan ook weer een script op bouwen dat hij alle berichten die niet gelezen zijn een vette kleur geeft.

En natuurlijk raad ik je aan om te werken met MySQL database of een andere database.

Groeten.
Offline compudoc - 24/01/2007 15:47
Avatar van compudoc PHP beginner bedant Jim voor je handige uitleg ik zal eens gaan proberen want ik had eigenlijk geen enkel idee hoe zo'n systeempje werkte

en siliecom14, ik zal eens kijken naar dat script van jouw
Offline Thomas - 24/01/2007 15:47
Avatar van Thomas Moderator Mja, en het bericht hoeft niet dubbel opgeslagen te worden.

Je gooit een bericht pas weg als zowel verzender en ontvanger het bericht "verwijderd" hebben.
Offline compudoc - 24/01/2007 15:48
Avatar van compudoc PHP beginner dan kan je toch gewoon met een DROP query doen.
Offline Ultimatum - 24/01/2007 15:49
Avatar van Ultimatum PHP expert Maar dan moet je wel weer een extra veld hebben waarin staat of 1 van 2en hem heeft heeft weggegooi en wie dan. Niet moeilijk maar moet je dan wel rekening mee houden 
Offline Kr4nKz1n - 24/01/2007 15:52
Avatar van Kr4nKz1n Onbekend Ik gebruik 2 tabellen (minstens).
Inbox
Outbox
Zo blijft me database structuur netjes, en kan de ontvanger z`n berichten verwijderen terwijl de verzender hem nog in de map verzonden heeft staan (indien "Opslaan als verzonden" bij het verzenden was aangevinkt).
Offline compudoc - 24/01/2007 15:55 (laatste wijziging 24/01/2007 15:56)
Avatar van compudoc PHP beginner dus ik heb ongeveer een database nodig met hetvolgende:

*id
*ontvanger
*verzender
*bericht
*drop_1 (verzender)
*drop_2 (ontvanger)
*datum
*tijd

en is het slim om iets te maken dat je minimaal 5 minuten moet wachten voor je het volgende bericht verzend.

en hoe kan je maken dat je er max 20 mag hebben?

[edit] wat is nou slimmer? 1 of 2 tabellen?
Offline Kr4nKz1n - 24/01/2007 15:57 (laatste wijziging 24/01/2007 15:58)
Avatar van Kr4nKz1n Onbekend Die drop kan je verschillende statussen geven dus gewoon 1 drop.
Waardes:
0 = Ongelezen
1 = Gelezen
2 = Gelezen en verwijdert door de ontvanger
3 = Ongelezen en verwijdert door de verzender
4 = Gelezen en verwijdert door de verzender
Bv.

Pak het aantal berichten in het inbox van de ontvanger, en controleer dit.
Mysql_num_rows of mysql_result.

-Edit-
1 tabel:
Minder database opslag, maar alles staat door elkaar.

2 tabellen:
Meer database opslag, alles netjes georderd (vind ik).

Het is maar net wat je fijn vindt.
Offline compudoc - 24/01/2007 15:59 (laatste wijziging 24/01/2007 16:01)
Avatar van compudoc PHP beginner dus voordat het bericht 'verzonden' moet worden moet ik eerst tellen hoeveel berichten de ontvanger heeft.

weet iemand toenvallig ook hoe er zo'n tijds limiet word gemaakt?

[edit] bedankt voor je uitleg over die tabellen maar ik ga denk ik toch voor 1
Offline Kr4nKz1n - 24/01/2007 16:03
Avatar van Kr4nKz1n Onbekend Wat voor`n tijdslimiet? Dat je maar 1 pb per minuut mag verzenden?
Offline compudoc - 24/01/2007 16:06 (laatste wijziging 24/01/2007 16:16)
Avatar van compudoc PHP beginner je mag maximaal 1 bericht per 5 minuten verzenden
Offline Dark_Paul - 24/01/2007 16:15 (laatste wijziging 24/01/2007 16:19)
Avatar van Dark_Paul PHP ver gevorderde Tijdslimiet haal je de meest recente rij op waar verzenderid overeenkomt met degene die nu wil sturen.
Maak van je tijd-kolom een DATETIME, dan kan je gemakkelijk vergelijken (staat een tut voor hier op Sima).

Edit: ik heb een messenger gemaakt, is wel met templatepower.
Als je wilt kan ik 'm wel bij de scripts zetten, kan je daar wat inspiratie van halen.. (is sowieso misschien handig, maar er staan er al meerdere). Met de messenger kan je berichten sturen (duh), je hebt een inbox en outbox met een totaal maximum van 50berichten. Als je een niet-bestaande username intypt, krijg je een lijst met alternatieven (vergelijkbare gebruikersnamen).
Verder worden niet-gelezen berichten bij mij dik en rood weergegeven. Ook kan je berichten verwijderen, ook meerdere tegelijk en om de inbox overzichtelijk te houden kan je (in het PHP-script) instellen hoeveel berichten per pagina er moeten worden weergegeven.
Offline Berten - 24/01/2007 16:21
Avatar van Berten PHP beginner Ik zou gaan voor 3 tabellen
berichten:
berichtID
Titel
bericht
datum


inbox
ontvangerID
berichtID
verzenderID

outbox
verzenderID
berichtID
ontvangerID
Offline compudoc - 24/01/2007 16:24
Avatar van compudoc PHP beginner Dark_Paul bedankt voor je aanbod maar ik gebruik geen template power en zonder heb ik er waarschijnlijk niks aan (of wel?)

en Berten: 3 tabellen lijkt met echt niet zo slim want bij het bericht moet toch staan van wie het is en wie het mag lezen 
Offline Kr4nKz1n - 24/01/2007 16:25
Avatar van Kr4nKz1n Onbekend Berten is volgens mij ook niet echt serieus bezig.

Onderbouw je structuur eens Berten, ben wel heel erg benieuwd.
Offline compudoc - 24/01/2007 16:33
Avatar van compudoc PHP beginner ik heb wel eens in een scriptje iets gezien over xminuten * 100000 ofzo en verder weet ik het niet meer maar dat had in iedergeval ook iets met de tijd te maken.

weet iemand hier iets meer over?
Offline Kr4nKz1n - 24/01/2007 16:37
Avatar van Kr4nKz1n Onbekend Ja dat is de UNIX timestamp.

www.php.net/time
Offline compudoc - 24/01/2007 17:00 (laatste wijziging 24/01/2007 17:00)
Avatar van compudoc PHP beginner dus daarmee kan ik bijvoorbeeld zeggen:
check => laatste post van verzender => tijd voorbij?

=> ja => verzenden
=> nee => niet verzenden
Offline Dark_Paul - 24/01/2007 17:08
Avatar van Dark_Paul PHP ver gevorderde Kijk de tutorial over het gebruik van Datum en Tijd in MySQL hier eens door (tut van marten geloof ik). Daar leer je hoe je met DATEDIFF leert werken, daarmee kan je 2 tijden vergelijken.
Jou query zal dan ongeveer dit worden:
SELECT tijd, <en nog meer dingen>, DATEDIFF(NOW(), tijd) FROM berichten WHERE senderid=".$userid."
Dit is ff uit mn blote hoofd, als 't niet klopt > check de tut.
Offline compudoc - 24/01/2007 17:12
Avatar van compudoc PHP beginner ga ff kijken naar de tut
Offline Ibrahim - 24/01/2007 17:16
Avatar van Ibrahim PHP expert je kunt het ook gewoon met cookies doen hoor, hoef je je SQL server niet te belasten 

  1. setcookie('spam', 'spam_cookie', time() + $aantal_sec_dat_je_moet_wachten, '/');
Offline Dark_Paul - 24/01/2007 17:19
Avatar van Dark_Paul PHP ver gevorderde Maar cookies zijn manipuleerbaar 
En wat als de gebruiker cookies uitgeschakeld heeft?
Offline compudoc - 24/01/2007 17:20
Avatar van compudoc PHP beginner je kan wel cookies of sessies gebruiken maar deze kan je ook verwijderen enzo dus....

... niet echt slim
Offline Dark_Paul - 24/01/2007 17:27 (laatste wijziging 24/01/2007 17:27)
Avatar van Dark_Paul PHP ver gevorderde Sessies kan je alleen omzeilen door de browser te sluiten (dan worden de sessie gewist).
Cookies kan de gebruiker zelf gewoon aanpassen.
Met sessies is inderdaad dus ook een optie, maar te omzeilen door de browser te sluiten en opnieuw te starten (wel veel werk).

Wil je 't echt '100%' (niets is 100% veilig) hebben, dan moet je 't gewoon via je MySQL doen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.442s