PDO messagebar/berichtenbalk

ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

  • Hallo,

    Hierbij voor iedereen te gebruiken een berichtenbalk en maakt gebruik van PDO.
    In de config.php zit alle logic zo ongeveer waardoor dingen makkelijk zijn aan te passen en uit te breiden et cetera.
    In index.php zit zowel de html als het verwerken van het post request.

    Database file is messagebar.sql en dient toegevoegd te worden aan de database. Vanuit daar worden ook de smilies ingeladen. Bij het maken van nieuwe smilies moeten deze in de map smilies worden gezet.
    Verkopen van dit script of op andere plaatsen publiceren zonder mijn toestemming is niet toegestaan.
    Copyright in alle documenten laten staan.

    Dit is gemaakt naar aanleiding van het topic: Gevraagd: Berichtenbalk
    Demo: streethost.nl/messagebar/

    Aanpassingen:
    - charset aan PDO functie meegegeven i.p.v. setNames
    - htmlentities vervangen door htmlspecialchars() met utf-8 charset erbij
    - database geüpdatet zodat overal juiste encoding wordt gebruikt

    Aanpassingen V1.1
    - De fout in onderstaande code opgelost, thanks voor melden @Ferhat.Remory

    PHP Source Code

    1. if(empty($_POST['user']) || strlen($_POST['user']) < $minNameLength) {
    2. $errors .= 'Name must be longer than '. $minMessageLength .' characters<br/>';
    3. }
    4. moet
    5. if(empty($_POST['user']) || strlen($_POST['user']) < $minNameLength) {
    6. $errors .= 'Name must be longer than '. $minNameLength .' characters<br/>';
    7. }
    - toevoeging van mb_ aan alle tabellen en code na advies van @FangorN
    Bestanden

    4,706 keer bekeken

Reacties 13

  • andries -

    Leuke script. Maar goed ik gebruik deze script nu ook. maar zit met 1 probleem ik wil namelijk die scrollende tekst op mijn andere pagina laten scrollen maar krijg dat niet voor elkaar iemand een idee hoe ik dat eventueel zou kunnen gaan oplossen?

    Andries

    • andries -

      Niemand een idee? :(

    • Ferhat.Remory -

      Als je geen voorbeeld geeft van hoe of wat, hoe kunnen we jou dan helpen..

    • andries -

      nou hoe ik het probeer te zeggen als je een bericht toevoegt bij die systeem dan komt in die marquee en die marquee zou ik ook op mijn andere pagina's willen zonder die form met bericht toevoegen dat er maar 1 specificieke site is waar je een bericht kan toevoegen.

  • sjaaakie -

    Ik krijg een HTTP ERROR 500 verder niets
    test.regionaleartiesten.nl/messagebar/index.php

  • Luc -

    Nieuwe update uitgebracht na onderstaande adviezen en meldingen.

  • FangorN -

    config.php:
    * je DSN bevat geen charset, dit is beter dan het na afloop instellen van een charset m.b.v. SET CHARACTER SET omdat in dat geval escaping-functionaliteit aan de PHP-zijde niet is afgestemd op wat je in de database (middels een query) configureert.
    * de functie getMessages() gaat al uit van de HTML-context, waarom retourneer je de messages niet gewoon in rauwe vorm en als array, zodat je later nog kunt besluiten hoe je dit gaat weergeven? Escapen kan altijd nog, misschien is het ook beter om expliciet een character encoding mee te geven aan de escaping-functie waarbij htmlspecialchars() eigenlijk altijd de voorkeur verdient boven htmlentities()
    * geen idee waarom je toegestane smilies in de database wilt opslaan maar soit, kost je ook elke keer (onnodige?) extra queries

    messages.sql:
    * welke character encoding gebruiken we nu? je maakt tabeldefinities met zowel latin1 als utf8
    * het heeft weinig zin om dit in een transactie zetten want structurele wijzigingen (aanmaken en wijziging van tabelstructuur) worden volgens mij meteen gecommit

    index.php:
    * hier zou je dus, net voor het weergeven, de informatie kunnen escapen / voorzien van smilies

    Mogelijk wil je tabelnamen en functies ook nog namespacen, om te voorkomen dat dit voor conflicten met andere code zorgt. Verder ziet het er wel ok uit. Misschien wil je ook de laatste 10 berichten tonen ofzo, nu groeit de berichtenbalk alleen maar :).

    • Luc -

      Inmiddels wat aanpassingen gedaan.

      Eigenlijk is die getMessages() hetgeen wat op de index.php wordt aangeroepen, alleen in plaats van dat ik het daar als code had staan heb ik dit stuk ook in een functie gezet.
      De reden dat ik ze in de database heb gedaan was op verzoek van @Marinuszz zodat hij ze makkelijk kon toevoegen. Mijn voorkeur was ze gewoon als array erin zetten.
      De laatste 10 berichten kan inderdaad, maar kan makkelijk worden toegevoegd aan de functie getMessages voor degene die dat zou willen.

      [quote]
      Mogelijk wil je tabelnamen en functies ook nog namespacen, om te voorkomen dat dit voor conflicten met andere code zorgt.
      [/quote]

      Kun je deze eens laten zien dmv code ofzo hoe je dit zou doen? Dan kan ik het toepassen.

    • FangorN -

      Je zou de PHP kunnen organiseren in classes (vele varianten mogelijk) en de tabelnamen kunnen prefixen met "messagebar_" ofzo. Het wordt dan op zijn minst duidelijker dat de functionaliteit bij elkaar hoort en er (in PHP) geen variabelen rondzwerven in de globale namespace. Ook zou je kunnen overwegen -als je er toch een klasse van maakt- om een referentie naar een PDO-object mee te geven bij creatie, in plaats van dat deze functionaliteit zelf een connectie opzet.

    • Ferhat.Remory -

      if(empty($_POST['user']) || strlen($_POST['user']) < $minNameLength) {
      $errors .= 'Name must be longer than '. $minMessageLength .' characters<br/>';
      }
      moet
      if(empty($_POST['user']) || strlen($_POST['user']) < $minNameLength) {
      $errors .= 'Name must be longer than '. $minNameLength .' characters<br/>';
      }
      worden.