Gæstebog med validering opbygget med MySQL

Relaterede dokumenter
Tagwall med Php & MySQL

I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

Ratingsystem i PHP og MySQL

Begrynder til at lave log ind system

Uploade billeder eller andre filer ved hjælp af php og mysql

Loginsystem (med MySQL)

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Afsending af s vha. ASP

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

Loginsystem med PHP4, klasser, sessions og MySQL database

Dette er en grundlæggende artikel til hvordan du laver et lille community, med forskelige

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Web 2.0. World Wide Web (www)

Introduktion til SQL queries

Dynamisk PHP design OPDATERET

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

The Design Diaries. Link til blog

Session-highjack...et halvt skridt mod en modgift

Da jeg selv bruger Windows, så vil programmer osv. være til Windows, og beskrevet ud fra en Windowsbrugers

Design Diaries.

The Design Diaries Project 3 2. Semester. Blog om designprincipper

Simpel upload af filer

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Eksamen, DSDS, efterår 2007

PHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Database design for begyndere

Reeksamen, DSDS, forår 2008

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Kontrol-strukturer i PHP

De skjulte input typer:

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Java web applikationer med Tomcat

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Koden i denne guide vil kun virke i Flash MX 2003 og MX ikke ældre versioner!

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

Views etc. Databaser

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Interaktionsudvikling

Delphi og Databaser for begyndere

Sådan kan du sende data fra din egen hjemmeside til JitBesked via en HTML-JDF.

Eksamen, DSDS, forår 2009

Upload af billeder/filer for nybegyndere Del. 2

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Vejledning til formularmodul

Eksempelsamling. Forms. Eksempelsamling <form> <textarea></textarea> <input> <select> <option></option> </select> </form>

Dokumentering af umbraco artikeleksport:

Eksamen, DSDS, efterår 2008

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

PHP kode til hjemmeside menu.

SKOLELOGIN KNANPU1 FULDE NAVN ANAN PUSKAR URL TIL LØSNING URL TIL PORTFOLIO

Projekt 3: Interaktionsudvikling 11/04.14

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

The Design Diaries PHP projekt

At klippe en streng over på det mest hensigtsmæssige sted

PHP Crash course. Databaser

Database programmerings tips

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

DB undervisning 01-01

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold: Sådan opdaterer du din hjemmeside i Wordpress.

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

Regulære udtryk, 4. del, Kogebogsudtryk

Finanstilsynets indberetningssystem. Vejledning til Regnearksskabelonerne

Undtagelseshåndtering i C#

1 Sælgeroplysningsskema Bygningssagkyndig udfylder...2

Denne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-)

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

SQL for MySQL-begyndere

Integration af online tilbud

SESSION med PHP. En let begynderguide som kan føre dig ind i en verden af muligheder. Denne guide er oprindeligt udgivet på Eksperten.

Databaseadgang fra Java

Vejledning i Opretning af formularer

Introduktion til funktioner, moduler og scopes i Python

Matematik læringsprojekt Journal

Eksamen, DSDS, forår 2008

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

HTML, PHP, SQL, webserver, hvad er hvad??

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

GUIDE TIL IT-SYSTEMET RAMBØLL RESULTS

GUIDE TIL OPRETTELSE AF SIDER OG INDHOLD I UMBRACO ONLINE BETJENING

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Brugermanual. Outlook Web Access for Exchange Server 2003 (OWA 2003) Udarbejdet af IT-afdelingen 2006

Brugervejledning til Ofir Rekrutteringssystem - Kandidathåndtering

mailinglister i Revimentor

Form og dens underlige box model

Hej alle sammen, nu fjerner vi lige mystikken om alle de "ulovlige tags" her på eksperten.dk

Pralemappen.dk Din online portfolio Brugerhåndbog til undervisere Brugerhåndbog til undervisere

Singleton pattern i C#

Singleton pattern i Java

Arkitektur for begyndere

konsultation Patientinformation

Brugermanual. for Bygningsstyrelsens serviceportal

Transkript:

Denne guide er oprindeligt udgivet på Eksperten.dk Gæstebog med validering opbygget med MySQL Dette er en simpel gæstebog, som kan hjælpe folk med at lave en velfungerende gæstebog uden alt for meget arbejde. Gæstebogen benytter MySQL til at gemme posterne og alle input-felter bliver valideret inden de bliver indsat i databasen. Alle dele er grun Skrevet den 06. Feb 2009 af mstorgaard I kategorien Programmering / PHP Indledning Jeg har her lavet en simpel gæstebog, som sørger for at validere brugernes input. Jeg har med vilje undladt brugersystem, da jeg ikke finder det nødvendigt på en gæstebog, og at artiklen derved ville blive for omfattende. Gæstebogen er bygget simpelt op uden for mange overflødige ting. Indhold Gæstebogen indeholder validering af alle felter, da det skal sættes ind i en database. Der tjekkes derudover om navn og e-mail er korrekt. Funktionen <?php $db = mysql_connect("localhost", "root", "kodeord"); mysql_select_db("database", $db); $result = mysql_query("select * FROM gaestebog ORDER BY dato DESC;"); while($row = mysql_fetch_array($result)) { echo "<b ><a href=\"". $row['email']. "\">". $row['navn']. "</a>[/b] (". date("d/m, H:i", $row['dato']). "): ". $row['besked']. "<br />"; if(isset($_post['navn'])) { $navn = $_POST['navn']; if(isset($_post['email'])) { $email = $_POST['email']; if(isset($_post['besked'])) { $besked = $_POST['besked']; if(isset($_post['submit'])) { if(empty($_post['navn']) empty($_post['email']) empty($_post['besked'])) { if(empty($_post['navn'])) { echo "Navnet er ikke udfyldt<br />"; if(empty($_post['email'])) { echo "E-mailadressen er ikke udfyldt<br />"; if(empty($_post['besked'])) { echo "Beskeden er ikke udfyldt<br />"; else { if(!preg_match("[a-za-zæøåæøå]", $_POST['navn'])!preg_match("^[a-zA-ZæøåÆØÅ0-9._-]+@[a-zA- ZæøåÆØÅ0-9-]+\.[a-zA-ZæøåÆØÅ.]{2,5$", $_POST['email'])) { if(!preg_match("[a-za-zæøåæøå]", $_POST['navn'])) { echo "Navnet er ikke korrekt<br />"; if(!preg_match("^[a-za-zæøåæøå0-9._-]+@[a-za-zæøåæøå0-9-]+\.[a-za-zæøåæøå.]{2,5$", $_POST['email'])) { echo "E-mailadressen er ikke korrekt<br />"; else { $besked = mysql_escape_string($_post['besked']); $time = time(); mysql_query("insert INTO gaestebog VALUES('', '{$_POST['navn']', '{$_POST['email']', '$besked', '$time');"); echo "Beskeden er sendt<br />"; $navn = ""; $email = ""; $besked = "";

?> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Navn: <input type="text" name="navn" value="<?php echo $navn;?>" /><br /> E-mail: <input type="text" name="email" value="<?php echo $email;?>" /><br /> Besked: <textarea name="besked"><?php echo $besked;?></textarea><br /> <input type="submit" name="submit" value="send" /> </form> Det der skal sættes ind i databasen er følgende udtryk. Der indsætter jeg hver af de dele der skal bruges, hvilket vil sige id, navn, e-mail, besked og dato. Id bruges til at give hver besked et unikt navn i databasen, navn bruges til at fortælle hvem afsenderen er, e-mail bruges som kontaktinformation på afsenderen, besked bruges til vise hvad afsenderen har skrevet og dato bruges til at fortælle, hvornår beskeden er sendt: CREATE TABLE `gaestebog` ( `id` INT( 16 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, `navn` VARCHAR( 255 ) NOT NULL, `email` VARCHAR( 255 ) NOT NULL, `besked` TEXT NOT NULL, `dato` INT( 10 ) NOT NULL ) ENGINE = MYISAM ; Denne del bruges til at forbinde til databasen. Første del er til at forbinde til selve databasen, hvor man indtaster henholdsvis host, bruger og kodeord. Herefter vælger vi database: $db = mysql_connect("host", "bruger", "kodeord"); mysql_select_db("database", $db); Denne del trækker data ud af database. Første linje finder al data i tabellen "gaestebog", og sorterer dem efter, hvornår de er oprettet i faldende tilstand. Herefter bruger vi en "while"-løkke til at trække data ud, og skrive dem ud, hvilket vil komme til at se sådan her ud: "Navn (01/01, 00:00): Besked". Til sidst lukker vi løkken: $result = mysql_query("select * FROM gaestebog ORDER BY dato DESC;"); while($row = mysql_fetch_array($result)) { echo "<b ><a href=\"". $row['email']. "\">". $row['navn']. "</a>[/b] (". date("d/m, H:i", $row['dato']). "): ". $row['besked']. "<br />"; Denne del gør at variabler bliver tildelt felternes indhold. Dette bruges til at udfylde felterne igen, hvis der fremkommer en fejlmeddelelse: if(isset($_post['navn'])) { $navn = $_POST['navn']; if(isset($_post['email'])) { $email = $_POST['email']; if(isset($_post['besked'])) { $besked = $_POST['besked']; Denne del sætter processen i gang, hvis der er blevet trykket på Send-knappen:

if(isset($_post['submit'])) { Denne del tjekker om alle felterne er udfyldt. Først tjekker den om nogen af felterne er tomme, og hvis en af dem er tomme, går den videre og tjekker hvilke eller hvilket felt, som ikke er udfyldt. Til sidst sender den os videre, hvis felterne er udfyldte: if(empty($_post['navn']) empty($_post['email']) empty($_post['besked'])) { if(empty($_post['navn'])) { echo "Navnet er ikke udfyldt<br />"; if(empty($_post['email'])) { echo "E-mailadressen er ikke udfyldt<br />"; if(empty($_post['besked'])) { echo "Beskeden er ikke udfyldt<br />"; else { Denne del tjekker om navn og e-mailadresse er udfyldt korrekt. Først tjekker den, via regexp, om nogen af dem indeholder fejl, og hvis de gør, går den videre og tjekker hvilke eller hvilket felt, som indeholder fejl. Til sidst sender den os videre, hvis navn og e-mailadresse er korrekt udfyldte: if(!preg_match("[a-za-zæøåæøå]", $_POST['navn'])!preg_match("^[a-zA-ZæøåÆØÅ0-9._-]+@[a-zA- ZæøåÆØÅ0-9-]+\.[a-zA-ZæøåÆØÅ.]{2,5$", $_POST['email'])) { if(!preg_match("[a-za-zæøåæøå]", $_POST['navn'])) { echo "Navnet er ikke korrekt<br />"; if(!preg_match("^[a-za-zæøåæøå0-9._-]+@[a-za-zæøåæøå0-9-]+\.[a-za-zæøåæøå.]{2,5$", $_POST['email'])) { echo "E-mailadressen er ikke korrekt<br />"; else { Denne del sender beskeden. Først sørger den for at besked-værdien ikke indeholder nogen farlige tegn, hvorefter den definerer variablen $time, så man har et timestamp på hvornår beskeden er oprettet. Herefter indsætter den beskeden i tabellen "gaestebog". Til sidst skriver den at den har sendt beskeden, så brugeren også ved det: $besked = mysql_escape_string($_post['besked']); $time = time(); mysql_query("insert INTO gaestebog VALUES('', '{$_POST['navn']', '{$_POST['email']', '$besked', '$time');"); echo "Beskeden er sendt<br />"; Denne del bruges til at nulstille variablerne til felterne. Det er for blandt andet at undgå åbenlyst at lægge op til dobbeltpost eller spam: $navn = ""; $email = ""; $besked = ""; Denne del bruges til at afslutte de forskellige dele. Den er der ikke så meget at sige om, men syntes lige den skulle med (:

Og får lige at få de sidste tabte sjæle med, så kan jeg fortælle at jeg bruger dette til at indlemme mine PHP-koder: <?php?> Denne del er selve formlen. Først definerer jeg hvilken måde jeg bruger til at sende med, og derefter bruger jeg $_SERVER['PHP_SELF'] til at udføre vores submit i denne fil. De næste er inputfelterne, og så indsætter jeg en værdi, hvis det skal bruges. Dem har jeg defineret i starten af funktionen, og hvis e- mailen er blevet sendt er de variabler så blevet tømt igen. Den sidste del er knappen, som jeg bruger til at sende. Det vigtige ved den er at den hedder submit, da det er den, som sætter funktionen i gang, når der er blevet trykket sendt. <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Navn: <input type="text" name="navn" value="<?php echo $navn;?>" /><br /> E-mail: <input type="text" name="email" value="<?php echo $email;?>" /><br /> Besked: <textarea name="besked"><?php echo $besked;?></textarea><br /> <input type="submit" name="submit" value="send" /> </form> Afslutning Tak, fordi du læste med, og jeg håber, du kan bruge min artikel til noget. Giv endelig konstruktive kommentarer. Opdateringer 27-02-2007: ÆØÅ-validering tilføjet 27-02-2007: ereg() erstattet med preg_match() Kommentar af wicez (nedlagt brugerprofil) d. 01. Mar 2007 1 Meget rodet kode, med mange unødvendige linier - eksempelvis er der ingen grund til at bruge andre variable for $_POST-variablene. Kommentar af danieru d. 26. Feb 2007 2 Enig med windcape, rodet kode :o) men virker, det gør det da :P Kommentar af lylover d. 01. May 2007 3 Kunne godt tænke mig du prøvede ikke at undlade bruger system.. Tror man ville lære mere af det ;) Kommentar af windcape d. 26. Feb 2007 4 rodet kode, benytter gammeldags ereg (preg er bedre), ingen indents (hvilket gør den ulæselig), bruger PHP_SELF hvilket ikke er brugbart i et miljø hvor action ikkke skal reffere til filnavnet, men også en querystring. Derudover ville en mere moderne tilgang nok være at foretrække. Kig f.eks. på http://www.dragons-lair.org/module/repository/php/guestbook for et eksempel... Men godt forsøgt. Kommentar af fwskp d. 12. Mar 2007 5

Der findes efterhånden mange "alm." gæstebøger. Hvad med at udvide den med noget captcha?