gastenboek
gastenboek zelf:
Code (php)
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
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
<?php
echo "<h1>Gastenboek</h1>\n";
echo "<p><a href=\"nieuw.php\">Schrijf ook iets in het gastenboek</a></p>\n";
// MySQL-selectiequery opstellen:
$sql = 'SELECT * '; // Selecteer alle gegevens
$sql .= 'FROM `gastenboek` '; // uit de tabel 'gastenboek'
$sql .= 'ORDER BY `bericht_id` DESC '; // en sorteer ze aflopend.
// Aflopend sorteren op de datum en tijd:
// $sql .= 'ORDER BY `datum` DESC , `tijd` DESC ';
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die(mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die(mysql_error());
// Alle records weergeven:
while ($rij = mysql_fetch_assoc($resultaat)) {
// Alinea met de datum, tijd en tekst:
echo '<p style="border-top: dotted 2px gray;">';
echo '<span style="color: gray;">[';
$datum = $rij["datum"];
// Datum eventueel converteren van YYYY-MM-DD naar DD-MM-YYYY:
if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $datum, $substring)) {
echo "$substring[3]-$substring[2]-$substring[1]";
} else {
echo $datum;
}
echo ' om ';
echo $rij["tijd"];
echo "]</span> ";
echo nl2br($rij["tekst"]);
echo "</p>\n";
// Alinea met de ondertekening:
echo '<p style="margin-left: 25%">';
$naam = $rij["naam"];
if ((is_null($naam)) or (strlen($naam) < 1)) {
echo "Anoniem";
} else {
echo $naam;
$emailadres = $rij["email"];
if (strlen($emailadres) >= 7) {
$emailadres = geenSpam($emailadres);
echo "<br><" . $emailadres . ">";
}
$website = $rij["website"];
if (strlen($website) >= 5) {
echo '<br><a href="http://' . $website . '">';
echo $website;
echo '</a>';
}
}
echo "</p>\n";
}
// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);
function geenSpam($string, $nadruk = FALSE)
{
if ($nadruk) {
$string = str_replace("@", " <strong>apenstaartje</strong> ", $string);
$string = str_replace(".", " <strong>punt</strong> ", $string);
} else {
$string = str_replace("@", " apenstaartje ", $string);
$string = str_replace(".", " punt ", $string);
}
return $string;
}
?>
echo "<h1>Gastenboek</h1>\n";
echo "<p><a href=\"nieuw.php\">Schrijf ook iets in het gastenboek</a></p>\n";
// MySQL-selectiequery opstellen:
$sql = 'SELECT * '; // Selecteer alle gegevens
$sql .= 'FROM `gastenboek` '; // uit de tabel 'gastenboek'
$sql .= 'ORDER BY `bericht_id` DESC '; // en sorteer ze aflopend.
// Aflopend sorteren op de datum en tijd:
// $sql .= 'ORDER BY `datum` DESC , `tijd` DESC ';
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen met mysql_connect():
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
// Database 'test' selecteren:
mysql_select_db("test") or die(mysql_error());
// Query uitvoeren en een resultaatset opslaan:
$resultaat = mysql_query($sql) or die(mysql_error());
// Alle records weergeven:
while ($rij = mysql_fetch_assoc($resultaat)) {
// Alinea met de datum, tijd en tekst:
echo '<p style="border-top: dotted 2px gray;">';
echo '<span style="color: gray;">[';
$datum = $rij["datum"];
// Datum eventueel converteren van YYYY-MM-DD naar DD-MM-YYYY:
if (ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $datum, $substring)) {
echo "$substring[3]-$substring[2]-$substring[1]";
} else {
echo $datum;
}
echo ' om ';
echo $rij["tijd"];
echo "]</span> ";
echo nl2br($rij["tekst"]);
echo "</p>\n";
// Alinea met de ondertekening:
echo '<p style="margin-left: 25%">';
$naam = $rij["naam"];
if ((is_null($naam)) or (strlen($naam) < 1)) {
echo "Anoniem";
} else {
echo $naam;
$emailadres = $rij["email"];
if (strlen($emailadres) >= 7) {
$emailadres = geenSpam($emailadres);
echo "<br><" . $emailadres . ">";
}
$website = $rij["website"];
if (strlen($website) >= 5) {
echo '<br><a href="http://' . $website . '">';
echo $website;
echo '</a>';
}
}
echo "</p>\n";
}
// Resultaatset vrijgeven:
mysql_free_result($resultaat);
// Databaseverbinding sluiten:
mysql_close($verbinding);
function geenSpam($string, $nadruk = FALSE)
{
if ($nadruk) {
$string = str_replace("@", " <strong>apenstaartje</strong> ", $string);
$string = str_replace(".", " <strong>punt</strong> ", $string);
} else {
$string = str_replace("@", " apenstaartje ", $string);
$string = str_replace(".", " punt ", $string);
}
return $string;
}
?>
Nieuw.php:
Code (php)
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
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
<?php
$melding = ""; // Variabele voor foutmeldingen
$tekst = "";
$naam = "";
$emailadres = "";
$website = "";
// Formulier alleen verwerken als op de knop met de naam 'submit'
// EN de waarde 'Toevoegen' is geklikt:
if (isset($_POST['submit'])) {
if ($_POST['submit'] == "Toevoegen") {
$datum = date("Y-m-d");
$tijd = date("H:i:s");
$tekst = $_POST['t'];
$naam = $_POST['n'];
$emailadres = $_POST['e'];
$website = $_POST['w'];
// HTML-tags verwijderen uit de tekst met strip_tags() en
// pas DAARNA de tekst omzetten in HTML met htmlentities():
$tekst = strip_tags($tekst);
$tekst = htmlentities($tekst);
// Het voorvoegsel "http://" verwijderen uit de URL van de website:
$website = eregi_replace("^http://", "", $website);
// Overige invoer omzetten in HTML-tekens, vooral voor
// de naam, want voor een e-mailadres of URL hoeft dat niet:
$naam = htmlentities($naam);
$emailadres = htmlentities($emailadres);
$website = htmlentities($website);
// Alleen een tekst van minimaal 4 tekens
// en maximaal 500 woorden toevoegen:
define("MINIMUMAANTAL_TEKENS", 4);
define("MAXIMUMAANTAL_WOORDEN", 500);
$aantal_tekens = strlen($tekst);
$aantal_woorden = str_word_count($tekst);
if (($aantal_tekens >= MINIMUMAANTAL_TEKENS) and ($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
// MySQL-toevoegquery opstellen:
$sql = "INSERT INTO `gastenboek` ";
$sql .= "(`bericht_id`, `datum`, `tijd`, `tekst`, `naam`, `email`, `website`) ";
$sql .= "VALUES ";
$sql .= "('', '$datum', '$tijd', '$tekst', '$naam', '$emailadres', '$website') ";
$sql .= "; ";
// Databaseverbinding openen en query uitvoeren:
require_once('mysql_connect.inc.php');
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$toegevoegd = mysql_query($sql) or die(mysql_error());
mysql_close($verbinding);
// Browser omleiden naar het gastenboek
// als de bijdrage is toegevoegd:
if ($toegevoegd) {
header("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/gastenboek.php");
exit;
}
} else {
// Foutmelding weergeven:
if (!($aantal_tekens >= MINIMUMAANTAL_TEKENS)) {
$melding .= "De tekst is te kort.";
}
if (!($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
$melding .= "Uw tekst telt " . $aantal_woorden . " woorden. ";
$melding .= "Kort de tekst in tot maximaal " . MAXIMUMAANTAL_WOORDEN . " woorden. ";
}
}
}
}
// Een eventuele foutmelding opmaken als een alinea:
if (strlen(trim($melding)) > 1) {
$melding = '<p class="w">' . $melding . "</p>\n";
}
?>
<h1>Schrijf in het gastenboek</h1>
<?php echo $melding; ?>
<p>Voer uw tekst voor het <a href="gastenboek.php" title="Gastenboek">gastenboek</a> in en klik op Toevoegen. <br>
U hoeft geen naam, e-mailadres of website op te geven.</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td colspan="2" valign="top"><label for="t"><span style="text-decoration: underline">T</span>ekst voor het gastenboek:</label></td>
</tr>
<tr>
<td colspan="2"><textarea accesskey="t" cols="50" id="t" name="t" rows="10"><?php echo htmlentities($tekst); ?></textarea></td>
</tr>
<tr>
<td><label for="n"><span style="text-decoration: underline">N</span>aam:</label></td>
<td><input accesskey="n" id="n" name="n" type="text" size="47" value="<?php echo htmlentities($naam); ?>"></td>
</tr>
<tr>
<td><label for="e"><span style="text-decoration: underline">E</span>-mailadres:</label></td>
<td><input accesskey="e" id="e" name="e" type="text" size="47" value="<?php echo $emailadres; ?>"></td>
</tr>
<tr>
<td nowrap><label for="w">URL <span style="text-decoration: underline">w</span>ebsite:</label></td>
<td><input accesskey="w" id="w" name="w" type="text" size="47" value="<?php echo $website; ?>"></td>
</tr>
<tr>
<td> </td>
<td align="right" nowrap>
<input class="knop" name="submit" type="submit" value="Toevoegen">
<input class="knop" name="submit" type="submit" value="Wissen">
<script type="text/javascript">
<!--
document.write("<input class=knop onclick=\"window.location.href = 'gastenboek.php'\" type=button value=Annuleren>");
-->
</script>
</td>
</tr>
</table>
</form>
$melding = ""; // Variabele voor foutmeldingen
$tekst = "";
$naam = "";
$emailadres = "";
$website = "";
// Formulier alleen verwerken als op de knop met de naam 'submit'
// EN de waarde 'Toevoegen' is geklikt:
if (isset($_POST['submit'])) {
if ($_POST['submit'] == "Toevoegen") {
$datum = date("Y-m-d");
$tijd = date("H:i:s");
$tekst = $_POST['t'];
$naam = $_POST['n'];
$emailadres = $_POST['e'];
$website = $_POST['w'];
// HTML-tags verwijderen uit de tekst met strip_tags() en
// pas DAARNA de tekst omzetten in HTML met htmlentities():
$tekst = strip_tags($tekst);
$tekst = htmlentities($tekst);
// Het voorvoegsel "http://" verwijderen uit de URL van de website:
$website = eregi_replace("^http://", "", $website);
// Overige invoer omzetten in HTML-tekens, vooral voor
// de naam, want voor een e-mailadres of URL hoeft dat niet:
$naam = htmlentities($naam);
$emailadres = htmlentities($emailadres);
$website = htmlentities($website);
// Alleen een tekst van minimaal 4 tekens
// en maximaal 500 woorden toevoegen:
define("MINIMUMAANTAL_TEKENS", 4);
define("MAXIMUMAANTAL_WOORDEN", 500);
$aantal_tekens = strlen($tekst);
$aantal_woorden = str_word_count($tekst);
if (($aantal_tekens >= MINIMUMAANTAL_TEKENS) and ($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
// MySQL-toevoegquery opstellen:
$sql = "INSERT INTO `gastenboek` ";
$sql .= "(`bericht_id`, `datum`, `tijd`, `tekst`, `naam`, `email`, `website`) ";
$sql .= "VALUES ";
$sql .= "('', '$datum', '$tijd', '$tekst', '$naam', '$emailadres', '$website') ";
$sql .= "; ";
// Databaseverbinding openen en query uitvoeren:
require_once('mysql_connect.inc.php');
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$toegevoegd = mysql_query($sql) or die(mysql_error());
mysql_close($verbinding);
// Browser omleiden naar het gastenboek
// als de bijdrage is toegevoegd:
if ($toegevoegd) {
header("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/gastenboek.php");
exit;
}
} else {
// Foutmelding weergeven:
if (!($aantal_tekens >= MINIMUMAANTAL_TEKENS)) {
$melding .= "De tekst is te kort.";
}
if (!($aantal_woorden <= MAXIMUMAANTAL_WOORDEN)) {
$melding .= "Uw tekst telt " . $aantal_woorden . " woorden. ";
$melding .= "Kort de tekst in tot maximaal " . MAXIMUMAANTAL_WOORDEN . " woorden. ";
}
}
}
}
// Een eventuele foutmelding opmaken als een alinea:
if (strlen(trim($melding)) > 1) {
$melding = '<p class="w">' . $melding . "</p>\n";
}
?>
<h1>Schrijf in het gastenboek</h1>
<?php echo $melding; ?>
<p>Voer uw tekst voor het <a href="gastenboek.php" title="Gastenboek">gastenboek</a> in en klik op Toevoegen. <br>
U hoeft geen naam, e-mailadres of website op te geven.</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td colspan="2" valign="top"><label for="t"><span style="text-decoration: underline">T</span>ekst voor het gastenboek:</label></td>
</tr>
<tr>
<td colspan="2"><textarea accesskey="t" cols="50" id="t" name="t" rows="10"><?php echo htmlentities($tekst); ?></textarea></td>
</tr>
<tr>
<td><label for="n"><span style="text-decoration: underline">N</span>aam:</label></td>
<td><input accesskey="n" id="n" name="n" type="text" size="47" value="<?php echo htmlentities($naam); ?>"></td>
</tr>
<tr>
<td><label for="e"><span style="text-decoration: underline">E</span>-mailadres:</label></td>
<td><input accesskey="e" id="e" name="e" type="text" size="47" value="<?php echo $emailadres; ?>"></td>
</tr>
<tr>
<td nowrap><label for="w">URL <span style="text-decoration: underline">w</span>ebsite:</label></td>
<td><input accesskey="w" id="w" name="w" type="text" size="47" value="<?php echo $website; ?>"></td>
</tr>
<tr>
<td> </td>
<td align="right" nowrap>
<input class="knop" name="submit" type="submit" value="Toevoegen">
<input class="knop" name="submit" type="submit" value="Wissen">
<script type="text/javascript">
<!--
document.write("<input class=knop onclick=\"window.location.href = 'gastenboek.php'\" type=button value=Annuleren>");
-->
</script>
</td>
</tr>
</table>
</form>