Gæstebog script i PHP og MySQL

Her er et forsimplet eksempel på det gæstebogsscript, som jeg selv bruger. Scriptet består af 4 dele.

  • HTML-formular, hvor brugeren indtaster navn og gæsebogsindlæg
  • PHP script, der gemmer indholdet fra formularen i en database
  • PHP script, der der viser de tidligere indlæg på siden
  • MySQL script, der opretter den nødvendige tabel i din database

Åben de 4 scripts til gæstebog i et nyt vindue. Nederst på siden kan du se, hvordan man kan samle scriptsene i én "gæstebogs"-fil.

Her kan du se, hvordan den færdige gæstebog ser ud.

Hvis gæstebogen driller læs mit blogindlæg om debugging for begyndere.

Programmering af gæstebog. En begynder guide

Her følger en kort beskrivelse af de enkelte filer i gæstebogsscriptet. Du kan åbne scriptet i et nyt vindue og følge med i koden samtidig med, at du læser beskrivelserne.

HTML-formular

Først skal vi oprette en formular med to indtasningsfelter til gæsten. Formularen oprettes med HTML kode.

Formularen indeholder også et skjult felt (type="hidden"), som brugeren ikke kan se. Dette felt sender en besked med, så php scriptet kan undersøge om indeholdet af formularen er blevet afsendt.

Derudover har jeg tilføjet et anti spam spørgsmål. Det kan du selvfølgelig ændre efter behov. Husk også at ændre i PHP'en, der hvor svaret tjekkes.

PHP script, der gemmer indholdet fra formularen

I starten af scriptet skal du indtaste dine database oplysninger. Dem har du fået udleveret af dit hosting firma. Dine oplysninger gemmes i en nogle variabler, der bruges til at forbinde til MySQL databasen

Først tjekkes der om formularen er afsendt (er det skjulte felt sendt) 0g at anti-bot svaret er rigtigt. Antibot laves til små bogstaver med PHP funktionen strtolower();

Indholdet fra html formularen hentes. Hvis der er tastet html kode ind i formularen fjernes det fra indholdet. Indholdet gemmes i 2 variabler.

Så testes der for om, der er indtastet indhold i begge felter ellers gemmes indtastningerne ikke.

Indholdet køres derefter gennem et lille sikkerhedsscript, der forhindrer at fremmede kan tage kontrol over din database v.h.a. SQL injektioner.

Scriptet undersøger om der tidligere er indtastet et tilsvarende indlæg, og der gives en tilbagemelding til brugeren. Dette er primært for at undgå, at samme indlæg gemmes igen og igen, hvis brugeren opdaterer siden.

Til sidst gemmes indholdet fra formularene i MySQL databasen.

PHP script, der der viser tidligere indlæg

Forholdsvis simplet script, der henter indholdet fra MySQL databasen.

Vi laver en forespørgelse efter kolonnerne "navn", "dato" og "besked" fra tabellen "bog". Data gemmes i et array, og skrives ud ved hjælp af en while løkke.

While løkken skriver både indholdet fra databasen og nogle html tabel tags, så data præsenteres pænt på siden.

MySQL script, der opretter den nødvendige tabel i din database

MySQL koden skal bruges til at oprette en tabel i din database. Databasen stilles til rådighed af dit webhotel. Hvis du har købt webhotel følger der altid en database med. Den mest almindelige database løsning er MySQL, der er opensource og den database php traditionelt bruger.

Sådan bruges MySQL scriptet

  1. Åben phpMyAdmin. Du har fået adressen af dit webhotel
  2. Vælg den database, der er tilknyttet dit domæne.
  3. Åben SQL vinduet og copy-paste scriptet derind.
  4. En ny tabel vil nu blive oprettet i din database.

Spambeskyttelse af gæstebogen

Jeg er blevet nødt til at tilføje et anti spam robot spørsgmål. Mange brugere har oplevet problemer med meget spam. Hvis du vil benytte en anden metode, fjerne du selvfølgelig bare spam tjekket i PHP'en.

Her kan du læse hvordan jeg selv undgår spam robotter i min gæste bog. Og på min egen gæstebog kan du også læser hvor mange spam robotter jeg har fanget ifælden mens jeg har haft gæstebogen. ;)

Gæstebog, spam og robotter

Når man har en gæstebog får man også besøg af spam robotter. Det kan simpelthen ikke undgåes.

Men man kan med forskellige krumspring forhindre at spamrobotternes indlæg bliver gemt.

På min blog kan du læse hvordan jeg stopper spam i min gæstebog

Og metoden er succesfuld. Der slipper meget sjældent robotter igennem.

Spamrobot tæller

Jeg har lavet et lille script, som tæller, hvor mange spamrobotter, der prøver at skrive indlæg.

Robotter røget i fælden siden 18.maj 2007: 27249

Scriptet fungerer ved at tælle de indlæg, der bliver afvist, fordi de matcher reglerne, jeg har sat op for et spamrobot indlæg.