Beveiliging gastenboek

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Applicatie ontwikkelaar

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! In deze functie werk jij voornamelijk aan: Het onderhouden en ontwikkelen van de IT systemen; Het opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werk je aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkel en implementeren je MS PowerApps en Power BI. Bedrijfsprofiel Je komt terecht bij een familiair

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

Senior .NET developer

Functie Als Senior .NET ontwikkelaar ga jij aan de slag in ons Research & development team. Ons team bestaat uit 17 collega’s! Wij zijn momenteel druk bezig met het opzetten van een geheel nieuwe architectuur voor een nieuw product. Hierbij maken wij o.a. gebruik van VS2022 en .NET 6.0. Jouw functie is dan ook voornamelijk backend georiënteerd bij ons. Aangezien wij meetapparatuur ontwikkelen voor de chemische industrie is het ook erg belangrijk om kwalitatief hoogwaardige software te ontwikkelen voor de besturing hiervan. Verder ben jij verantwoordelijk voor het designen, implementeren en testen van nieuwe features. Ook zorg jij voor toekomstbestendige

Bekijk vacature »

PHP Developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

PHP developer - Digital Agency

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een gewaardeerde werkgever in regio Oosterhout zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je brengt de aanpassingssuggesties van klanten in kaart, om

Bekijk vacature »

Junior .NET developer

Functie Wij zijn bezig met het ontwikkelen van een nieuw product en wij hebben jouw hulp hierbij nodig! Als junior .NET ontwikkelaar krijg jij de kans om samen met ons deze nieuwe uitdaging aan te gaan! Momenteel bestaat ons team uit drie interim Software Engineers. Twee hiervan zijn zeer ervaren .NET specialisten die inmiddels hun strepen in dit vakgebied al hebben behaald. Ook hebben wij een junior als onderdeel van ons team die zich op dit moment nog bezig houdt met de Front-end (Angular/TypeScript), maar zich nu ook meer gaat verdiepen in de backend. Wij willen ons team graag verder

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

Senior Front end developer

Functie Wij zijn op zoek naar een ambitieuze, zelfsturende Front-end Expert die ons (internationale) team komt versterken. Onze huidige software development afdeling bestaat uit 7 developers en designers. Wij zijn een écht softwarehuis, dus ervaring in software development is wel echt een must. Er wordt tegelijkertijd aan meerdere projecten gewerkt, voor mooie toonaangevende klanten. Je hebt dus regelmatig te maken met deadlines en opleveringen. Een deel van onze omgeving is in Angular.JS. Dit deel wordt langzamerhand omgebouwd naar de nieuwste versie van Angular. Jouw werkzaamheden zullen bestaan uit: Het aansturen en begeleiden van jouw collega’s Het implementeren van visuele elementen

Bekijk vacature »

Junior PHP Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

Software Developer PHP

Functie omschrijving We are looking for a dutch native speaker Voor een opdrachtgever in de regio van Geldrop ben ik op zoek naar een Software Developer PHP. Jij krijgt een rol met veel verantwoordelijkheid in een groeiende organisatie. In deze functie werkt je voornamelijk remote en op een vast moment kom je met het team samen, om samen te werken en nieuwe doelen te bepalen. Wat ga je doen? Je wordt verantwoordelijk voor de interne applicatie; Je zorgt voor de doorontwikkeling van de applicatie: zowel back-end, front-end; De basis van het werk betreft front-end technieken; Periodiek bepaal je samen met

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »
Dick oo

dick oo

21/05/2009 10:21:00
Quote Anchor link
Nieuwe vragen onderaan...

Hoi :)
Ik ben gister even bezig geweest met m'n gastenboek.. en hij is ook nog af xD edit.php en add.php zijn natuurlijk voor de admin.. Ik denk dat ik de admin weer ga beveiligen met het alleen toestaan van bepaalde ip's
Het script is in eerste instantie voor mijzelf, maar misschien dat ik het hier ook op PHPhulp ga zetten...
Er zitten al twee beveiligingen op tegen spam: captcha en antiflood..
Maar nog niet tegen sql injection.. daar heb ik nog niet erg veel verstand van en daarom vraag ik om jullie hulp!
Ik post hieronder mijn script,, welke beveiliging kan ik erbij doen? (misschien klein voorbeeldje erbij? :$)


Add.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<link href="style.css" rel="stylesheet" type="text/css">
<? include("antiflood.php"); ?>   // gewoon antiflood ;)

<?php
include("config.php");

$tekst = "";   // standaard geen foutmelding ;)
$ip = $_SERVER['REMOTE_ADDR'];   // even ip opvragen

if(!empty($_POST)){
    if(empty($_POST["naam"])){
        $tekst = "Er is geen naam ingevuld. <br>";
    }


    if(empty($_POST["email"])){
        $tekst .= "Er is geen email ingevuld. <br>";
    }

    

    if(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $_POST["email"])) {
        $tekst.= "Het ingevulde emailadres is niet geldig. <br>";
    }


    if(empty($_POST["bericht"])){
        $tekst .= "Er is geen bericht ingevuld. <br>";
    }


    if (md5($_POST['norobot']) != $_SESSION['randomnr2']){
        $tekst .= "Er is geen code ingevuld, of de code was verkeerd. <br>";
    }


    if(empty($tekst)){
        $query = "INSERT gastenboek (id, naam, email, bericht, datum, tijd, ip)";
        $query .= "VALUES ('', '";
        $query .= $_POST["naam"] . "', '";
        $query .= $_POST["email"] . "', '";
        $query .= $_POST["bericht"] . "', '";
        $query .= $_POST["datum"] . "', '";
        $query .= $_POST["tijd"] . "', '";
        $query .= $_POST["ip"] . "')";

        if(!mysql_query($query)){
            echo "Het toevoegen van het bericht is mislukt.";
            mysql_close($db);
            exit;
        }
else {
            echo "Het bericht is toegevoegd! <br> U wordt na 5 seconden doorgestuurd naar het gastenboek. <br> Als dit niet gebeurt of als u geen geluld heeft, klik dan <a href='index.php'>hier</a>.";
            mysql_close($db);
            echo "<meta http-equiv='REFRESH' content='5; URL=index.php'>";
        }
    }
else {
        echo $tekst;
    }
}
else {
?>


<form name="gb" method="post" action="<? echo $_SERVER["PHP_SELF"]; ?>">
Naam: <input type="text" name="naam"> <br>
Email: <input type="text" name="email"> <br>
Bericht: <br> <textarea name="bericht"></textarea> <br>
Typ de volgende code over: <br>
<img src="captcha.php" style="margin-bottom: -6px;"> <input class="input" type="text" name="norobot"> <br><br>
<input type="hidden" name="datum" value="<? echo date("Y"); ?>">
<input type="hidden" name="tijd" value="<? echo date("M"); ?>">
<input type="hidden" name="ip" value="<? echo $ip ?>">
<input type="submit" value="Toevoegen">
<input type="reset" value="Leegmaken">
</form>
<? } ?>


delete.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
include("config.php");


if(isset($_POST["bevestiging"])){
    $query = "DELETE FROM gastenboek WHERE id='" . $_POST["id"] ."'";
    mysql_query($query);

    echo "Het bericht is verwijderd.";
}
else {
    $query = "SELECT * FROM gastenboek WHERE id='" . $_GET["id"] . "'";
    $resultaat = mysql_query($query);
?>


Wilt u het volgende bericht verwijderen? <br><br>

<?php
while(list($id, $naam, $email, $bericht, $datum, $tijd, $ip) = mysql_fetch_row($resultaat)){
    echo "Naam: $naam <br>";
    echo "Email: $email <br>";
    echo "Bericht: $bericht <br><br>";
}

?>


<form action="<? echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<? echo $_GET["id"]; ?>">
<input type="submit" value="Verwijderen">
<input type="button" value="Nee, terug" onclick="javascript:history.go(-1);">
</form>

<?php
}
?>


edit.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<link href="style.css" rel="stylesheet" type="text/css">

<?php
session_start();
include("config.php");
$tekst = "";

if(isset($_POST["bevestiging"])){
    if(empty($_POST["naam"])){
        $tekst = "Er is geen naam ingevuld. <br>";
    }


    if(empty($_POST["email"])){
        $tekst .= "Er is geen email ingevuld. <br>";
    }

    

    if(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $_POST["email"])) {
        $tekst.= "Het ingevulde emailadres is niet geldig. <br>";
    }


    if(empty($_POST["bericht"])){
        $tekst .= "Er is geen bericht ingevuld. <br>";
    }


    if (md5($_POST['norobot']) != $_SESSION['randomnr2']){
        $tekst .= "Er is geen code ingevuld, of de code was verkeerd. <br>";
    }


    if(empty($tekst)){
        $query = "UPDATE gastenboek SET
            naam = '"
. $_POST["naam"] ."',
            email = '"
. $_POST["email"] ."',
            bericht = '"
. $_POST["bericht"] ."'
            WHERE id='"
. $_POST["id"] ."'";
        if(!mysql_query($query)){
            echo "Het wijzigen van het bericht is mislukt.";
            mysql_close($db);
            exit;
        }
else {
            echo "Het bericht is gewijzigd!";
            mysql_close($db);
        }
    }
else {
        echo $tekst;
    }
}
else {

$query = "SELECT * FROM gastenboek WHERE id='". $_GET["id"] ."'";
$resultaat = mysql_query($query);
while(list($id, $naam, $email, $bericht) = mysql_fetch_row($resultaat)){
    $nm = $naam;
    $el = $email;
    $bt = $bericht;
}

?>


<h3>Wijzig een bericht</h3>

<form action="<? echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<? echo $_GET["id"]; ?>">
Naam: <input type="text" name="naam" value="<? echo $nm; ?>"> <br>
Email: <input type="text" name="email" value="<? echo $el; ?>"> <br>
Bericht: <textarea name="bericht"><? echo $bt; ?></textarea> <br>
Typ de volgende code over: <br>
<img src="captcha.php" style="margin-bottom: -6px;"> <input class="input" type="text" name="norobot"> <br><br>
<input type="submit" value="Bijwerken">
<input type="button" value="Nee, terug" onclick="javascript:history.go(-1);">
</form>

<?php
}
?>


index.php
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
<?php
include("config.php");
$query = "SELECT * FROM gastenboek";
$resultaat = mysql_query($query, $db);
mysql_close($db);
?>


<h3>Gastenboek</h3>

<?php
while(list($id, $naam, $email, $bericht, $datum, $tijd, $ip) = mysql_fetch_row($resultaat)){
    echo "$naam <br>";
    echo "$email <br>";
    echo "$bericht <br>";
    echo "<font color='grey'>Geschreven op $datum om $tijd</font>";
    echo "<hr>";
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Dick oo
 
PHP hulp

PHP hulp

08/01/2025 21:52:32
 
Jesper Diovo

Jesper Diovo

21/05/2009 10:32:00
Quote Anchor link
mysql_real_escape_string() om $_GET en $_POST variabelen die een string bevatten. $_GET en $_POST variabelen die een integer bevatten, moet je casten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
(int)$_GET['id'];
?>


Even over je script zelf:
- Je controleert of een formulier is verzonden op de volgende manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
?>

Niet met empty($_POST) of isset($_POST['submit']).
- Gebruik mysql_fetch_assoc() i.p.v mysql_fetch_row(). Veel sneller.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    $nm
= $naam;
    $el = $email;
    $bt = $bericht;
?>

- Waarom dat?
- Om een getal hoeven geen quotes in een query. Die kunnen er gewoon zo in.
- Variabelen buiten quotes!
- Al dat mysql_close() is op zich overbodig...
- Waarom heb je bij edit.php session_start() staan? Je werkt helemaal niet met sessies...
- Je kunt beter $_SERVER['REQUEST_URI'] gebruiken i.p.v. $_SERVER['PHP_SELF'].
- Je kunt ook beter preg_match() gebruiken i.p.v. eregi(). Ereg_* functies gaan er met PHP6 uit, je kunt beter daar al voorbereid op zijn voordat je ineens al je scripts moet ombouwen.
- Gebruik geen <font>-tags! Daar is <span> voor. Font is verouderd en lelijk.
- Gebruik de tags volledig, geen shorttags. (<?php ?> i.p.v. <? ?>)

Nja er is op zich nog wel meer. Maar dat is voor nu nog niet zo belangrijk. Zorg eerst maar eens dat bovenstaande punten opgelost zijn.
 
Dick oo

dick oo

21/05/2009 10:38:00
Quote Anchor link
Bedankt :D
Ik ga er vanmiddag even rustig voor zitten en even nakijken ;)
Ik gebruik wel sessies, met de captcha ;)
Én met de antiflood
 

21/05/2009 10:38:00
Quote Anchor link
Add.php:
Controleren of een form gepost is met $_SERVER['REQUEST_METHOD'].
Ereg is oud, gebruik liever preg_*.
Deze regel klopt niet: if (md5($_POST['norobot']) != $_SESSION['randomnr2']){ (regel 28).
Gebruik mysql_real_escape_string.
Selecteer niet *, maar alles wat je wilt hebben. * kan voor problemen zorgen, bovendien is het overzichtelijker om te zien wat je selecteerd.
Vervang echo "<meta http-equiv='REFRESH' content='5; URL=index.php'>"; door een header.
Waar is <html><head> en <body>?

delete.php
Zelfde manier form post controle als hierboven.
Selecteer niet *, maar alles wat je wilt hebben. * kan voor problemen zorgen, bovendien is het overzichtelijker om te zien wat je selecteerd.
Met mysql_fetch_assoc hoef je de data niet met list in vars stoppen, dan kan je de data gewoon als array benaderen.
Gebruik mysql_real_escape_string.
Variabelen buiten quotes.
Waar is <html><head> en <body>?

edit.php
Session_start moet voordat er enig data naar de browser is verstuurt worden aangeroepen (als je gebruik maakt van cookies).
De rest van Add.php is hier ook van toepassing.

index.php
Selecteer niet *, maar alles wat je wilt hebben. * kan voor problemen zorgen, bovendien is het overzichtelijker om te zien wat je selecteerd.
Waar is de foutafhandeling van de sql?
Variabelen buiten quotes.
Met mysql_fetch_assoc hoef je de data niet met list in vars stoppen, dan kan je de data gewoon als array benaderen.
 
Jesper Diovo

Jesper Diovo

21/05/2009 10:39:00
Quote Anchor link
Quote:
Ik gebruik wel sessies, met de captcha ;)
Én met de antiflood

Waarom dan alleen in edit.php? Die moet dan toch overal terugkomen?
 
Dick oo

dick oo

21/05/2009 11:01:00
Quote Anchor link
Nee dat hoeft niet, tis alleen beveiliging dat je niet zoveel berichten elke keer plaatst. Anders kan je bv maximaal 15 paginas zien in 1 minuut...
 
Dick oo

dick oo

12/09/2009 11:48:00
Quote Anchor link
Ok ik heb een nieuwe versie van add.php
Doe ik het nu goed qua beveiliging?
Aan of opmerkingen?

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
## add.php
<?php
session_start();    // zorg ervoor dat dit helemaal bovenaan de pagina staat!
include_once("connect.php");    // vereist voor het verbinden met de MySQL database
$tekst = "";    // als er iets niet ingevuld is komt hier de foutmelding in staan

if($_SERVER['REQUEST_METHOD'] == "POST") {
    if(empty($_POST['naam'])){
           $tekst .= "Geen naam ingevuld. <br>";
    }


    if(empty($_POST['email'])){
       $tekst .= "Geen email ingevuld. <br>";
    }
else {
       if(!preg_match('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$^', $_POST["email"])) {
           $tekst.= "Het ingevulde emailadres is niet geldig. <br>";
       }
    }


    if(empty($_POST['bericht'])){
       $tekst .= "Geen bericht ingevuld. <br>";
    }


    if(empty($_POST['norobot'])){
       $tekst .= "Geen verificatiecode ingevuld. <br>";
    }
else {
       if (md5($_POST['norobot']) != $_SESSION['randomnr2']){
           $tekst .= "Verificatiecode is niet goed. <br>";
       }
    }


    if(empty($tekst)){
        $query = "INSERT berichten (id, naam, email, bericht, datum, tijd, verberg, ip) ";
        $query .= "VALUES ('', '";
        $query .= mysql_real_escape_string($_POST['naam']) . "', '";
        $query .= mysql_real_escape_string($_POST['email']) . "', '";
        $query .= mysql_real_escape_string($_POST['bericht']) ."', '";
        $query .= $_POST['datum'] . "', '";
        $query .= $_POST['tijd'] . "', '";
        $query .= mysql_real_escape_string($_POST['verberg']) . "', '";
        $query .= $_POST['ip'] . "')";

        if(!mysql_query($query)){
            // fout tijdens INSERT
            echo "Je bericht kon niet toegevoegd worden. Er is een email gestuurd naar de administrator.";
            exit;
        }
else {
            header("location:" . $lezen);
        }
    }
else {
        echo $tekst;
        }

}
else {
?>


<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<input type="hidden" value="<?php echo date("H:i"); ?>" name="tijd">
<input type="hidden" value="<?php echo date("d-m-Y"); ?>" name="datum">
<input type="hidden" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" name="ip">
    <table>
    <tr>
        <td><img src="images/naam.png"> Naam:</td> <td><input type="text" name="naam" class="button"></td>
    </tr>
    <tr>
        <td><img src="images/email.png"> Email:</td> <td><input type="text" name="email" class="button"></td>
    </tr>
    <tr>
        <td></td> <td><input type="checkbox" name="verberg" value="1" alt="Verberg mijn email"> <span style="color:grey;font-size:11px;">verberg email</span></td>
    </tr>
    <tr>
        <td><img src="images/bericht.gif"> Bericht:</td> <td><textarea class="textarea" name="bericht"></textarea> </td>
    </tr>
    <tr>
        <td><img src="images/key.png"> Verificatiecode:</td> <td><img src="captcha.php"> <input class="input" type="text" name="norobot"></td>
    </tr>
    <tr>
        <td></td><td><input type="submit" value="Verzenden"> <input type="reset" value="Wissen"></td>
    </td>
    </table>
</form>

<?php } ?>


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
## index.php
<?php
include_once("connect.php");
$query = mysql_query("SELECT naam,email,bericht,datum,tijd,verberg FROM berichten");

while($geg = mysql_fetch_assoc($query)){
    if($geg['verberg'] == 0){
        $poster = '<a href="mailto:' . $geg['email'] . '">' . $geg['naam'] . '</a>';
    }
else {
           $poster = $geg['naam'];
    }



    echo "<p><div class=\"comments\" id=\"head\"><b>" . $poster . "</b> " . $geg['datum'] . " @ " . $geg['tijd'] . "<span style=\"float:right\"><a href=\"#\">Quote</a></span></div>
        <div class=\"comments\" id=\"bericht\">"
. $geg['bericht'] . "</div>
        <div class=\"comments\" id=\"clear\"></div></p>"
;
}


echo "<a href=\"toevoegen.php\">Bericht toevoegen</a>";
?>
Gewijzigd op 01/01/1970 01:00:00 door dick oo
 

12/09/2009 12:00:00
Quote Anchor link
Je gebruikt nog steeds eregi, die gaat eruit, gebruik liever preg_*.
Je doet twee keer $datum, $tijd, $ip aanmaken, waarom? Bovendien kan je in de database een veld van het type datetime maken waarin je gewoon NOW() kan stoppen. (En je genereert die waarden met php dus hoeft er geen mysql_real_escape_string over.)
Wat is $lezen?
Je hebt nog steeds halve html pagina's.
Waarom staan die datum en tijd in een hidden input in de form?
Waar is de foutafhandeling van de sql?
Ik weet niet of iedereen d'r wel op zit te wachten dat je dat email adres gewoon met een mailto op je pagina's neer zet.
 
Dick oo

dick oo

12/09/2009 12:16:00
Quote Anchor link
Ohja die was ik vergeten.
Twee keer t zelfde is een fout omdat ik erachter kwam dat iets niet werkte.
Ok dat zal ik ook even veranderen. ik moet wel heel erg goed kijken naar NOW() omdat te snappen.
Ik wil er geen complete HTML pagina van gaan maken, want miss wil ik het publiceren en dan moet het gemakkelijk in te bouwen zijn.
$lezen is de pagina waar je heen gaat als je iets hebt geplaats, die staat ingesteld in connect.php ;)
En daarom kun je ook je email verbergen!
Met de hidden inputs vind ik het zo het makkelijkst. Misschien dat ik die hidden inputs weghaal en die in een string zet vlak voor de query. Dat wel goed?

Deels aangepast.

Waar moet ik nog foutafhandeling en hoe? Weer met "or die()"?
Gewijzigd op 01/01/1970 01:00:00 door dick oo
 
Dick oo

dick oo

15/09/2009 17:41:00
Quote Anchor link
Naja ik ben bijna klaar met het scripten.
Ik post hieronder even de belangrijkste delen, de style enzo is niet nodig :P
Waar moet ik allemaal nog foutafhandeling dan? En hoe? Volgens mij heb ik al heeeeeeeeeeeel veeel.
Ik ben nog bezig HTML tags enzovoort toe te voegen, dat doe ik liever als laatste, 't makkelijkst ;P Ohja in connect.php staat wel doctype enzovoort, anders worden de berichten qua opmaak niet goed xD


* Beveiligd tegen mysql injection
* Captcha
* Lege velden controle
* Pagination
* Admin: berichten bewerken en verwijderen, tabel legen


ToDo:
* UBB functie
* Adminpagina beveiligen
* HTML opmaken


Hebben jullie ook nog ideeen om erin te doen?
Graag op-/aanmerkingen :)

add.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
session_start();    // zorg ervoor dat dit helemaal bovenaan de pagina staat!
require("connect.php");    // vereist voor het verbinden met de MySQL database
$tekst = "";    // als er iets niet ingevuld is komt hier de foutmelding in staan

if($_SERVER['REQUEST_METHOD'] == "POST") {
    if(empty($_POST['naam'])){
           $tekst .= "Geen naam ingevuld. <br>";
    }


    if(empty($_POST['email'])){
       $tekst .= "Geen email ingevuld.<br>";
    }
else {
       if(!preg_match('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$^', $_POST["email"])) {
           $tekst.= "Het ingevulde emailadres is niet geldig. <br>";
       }
    }


    if(empty($_POST['bericht'])){
       $tekst .= "Geen bericht ingevuld.<br>";
    }


    if(empty($_POST['norobot'])){
       $tekst .= "Geen verificatiecode ingevuld. <br>";
    }
else {
       if (md5($_POST['norobot']) != $_SESSION['randomnr2']){
           $tekst .= "Verificatiecode is niet goed. <br>";
       }
    }


    if(empty($tekst)){
        $datum = date("d-m-Y");
        $tijd = date("H:i");
        $ip = $_SERVER['REMOTE_ADDR'];

        $query = "INSERT berichten (id, naam, email, bericht, datum, tijd, verberg, ip) ";
        $query .= "VALUES ('', '";
        $query .= mysql_real_escape_string($_POST['naam']) . "', '";
        $query .= mysql_real_escape_string($_POST['email']) . "', '";
        $query .= mysql_real_escape_string($_POST['bericht']) ."', '";
        $query .= $datum . "', '";
        $query .= $tijd . "', '";
        $query .= mysql_real_escape_string($_POST['verberg']) . "', '";
        $query .= $ip . "')";

        if(!mysql_query($query)){
            // fout tijdens INSERT
            echo "Je bericht kon niet toegevoegd worden. Er is een email gestuurd naar de administrator.";
            exit;
        }
else {
            if($mail == 1){
               mail($email, $onderwerp, $bericht, $header);
            }

            header("location:" . $lezen);
        }
    }
else {
        echo "<span style=\"color:red;\">" . $tekst . "</span>";
        }

}
else {
?>


<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
    <table>
    <tr>
        <td><img src="images/naam.png"> Naam:</td> <td><input type="text" name="naam" class="button"></td>
    </tr>
    <tr>
        <td><img src="images/email.png"> Email:</td> <td><input type="text" name="email" class="button"></td>
    </tr>
    <tr>
        <td></td> <td><input type="checkbox" name="verberg" value="1" alt="Verberg mijn email"> <span style="color:grey;font-size:11px;">verberg email</span></td>
    </tr>
    <tr>
        <td><img src="images/bericht.gif"> Bericht:</td> <td><textarea class="textarea" name="bericht"></textarea> </td>
    </tr>
    <tr>
        <td><img src="images/key.png"> Verificatiecode:</td> <td><img src="captcha.php"> <input class="input" type="text" name="norobot"></td>
    </tr>
    <tr>
        <td></td><td><input type="submit" value="Verzenden"> <input type="reset" value="Wissen"></td>
    </td>
    </table>
</form>

<?php } ?>


admin.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
    <link type="text/css" rel="stylesheet" href="style_admin.css">
    <title>Administrator Gastenboek &copy; </title>
</head>
<body>

<?php
// Verbinden met de database
require("connect.php");

// Aantal entries in tabel tellen
$count = mysql_query("SELECT COUNT(id) FROM berichten");
$totaal = mysql_result($count, 0);

// Query om gegevens uit de tabel te halen
$query = mysql_query("SELECT id,naam,email,bericht,datum,tijd,ip FROM berichten");

// Datum in een array
$Maand = array("", "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
$dag = date("d");
$maand = date("n");
$jaar = date("Y");
$tijd = date("H:i");
$beginjaar = 2007;

// Gegevens weergeven
echo "<div id=\"container\">";
echo "<h1 style=\"text-align: center;\"><a href=\"" . $admin . "\">Administrator</a></h1> <br>";

// Eventuele actie ophalen, anders gegevens weergeven

if($totaal == 0){
    echo "Er zijn geen berichten.";
}
else if(isset($_GET['action'])){
    $action = $_GET['action'];
        if($action == 'clearTable'){
            echo "<h3>Tabel legen</h3>";
            if($_SERVER['REQUEST_METHOD'] == "POST") {
                mysql_query("TRUNCATE TABLE " . $tabel);
                echo "De tabel is leeggemaakt. <br><br> Je wordt na 5 seconden teruggestuurd naar de adminpagina.";
                header("Refresh: 5; URL=\"" . $admin . "\"");
            }
else {
            ?>

                Weet je zeker dat je de hele tabel "<?php echo $tabel; ?>" wilt legen? <br><br>
                Deze actie kan niet ongedaan worden.
                <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" name="clear" method="post"> <br>
                <input type="submit" value="Legen"> <input type="button" value="Nee, terug" onClick="window.open('<?php echo $admin; ?>','_self')">
                </form>
            <?php
            }
        }

        if($action == 'edit' && isset($_GET['id']) && is_numeric($_GET['id'])){
            echo "<h3>Gegevens bewerken</h3><br>";
                    if($_SERVER['REQUEST_METHOD'] == "POST") {
                        $query = "UPDATE berichten SET
                            naam = '"
. mysql_real_escape_string($_POST['naam']) . "',
                            email = '"
. mysql_real_escape_string($_POST['email']) . "',
                            bericht = '"
. mysql_real_escape_string($_POST['bericht']) . "'
                            WHERE id='"
. $_GET["id"] . "'";
                        if(mysql_query($query)){
                            echo "Bericht gewijzigd. <br><br> Je wordt na 5 seconden teruggestuurd naar de adminpagina.";
                            header("Refresh: 5; URL=\"" . $admin . "\"");
                        }
else {
                            echo "Het bericht kon niet gewijzigd worden, probeer het later opnieuw.";
                            header("Refresh: 5; URL=\"" . $admin . "\"");
                        }
                    }
else {
                        $query = mysql_query("SELECT id,naam,email,bericht,datum,tijd,ip FROM berichten WHERE id='" . $_GET["id"] . "'");
                        while($edit = mysql_fetch_assoc($query)){
                        ?>

                            <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" name="edit" method="post">
                            <img src="images/naam.png"> Naam: <input type="text" name="naam" class="button" value="<?php echo $edit['naam']; ?>"> <br><br>
                            <img src="images/email.png"> Email: <input type="text" name="email" class="button" value="<?php echo $edit['email']; ?>"> <br><br>
                            <img src="images/bericht.gif"> Bericht: <br><br>
                                <textarea class="textarea" name="bericht"><?php echo $edit['bericht']; ?></textarea> <br><br>
                            <input type="submit" value="Bewerken"> <input type="button" value="Nee, terug" onClick="window.open('<?php echo $admin; ?>','_self')">
                            </form>
                    
                        <?php
                        }
                    }
        }

        if($action == 'delete' && isSet($_GET['id']) && is_numeric($_GET['id'])){
            echo "<h3>Gegevens verwijderen</h3><br>";
                if($_SERVER['REQUEST_METHOD'] == "POST") {
                    $query = "DELETE FROM berichten WHERE id='" . $_GET["id"] . "'";
                    if(mysql_query($query)){
                        echo "Het verwijderen is gelukt! <br><br> Je wordt na 5 seconden teruggestuurd naar de adminpagina.";
                        header("Refresh: 5; URL=\"" . $admin . "\"");
                    }
else {
                        echo "Het bericht kon niet verwijderd worden, probeer het later opnieuw. <br><br> Je wordt na 5 seconden teruggestuurd naar de adminpagina.";
                        header("Refresh: 5; URL=\"" . $admin . "\"");
                    }
                }
else {
                    $query = mysql_query("SELECT id,naam,email,bericht,datum,tijd,ip FROM berichten WHERE id='" . $_GET["id"] . "'");
                    while($del = mysql_fetch_assoc($query)){
                        $del['naam'] = ucwords(strtolower($del['naam']));
                        $del['bericht'] = nl2br($del['bericht']);
                    ?>

                        <!-- Gegevens die verwijderd moeten worden weergeven -->
                        <i><b>Bericht-id:</b></i> #<?php echo $del['id']; ?>
                        <br><br> <i><b>Naam:</b></i> <?php echo $del['naam']; ?>
                        <br><br> <i><b>Email:</b></i> <?php echo $del['email']; ?>
                        <br><br> <i><b>Bericht:</b></i> <br> <?php echo $del['bericht']; ?>
                        <br><br> <i><b>Datum & tijd:</b></i> <?php echo $del['datum']; ?> @ <?php echo $del['tijd']; ?>
                        <br><br> <i><b>IP:</b></i> <?php echo $del['ip']; ?>
                    
                        <!-- Formulier daadwerkelijk weergeven -->
                        <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" name="delete" method="post"> <br>
                        <input type="submit" value="Verwijderen"> <input type="button" value="Nee, terug" onClick="window.open('<?php echo $admin; ?>','_self')">
                        </form>
                    
                    <?php
                    }
                }
    }
        }
else {

        echo "<br> <table width=\"200%\" align=\"center\" style=\"text-align: center; font-weight:bold;\">
                <tr>
                    <td width=\"5%\">ID</td>
                    <td width=\"10%\">Naam</td>
                    <td width=\"15%\">Email</td>
                    <td width=\"25%\">Bericht</td>
                    <td width=\"15%\">Datum / Tijd</td>
                    <td width=\"10%\">IP</td>
                    <td width=\"10%\">Bewerk</td>
                    <td width=\"10%\">Verwijder</td>
             </table><hr>"
;
            
    while($geg = mysql_fetch_assoc($query)){
        $geg['naam'] = ucwords(strtolower($geg['naam']));
        $geg['bericht'] = nl2br($geg['bericht']);
        echo "<table width=\"200%\" align=\"center\" style=\"text-align: center\">
                <tr>
                    <td width=\"5%\">#"
. $geg['id'] . "</td>
                    <td width=\"10%\">"
. $geg['naam'] . "</td>
                    <td width=\"15%\"><a href=\"mailto:"
. $geg['email'] . "\">" . $geg['email'] . "</a></td>
                    <td width=\"25%\">"
. $geg['bericht'] . "</td>
                    <td width=\"15%\">"
. $geg['datum'] . " @ " . $geg['tijd'] . "</td>
                    <td width=\"10%\">"
. $geg['ip'] . "</td>
                    <td width=\"10%\"><a href=\"?action=edit&id="
. $geg['id'] . "\"><img src=\"images/edit.png\" border=\"0\"></a></td>
                    <td width=\"10%\"><a href=\"?action=delete&id="
. $geg['id'] . "\"><img src=\"images/delete.png\" border=\"0\"></a></td>
                </tr>
             </table><hr>"
;
    }

    echo "<br><br><a href=\"?action=clearTable\">Wis</a> alle berichten uit de tabel.";
}


echo "<div id=\"main\" class=\"clearfix\"></div>";
echo "<div id=\"push\"></div>";
echo "</div>";
echo "<div id=\"footer\">
        Copyright &copy; "
. $beginjaar . " - " . $jaar . " ~ Het is vandaag " . $dag . " " . $Maand[$maand] . " " . $jaar . " - " . $tijd . " ~ <a href=\"" . $lezen . "\">index</a> ~ <a href=\"" . $schrijven . "\">schrijven</a></div>";
?>


</body>
</html>


connect.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<link type="text/css" rel="stylesheet" href="style.css">

<?php
// MySQL server, 99% van de tijd "localhost"
$server = "localhost";
// Gebruikersnaam voor MySQL server
$gebruiker = "root";
// Wachtwoord voor MySQl server
$wachtwoord = "***";
// Database voor de entries
$database = "gastenboek";
// Tabel in $database
$tabel = "berichten";

// Pagina waar je de entries kan lezen
$lezen = "index.php";
// Pagina waar je een entry kan toevoegen
$schrijven = "add.php";
// Adminpagina
$admin = "admin.php";

// Naam (editen)
$naam = "de administrator";

// Email bij entry? TRUE voor ja, FALSE voor nee
$mail = false;
// Emailadres
$email = "[email protected]";
// Onderwerp
$onderwerp = "Nieuwe entry in je gastenboek!";
// Bericht
$bericht = "<html><head><title>" . $onderwerp . "</title></head><body>In je gastenboek is het volgende geplaatst: <br> blabla</body></html>";
// Headers, HTML email sturen
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Headers, verander hier het emailadres en eventueel "Gastenboek"
$header .= 'From: Gastenboek <[email protected]>' . "\r\n";

$db = mysql_connect($server, $gebruiker, $wachtwoord) or die ('Kon geen verbinding maken met MySQL.');
mysql_select_db($database) or die ("Kon de database niet vinden.");
?>


index.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
// Vereist voor het verbinden met de database
require("connect.php");

// Aantal entries in tabel tellen
$count = mysql_query("SELECT COUNT(id) FROM berichten");
$totaal = mysql_result($count, 0);

// Aantal reacties per pagina showen
$aantalReacties = 2;
$aantalPaginas =  ceil($totaal / $aantalReacties);

// Pagina opvragen, zoniet huidige pagina is 0
$pagina = 0;
if(isset($_GET['pagina']) && $_GET['pagina'] > 0 && $_GET['pagina'] <= $aantalPaginas && is_numeric($_GET['pagina'])){
    $pagina = $_GET['pagina'];
}


// Gegevens voor huidige pagina
$reactiesPagina = $pagina * $aantalReacties;
$huidigePagina = mysql_query("SELECT id,naam,email,bericht,datum,tijd,verberg FROM berichten ORDER BY id DESC LIMIT " . $reactiesPagina.",".$aantalReacties);

// Gegevens voor huidige pagina showen
if($totaal == 0){
    echo "Er zijn geen berichten, <a href=\"" . $schrijven . "\">plaats</a> als eerste een bericht!";
}
else {
    while($geg = mysql_fetch_assoc($huidigePagina)){
        $geg['naam'] = ucwords(strtolower($geg['naam']));
        if($geg['verberg'] == 0){
            $poster = '<a href="mailto:' . $geg['email'] . '">' . $geg['naam'] . '</a>';
        }
else {
            $poster = $geg['naam'];
        }

    
        echo "<p><div class=\"comments\" id=\"box\">
            <div class=\"comments\" id=\"head\"><b>"
. $poster . "</b> " . $geg['datum'] . " @ " . $geg['tijd'] . "<span style=\"float:right\"><a href=\"?q=" . $geg['id'] . "\">Quote</a></span></div>
            <div class=\"comments\" id=\"bericht\"><p>"
. $geg['bericht'] . "</p></div>
            <div class=\"comments\" id=\"clear\"></div>
            </div></p>"
;
    }

    echo "<br><a href=\"" . $schrijven . "\">Plaats</a> een bericht";
}


echo "<br><br>";

// Paginanummering
for($i = 0; $i < $aantalPaginas; $i++) {
    if($pagina == $i) {
        if($aantalPaginas == 1){
            echo "";
        }
else {
            echo "<b>".($i+1)."</b>";
        }
    }
else {
        echo "<a href=\"".$_SERVER['REQUEST_URI']."?pagina=".$i."\">".($i+1)."</a>";
    }

    if($i < $aantalPaginas - 1) {
        echo " - ";
    }
}

?>
Gewijzigd op 04/03/2013 15:06:59 door Joren de Wit
 
Mark L

Mark L

15/09/2009 17:59:00
Quote Anchor link
Misschien kun je - naast een maximaal aantal berichten, ook dubbele berichten eruit filteren. Het kan namelijk wel eens gebeuren dat iemand op de submitbutton drukt, de pagina half geladen is > de add-query al is uitgevoerd, maar de pagina nog niet bij de gebruiker aangekomen is.
Nu heb ik nog wel eens de neiging - en met mij vele anderen - om nóg een keer op de submitbutton te drukken, als het laden lang duurt (gewoon, zeker zijn dat hij laadt). Het kan nu dus zijn dat het bericht er 2 keer staat.

Wat je hiertegen kunt doen:
Voor je het bericht insert in je database, controleer je of er een bericht is, dat precies hetzelfde is, de gebruiker hetzelfde is én ook de tijd tussen dat bericht en het 'nieuwe' bericht betrekkelijk kort is. Zo niet, dan aanmaken, zo wel dan heb je een dubbele.
 
- SanThe -

- SanThe -

15/09/2009 19:27:00
Quote Anchor link
Je uiteindelijke html zal niet echt W3C valid zijn.
 
Dick oo

dick oo

15/09/2009 21:45:00
Quote Anchor link
Nee dat dacht ik al :$
Daarom doe ik de HTML ook op het laatst ;)
Ik heb alle outputs van de HTML door de validator, geen fouten meer :)
Ik zal de code vnaaf nog ff veranderen...
Gewijzigd op 01/01/1970 01:00:00 door dick oo
 



Overzicht Reageren

 
 

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.