Uitgebreider Gastenboek

Door Tobias Tobias, 14 jaar geleden, 6.016x bekeken

Ik heb het gastenboek van Donhertog gebruikt voor mijn eigen website.
Omdat ik problemen heb met mijn regel-website, kan ik niet bij mijn SQL-server komen, en moet ik al mijn SQL-werk mbv PHP-scripts regelen.

Daarom heb ik het script aangepast zodat ik ook alles kan beheren in het gastenboek:
- Berichten verwijderen
- Scheldwoordenfilter uitbreiden
- Smiley's toevoegen (uploaden) en verwijderen

Wat ik nog toevoegen in de toekomst:
- Inloggen voor de webmaster
- IP-ban
- Bij veel berichten meerdere pagina's aanmaken (bv 10 berichten per pagina)

Tabellen:

Voor het gastenboek:
$qTabelmaken = 'CREATE TABLE `gastenboek` (
`id` int(55) NOT NULL auto_increment,
`naam` varchar(55) NOT NULL,
`reactie` text NOT NULL,
`email` varchar(55) NOT NULL,
`datum` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14';
$rTabelmaken = mysql_query( $qTabelmaken );

Voor de scheldwoordenfilter:
$qTabelmaken = 'CREATE TABLE `gastenboekscheldwoorden` (
`id` int(55) NOT NULL auto_increment,
`woord` varchar(55) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14';
$rTabelmaken = mysql_query( $qTabelmaken );

voor de smiley's:
$qTabelmaken = 'CREATE TABLE `gastenboeksmiley` (
`id` int(55) NOT NULL auto_increment,
`afbeelding` varchar(55) NOT NULL,
`afkorting` varchar(120) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14';
$rTabelmaken = mysql_query( $qTabelmaken );

Ik hoop dat Donhertog het niet erg vind dat ik dit post, zo wel, laat maar weten, dan verwijder ik hem direct weer.

Gesponsorde koppelingen

PHP script bestanden

  1. uitgebreider-gastenboek

 

Er zijn 13 reacties op 'Uitgebreider gastenboek'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- SanThe -
- SanThe -
14 jaar geleden
 
0 +1 -0 -1
Je script is nu niet echt leesbaar. Pas je post even aan en gebruik en tags om je code heen. Om php code zet je uiteraard dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>


SanThe.
Gerben G
Gerben G
14 jaar geleden
 
Ik vind het helemaal niet erg dat je hem hier post. Ik ben blij dat je wel mijn naam genoemd hebt. Het zo trouwens ook leuk zijn als je nog even een werkend voorbeeld toevoegd.
Roel -
Roel -
14 jaar geleden
 
Ja zet je code tussen en zet bij code gewoon een spatie, want anders staat het HTML gedeelte niet in de tabel.
- SanThe -
- SanThe -
14 jaar geleden
 
0 +1 -0 -1
Oeps, foutje.
`datum` varchar(20) NOT NULL,

Dat is dus géén datum maar tekst.
Tobias Tobias
Tobias Tobias
14 jaar geleden
 
0 +1 -0 -1
Sorry, de eerste keer dat ik een script post, zo zou hij beter moeten zijn.

SanThe: Ik heb nog niet helemaal door hoe het datum-gebeuren werkt in mijn database, dus sla ik het altijd op als varchar. Hij hoeft ook niet echt als datum te functioneren die in opmaak aan te passen is na het opslaan.
Mark D
Mark D
14 jaar geleden
 
0 +1 -0 -1
@Tobias, voor jouw doeleinden is het misschien minder belangrijk om een datum op te slaan als DATE, maar zodra iemand dit script wil gebruiken en ipv de datum bijvoorbeeld wil laten weergeven als 3 uur geleden of 5 dagen geleden zit je met je VARCHAR. Het is daarom gewoonte om datum op te slaan als DATE of een van de verwante types, zodat de database weet welke soort data hij moet verwachten, en de database kan dan weer extra functies bieden om een datum anders op te halen, of verschillen tussen data te berekenen. Altijd opslaan als een datum formaat dus.
Steen
steen
14 jaar geleden
 
0 +1 -0 -1
Verwijder de scheldwoordenfilter, die zal nooit fatsoenlijk werken. Zie het vorige gastenboek.
Tobias Tobias
Tobias Tobias
14 jaar geleden
 
0 +1 -0 -1
@Mark: Bedankt voor je advies. Zover had ik idd nog niet nagedacht.
Ik moet me toch wat meer verdiepen in dat datum-gebeuren.
Die extra functies zijn wel erg handig als het aantal berichten erg groot en je bv een zoekfunctie met filter wilt toepassen.
Steen
steen
14 jaar geleden
 
0 +1 -0 -1
Ooit aan gebruiksvriendelijkheid gedacht? Ik vul een veld niet in en krijg direct een lelijk scherm met 'je hebt niet alles ingevuld.', denk je dat gebruikers daar op zitten te wachten? Maak een formvalidatie met het form er naast en geeft precies aan wat er fout gaat.

Beveilig je de 'webmaster' ook nog met een wachtwoord of moet iedereen zelf maar ?actie=webmaster achter de URL gaan typen?
Tobias Tobias
Tobias Tobias
14 jaar geleden
 
0 +1 -0 -1
@Steen. Ik ben bezig met de beveiliging. Ik mag hopen dat jij niet de persoon bent die zojuist de boel leeg gegooid heeft?
Het voorbeeld is hierbij verwijderd!
Steen
steen
14 jaar geleden
 
0 +1 -0 -1
Nog wat puntjes:
-
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<? vervangen door [code]<?php
- Css include zou ik in je head zetten als html, niet als php.
-
Connectie helemaal bovenaan includen.
-
Doctype op n regel zetten (voor het overzicht).
-
$naam == '' vervangen door empty($naam)
-
wil je toch een schelwoordenfilter vervang dan in $reactie = str_replace($woord,'******', $reactie); de sterretjes door het aantal tekens.

[
code]
 $naam=$_POST['naam'];
  $naam = ucfirst(strtolower($_POST['naam']));
[
/code]

Ucfirst is voor het tonen niet?

[
code]
$naam = strtolower(trim($_POST['naam']));

// tonen

echo htmlentities(ucfirst($naam));
[
/code]


14 jaar geleden
 
0 +1 -0 -1
@Tobias: Debug eerst je script en laat hem eerst even beoordelen voordat je hem hier plaats. Je script is dus nog niet af, zo te lezen. Een iemand "hackt" (gewoon een slechte beveiliging) en je haalt direct het voorbeeld eraf? Beetje jammer. Vraag hoe je dit kan oplossen en pas dat direct toe.

Je had hier naar mijn idee beter eerst een topic voor kunnen openen. Dan had je kunnen zien wat er precies moet worden veranderd om dit script gewoon normaal en goed te kunnen krijgen. Op dit moment is je gastenboek namelijk volgens mij op het eerste oog ernstig vatbaar voor SQL Injecties.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Steen
steen
14 jaar geleden
 
0 +1 -0 -1
mysql_fetch_array >> mysql_fetch_assoc
(assoc is sneller)

$naam = htmlspecialchars($naam);
zo sla je iets niet op in de database, dit is alleen voor het tonen

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

Inhoudsopgave

  1. uitgebreider-gastenboek

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.