Guestbook

Door Jasper Geelen, 14 jaar geleden, 6.395x bekeken

LAST UPDATED: *10-10-2008*



Smilies: Download (plaats deze vervolgens in ./smilies/)

Allereerst moet je een database aanmaken met de naam 'guestbook'

Dit database heeft de volgende instellingen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
CREATE TABLE `messages` (
  `ID` int(11) NOT NULL auto_increment,
  `Name` text NOT NULL,
  `Date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `Message` text NOT NULL,
  `Unique` text NOT NULL,
  `NoBot` text,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Hierna is alleen nog de code nodig en zou het gastenboek als goed is moeten werken! :)

Enjoy!

Gesponsorde koppelingen

PHP script bestanden

  1. guestbook

 

Er zijn 58 reacties op 'Guestbook'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Iltar van der berg
iltar van der berg
14 jaar geleden
 
0 +1 -0 -1
Je zou eventueel even je autoincrement weer op 1 kunnen zetten

edit:
En waar is de spam protecten, invoer validatie administratie etc?
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Hé ik ben pas een beginneling! (A)

spam protectie heb ik doormiddel van md5 gedaan.. elk bericht krijgt een unieke "code" en wordt opgeslagen in het database, als je nog een keer precies hetzelfde bericht post, dan herkent hij die unieke code en weigert het bericht te posten.

Just as a note: Dit is mijn allereerste "expiriment" geweest met PHP en had hiervoor ook nog helemaal GEEN ervaring :)

// Jasper

-Edit- Ik ben trouwens nog op zoek naar een leuk nieuw "projectje" waar ik me in kan gaan verdiepen qua PHP, dus als iemand nog suggesties heeft :)
PHP erik
PHP erik
14 jaar geleden
 
0 +1 -0 -1
Je script is niet beveiligd tegen SQL injection. Google maar even. (hint: je moet je $_REQUEST-waardes escapen voordat je ze insert in de database)
- SanThe -
- SanThe -
14 jaar geleden
 
0 +1 -0 -1
Geinig. Je kan ook gewoon een leeg bericht plaatsen.

Niet handig dat je formulier helemaal onderaan staat.
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
Je site lijkt verdacht veel op die van phphulp :P
- SanThe -
- SanThe -
14 jaar geleden
 
0 +1 -0 -1
@Jacco: Wat een giller.... Hahahaha.
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
En nu alsof je het meent :P

Krijg je dr van als je niets beters te doen heb
- SanThe -
- SanThe -
14 jaar geleden
 
0 +1 -0 -1
Nee, ik vind het echt een giller. Even verbaasd en toen hard lachen.
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
nog even een opmerking over de code, zeg het geheel even tussen tags
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
@ Jacco: Haha idd..nu je het zegt.. dat was écht niet mijn bedoeling hoor :P dat is echt gewoon puur toeval.. :p

@ SanThe: Ja ik weet het.. Zoals ik zei ben nog een beginneling en dit is me allereerste ervaring met PHP en heb dus nog niet echt uitgevonden hoe ik 'eisen' kan stellen aan het bericht zegmaar :p

@ PHPerik: Dat gaat me nog een beetje boven me pet (A) iets te ingewikkeld nog hahaha

Bedankt voor al jullie reacties!
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
ok nu begint het problematische vormen aan te nemen,

Jasper, kleine tip, trek hem offline
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Ja ik merkte het al..moet ff manier zien te vinde om HTML code's te blocken -.- mensen denken blijkbaar grappig te zijn door iemand met goede bedoelingen zijn gastenboek onderuit te halen ofzo..bedankt iig!
Karl Karl
Karl Karl
14 jaar geleden
 
0 +1 -0 -1
En html kan je doen...
Heel leuk voor je dat dit je eerste script is, maar naja zullen we het maar naar de prullenbak sturen?
- Backtricks
- Geen xss beveiliging
- Geen fout controle
- Geen spam controle
- Tabellen
....
Quote:
Jasper Geelen schreef op 10.09.2008 14:17
-.- mensen denken blijkbaar grappig te zijn door iemand met goede bedoelingen zijn gastenboek onderuit te halen ofzo..bedankt iig!

Nee, je laten zien en testen dat je script brak is.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
*leest de url* www.phpHULP.nl ..veel hulp krijg je hier niet zo te zien..misschien een URL change?
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Als je dat als "Hulp" ziet, dan zou k toch echt maar eens het woordenboek erbij pakken.

-Edit- Doe DAT dan ipv me hele gastenboek te verneuken met allemaal doorlink shit waardoor ik m geforceerd offline moet halen
Mebus  Hackintosh
Mebus Hackintosh
14 jaar geleden
 
0 +1 -0 -1
Weer zo een dom slecht script. Ga eerst eens leren scripten. Beveilig je scripts eens goed..
Karl Karl
Karl Karl
14 jaar geleden
 
0 +1 -0 -1
Quote:
Jasper Geelen schreef op 10.09.2008 14:23
-Edit- Doe DAT dan ipv me hele gastenboek te verneuken met allemaal doorlink shit waardoor ik m geforceerd offline moet halen

Wees blij dat wij
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>
testte en niet ergere dingen (dit script kan geen kwaad, alleen om te laten zien dat je fout bezig bent).
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
Jasper je heb 2 pm's
Tikkes C
Tikkes C
14 jaar geleden
 
0 +1 -0 -1
Oké maar jasper heeft misschien wel gelijk vind ik zelf.
Een beetje vriendelijkheid kan toch, dat vraagt echt geen moeite en inderdaad...de site is phpHULP. hou daar rekening mee, iedereen moet nog leren!
- SanThe -
- SanThe -
14 jaar geleden
 
0 +1 -0 -1
Vriendelijkheid kan nooit kwaad. Maar als iemand een script in de scriptlib plaatst dan mag je daar wel het een en ander van verwachten.
PHP erik
PHP erik
14 jaar geleden
 
0 +1 -0 -1
Ik vind de toon van sommige mensen ook wel iets te ver gaan, maar je kan inderdaad op z'n minst van een script verwachten dat het veilig is. Niet omdat we allemaal perfecte scripts willen zien, maar omdat andere mensen anders onveilige scripts gaan gebruiken.

1. Filter de data (het bericht) met strip_tags()
2. Escape de data die je insert eerst met mysqli_real_escape_string()

Als je dat allebei hebt gedaan ben je al een heel eind, en het is heel eenvoudig. Als je hulp nodig hebt vraag het maar.
Leroy Boerefijn
Leroy Boerefijn
14 jaar geleden
 
0 +1 -0 -1
je hebt gelijk met phpHULP.nl, maar dit is niet het hulp gedeelte, wil je hulp: post op het forum. het idee achter deze lib is dat mensen goede scripts kunnen plukken als ze zelf niet gevorderd genoeg zijn om het te maken ;)
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
Leroy,

ook als ze gewoon te lui zijn om het zelf te maken hoor :P
Tristan nvt
Tristan nvt
14 jaar geleden
 
0 +1 -0 -1
@SantThe - da's een tekortkoming van deze site, dat er 0,0 controle op de aanmeldingen voor de scriptlib zit.
Jelle -
Jelle -
14 jaar geleden
 
0 +1 -0 -1
@Jasper, je kunt ook je script plaatsen op het forum met de vraag wat mensen er van vinden, mensen kopiëren en plakken uit deze script-library en dat is niet echt leuk als die mensen dan erachter komen dat er van alles met hun site word uitgehaald middels een simpel gastenboek ;)
Arian Stolwijk
Arian Stolwijk
14 jaar geleden
 
0 +1 -0 -1
Ik vind dat Leroy en Smuf Minions gelijk hebben.

Het forum is er voor als je hulp wilt bij het maken van een script.

De scriptlib is er voor om anderen te helpen, door goede scripts aan te bieden.

Natuurlijk kan je een keer een script plaatsen voor feedback, maar dan moet je wel zeker weten dat het goed en veilig werkt en van een redelijk niveau is.

Als je begint met php scripts schrijven, en je wilt feedback, dan kan je daar beter mee naar het forum, dat houdt de scriptlib schoon met kwalitatieve scripts! Dat werkt weer in het voordeel van de beginners. Want als alleen maar er kwalitatieve scripts zijn, dan weet een beginner ook zeker dat het een goed script is wat hij hier vandaan haalt.

Dit houdt natuurlijk natuurlijk niet in dat je mensen moet vernederen e.d. Kritiek is goed, als het maar opbouwend is!
ToySoldier ZegIkNiet
ToySoldier ZegIkNiet
14 jaar geleden
 
0 +1 -0 -1
Wat een debieltjes hier op PHPHulp. Iemand zn script helemaal verneuken en zo grappig willen zijn. HAHA! GRAPPIG! *NOT*.
Tikkes C
Tikkes C
14 jaar geleden
 
0 +1 -0 -1
Helemaal mee eens ToySoldier!

maar het punt dat het script eerst op het forum zou mogen belanden...daar kan ik het niet helemaal oneens mee zijn! (Wat hen niet het recht geeft om zo'n dingen te doen!)
ToySoldier ZegIkNiet
ToySoldier ZegIkNiet
14 jaar geleden
 
0 +1 -0 -1
Eerst keuren op forum en dan pas de lib in - Ja.
Iemand afkraken omdat het niet gebeurd - Nee.

Dan moeten de administrators daar maar voor zorgen, dat scripts goedkeuring nodig hebben.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Ik ben het met jullie allen eigenlijk allemaal een beetje eens :p Ja het wat fout van me om hem meteen hier te posten, maar ik (die niet verder keek dan ze neus lang is) wist niet dat dit een lib was voor ECHT goed werkende scripts only, ik dacht dat iedereen hier gewoon kon posten om wat feedback te krijgen :) Zelf was ik er zelfs nog niet eens van op de hoogte dat je een site op allerlei manieren moet beveiligen, as i've said, dit is me ALLEREERSTE ervaring met PHP (of wat voor andere programmeertaal dan ook).. Anyway, bedankt voor de mensen die me werkelijk willen helpen!
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Heb nu sowieso de strip_tags() toegevoegd waardoor dat gekloot met die iframes enzo als het goed is verholpen moet zijn :p
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Zou ook nog graag wat feedback over de layout van het hele script willen hebben als dat kan.. :)

- Is het overzichtelijk?
- Is het logisch opgebouwd?
- Etc etc.

Bedankt!
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
Waarom kies je er onderaan voor je form te echo-en (waar je geen php in gebruikt) om vervolgs je php af te sluiten en nog ff 3 tags nee te zetten?

Je moet je styles in een losse file zetten eigenlijk.

Je controleert nergens of je query's gelukt zijn en dus geef je ook geen melding op het moment dat het mislukt is.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
real_escape_string() toegevoegd.

@ Jacco:
Form: Goed punt..heb 't ff veranderd.
Styles: Klopt, niet echt een rede waarom ik dat nog niet gedaan heb :p
Query's: ??? o.O
PHP erik
PHP erik
14 jaar geleden
 
0 +1 -0 -1
Ik vind dat mensen die hier lopen te klagen dat het script zo slecht is nu eens goed moeten beseffen dat de meeste professionele developers bijna alle scripts die gepost worden op PHPhulp ronduit drama vinden, en daar doen we ook niet moeilijk over. Ik heb echt héél héél zelden scripts gezien die een dergelijk niveau hebben dat professionals het zouden gebruiken. Wat de meeste mensen niet zien is dat ze zelf denken prachtige scripts te posten, terwijl je 100 dingen aan architectuur en efficiency verpest. Daar heb je ons ook nooit over horen klagen. Daarnaast zul je nooit een goede developer horen zeggen dat een script niet goed genoeg is; als mede-developer geef je tips, tenzij het écht helemaal nergens op slaat (copypaste, PHP3).

Een beetje respect voor nieuwe mensen is op z'n plaats. Als we met z'n allen kiezen voor een mentaliteit van "ik kan het beter, dit is slecht" dan zou ik jullie allen willen verzoeken al je scripts naar mij op te sturen zodat ik het kan beoordelen en je publiekelijk voor schut kan zetten. Be my guest.

Als iemand een script plaatst en hij vergeet wat dingen te beveiligen dan wijs je 'm daar op, klaar. Geef iemand wat ruimte. Met dit puberale geschreeuw lok je alleen maar puberale situaties uit.

Het niet-controleren van scripts is geen tekortkoming, het is Web 2.0. Je bent als community verantwoordelijk voor beoordelingen en feedback. Ga niet de auteur volledig afblaffen zonder dat je zelf fastoenlijk kan programmeren. Dat je het misschien beter kan is leuk voor je, maar niemand is perfect. Help elkaar. Want zo kom je zelf ook nergens. Nu krijg je ook de situatie dat als er een "OOP guestbook" bij zou komen (dat misschien beter is dan deze) dat ik het ook volledig ga afkraken op grond van architectuur, schaalbaarheid, onderhoudbaarheid, veiligheid, logica, object oriented regels, etccccc.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Laten we het hierbij houden wat betreft het gedrag van mensen, het is niet de bedoeling dat dit een ongelovelijke drama-post word :)
Jacco Engel
Jacco Engel
14 jaar geleden
 
0 +1 -0 -1
@phpErik

Heb geen zin om je hele verhaal te quoten:

Quote:
*het hele verhaal van phpErik*


Als je mijn eerlijke mening wil weten denk ik inderdaad dat jij wat vaker moet lopen zijn op OOP dingen en dergelijken. Daar leert iedereen van.

Verder ben ik het er in zo verre mee eens dat je nieuwe mensen niet alleen maar moet afzijken. Eerst afzeiken en vervolgens helpen is een stuk beter.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Ik probeer nu trouwens in te stellen dat je persé allebei de velden moet invullen om te kunnen/mogen posten, voor zover ik weet moet dat met iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (empty($name) || empty($comment))

Maar ik kan niet uitvogelen wáár ik die 'if' moet plaatsen..help plx?
Tikkes C
Tikkes C
14 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

if(empty($_POST['name']) OR empty($_POST['comment'])) {
    
    return("Beide velden moeten worden ingevuld.");

   }


$comment = nl2br(strip_tags($_REQUEST["comment"]));
$hashed_comment

.....
?>


Alsjeblieft
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
@ Tikkes: Op die manier geeft ie de hele pagina niet weer omdat de text boxes by default leeg zijn..
Tikkes C
Tikkes C
14 jaar geleden
 
0 +1 -0 -1
zet dat dan bij net voor je insert in de db!
Tristan nvt
Tristan nvt
14 jaar geleden
 
0 +1 -0 -1
Quote:
Het niet-controleren van scripts is geen tekortkoming, het is Web 2.0. Je bent als community verantwoordelijk voor beoordelingen en feedback.


Dan moet de site in kwestie daar wel de mogelijkheid toe geven.
Verder ben ik 't met je eens :)
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
@ Tikkes: Ik heb m nu idd bij de insert gezet en nu werkt het wel! Bedankt! :)
Tikkes C
Tikkes C
14 jaar geleden
 
0 +1 -0 -1
Anytime ;)
The Ultimate
The Ultimate
14 jaar geleden
 
0 +1 -0 -1
Nog een tip:
Haal uit het originele script jouw database gegevens en plaats ze in een aparte map met een .htaccess bestand/beveiliging. Dan kunnen kwaadwilligen niet zomaar bij de database gegevens. Je moet dan wel ff een connect-scriptje maken en
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include("map/connect.php"); ?>
.

ff googelen op het .htaccess bestand...
Lode
Lode
14 jaar geleden
 
0 +1 -0 -1
@Iltar...

Post jij eens wat van al die zooi die ik je geleerd heb...
Ik bedoel jij ging toch een forum maken?
Ki ma
ki ma
14 jaar geleden
 
0 +1 -0 -1
@Bart
Ik heb net even op google rond gesnuffeld maar kon niet vinden hoe je kan includen met een htaccess bestand.. ?
Iltar van der berg
iltar van der berg
14 jaar geleden
 
0 +1 -0 -1
Ja lode dat zei je goed, _ging_
Ruliezz
ruliezz
14 jaar geleden
 
0 +1 -0 -1
Waarom gebruik je strip_tags() ??
--
--
14 jaar geleden
 
0 +1 -0 -1
@Kima, hij bedoelt waarschijnlijk het beveiligen met htaccess.
Zoek ook eens op htaccess icm htpasswd.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
@ ruliezz: zodat je geen html tags of iets dergelijke meer kunt gebruiken om ervoor te zorgen dat mijn pagina doorgelinkt word naar weet ik veel wat en vast nog veel ergere dingen.
ToySoldier ZegIkNiet
ToySoldier ZegIkNiet
14 jaar geleden
 
0 +1 -0 -1
Ik zou sowieso geen echo gebruiken, maar alles wegschrijven naar variables en die op de pagina weergeven. (Naar de variable $content of iets dergelijks en later print $content; doen.)

(PS, ik heb gehoord dat print sneller is, is dat ook zo? o0)


14 jaar geleden
 
0 +1 -0 -1
@Bart:
Beetje late reactie, maar zolang het wachtwoord maar is opgeslagen in een .php bestand zal een kwaadwillende er van buitenaf toch niet bij kunnen.
Als je het in een aparte map zet bereik je enkel dat het bestand volledig niet meer te bereiken is, maar als jij een stukje code hebt als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$gebruikersnaam
= "root";
$wachtwoord = "blaat";
?>

En je voert dit uit, dan komt er toch geen info op het scherm. Dus ook het wachtwoord niet.
Emmanuel Delay
Emmanuel Delay
14 jaar geleden
 
0 +1 -0 -1
Ik heb niet alles gelezen, waarschijnlijk is het al gezegd.

Wat mij het meest tegen de borst stuit, is dat je zowel het formulier naar de gebruiker stuurt en tegelijk het bericht in de db steekt.

Doe 1 van de twee.

Wanneer je de POST leest, moet je niets echo'en. Gewoon de insert uitvoeren en daarna terug naar de pagina springen, met header('location ... ');


Maar doe vooral voort.
Maarten
maarten
14 jaar geleden
 
0 +1 -0 -1
ik snap niks van deze codes jongens?
Script0x
Script0x
14 jaar geleden
 
0 +1 -0 -1
Waarom zet je de haakjes ` om een tabelnaam heen in de query's?

Verder ziet het er wel netjes uit.
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Kleine aanpassing:
Hidden field die leeg moet zijn om te kunnen posten, om de overlast van Spambots tegen te gaan (Spambots vullen in de meeste gevallen alle velden in, dus zullen ze niet kunnen posten).
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jasper Geelen
Jasper Geelen
14 jaar geleden
 
0 +1 -0 -1
Nog een aanpassing:
10 posts per pagina met onderaan een "Navigatie" om te veranderen van pagina.

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

Inhoudsopgave

  1. guestbook

Labels

  • Geen tags toegevoegd.

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.