gastenboek
dus dat ik er ook een soort comment script voor onder foto's voor kan maken
ik probeer het steeds mar ik doe iets fout dit was het originele script
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
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
<?PHP
include "bestanden/config.php";
$posts_per_page = "10";
$maximum_paginas = "1";
session_start();
?>
<html>
<head>
<title>gastenboek</title>
</head>
<?php include "bestanden/style.css"; ?>
<body class="gastenboek" link="#000000" alink="#000000" vlink="#000000">
<?PHP
if(!isset($_SESSION["post"]) || $_SESSION["post"] = false)
{ ?>
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
<table class="gastenboek">
<tr>
<td>
Name:
</td>
<td>
<input type="text" name="name" value="<?php echo $_SESSION['gebruiker']; ?>"><br><br>
</td>
</tr>
<tr>
<td>
Email:
</td>
<td>
<input type="text" name="email"><br><br>
</td>
</tr>
<tr>
<td>
Bericht:
</td>
<td>
<textarea name="bericht" cols="30" rows="5"></textarea><br><br>
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="verzend"><br><br>
</td>
</tr>
</table>
</form>
<?php
}
if(isset($_POST["submit"]))
{
if(isset($_POST["name"]) && !empty($_POST["name"])
&& isset($_POST["email"]) && !empty($_POST["email"])
&& isset($_POST["bericht"]) && !empty($_POST["bericht"]))
{
if(!isset($_SESSION["post"]) || $_SESSION["post"] = false)
{
if(validate() == true)
{
if(check_hash() == true)
{
$result = insert_post();
if($result == 1)
{
echo "Het bericht is toegevoegd!<br><br>";
$_SESSION["post"] = true;
}
else
{
echo "Het bericht is niet toegevoegd!<br><br>";
echo mysql_error();
}
}
elseif(check_hash() == false)
{
echo "Exact ditzelfde bericht is al eens gepost, het is dus niet meer nodig!<br><br>";
}
}
else
{
echo "Het door u ingevulde email adres was niet correct!<br><br>";
}
}
else
{
echo "U heeft al gepost in deze sessie, dit is een gastenboek, geen spamboek!<br><br>";
}
}
else
{
echo "Niet alle velden waren ingevuld!<br><br>";
}
}
show_pages();
show_posts();
mysql_close($mysql);
function show_posts()
{
global $posts_per_page, $maximum_paginas;
if(!isset($_GET["page"]))
{
$page = 1;
}
else
{
$page = $_GET["page"];
}
if($page <= $maximum_paginas)
{
$limit_start = ($page - 1) * $posts_per_page;
$limit = $limit_start.", ".$posts_per_page;
$sql = "
SELECT time, name, email, bericht FROM berichten ORDER BY time DESC LIMIT ".$limit.";
";
$result = mysql_query($sql);
echo mysql_error();
while($row = mysql_fetch_row($result))
{
$time = $row['0'];
$name = $row['1'];
$email = $row['2'];
$bericht = $row['3'];
echo "<table class=\"gastenboek\" cellspacing=\"0\">";
echo "<tr>";
echo "<td bgcolor=\"#CCCCCC\" width=\"300\">";
echo "<a href=\"mailto:".$email."\">".$name."</a> schreef op ".$time;
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td bgcolor=\"edecec\">";
echo $bericht;
echo "</td>";
echo "</tr>";
echo "<table>";
echo "<br>";
}
}
elseif($page > $maximum_paginas)
{
echo "Het maximum aantal paginas is door de beheerder ingesteld op ".$maximum_paginas."!";
}
}
function insert_post()
{
$time = date("d-m-y H:i:s");
$hashed = md5($_POST["bericht"]);
$sql = "
INSERT INTO berichten
(time, name, email, bericht, md5)
VALUES
('".$time."',
'".$_POST["name"]."',
'".$_POST["email"]."',
'".$_POST["bericht"]."',
'".$hashed."');
";
$result = mysql_query($sql);
return $result;
}
function show_pages()
{
global $posts_per_page, $maximum_paginas;
$sql = "
SELECT id FROM berichten;
";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num > $posts_per_page)
{
$paginas = ceil($num/$posts_per_page);
if($paginas > $maximum_paginas)
{
$paginas = $maximum_paginas;
}
echo "Pagina: ";
for($i=1;$i<=$paginas;$i++)
{
echo "<a href=\"index.php?page=".$i."\">".$i."</a> ";
}
echo "<br><br>";
}
}
function check_hash()
{
$hashed = md5($_POST["bericht"]);
$sql = "
SELECT * FROM berichten WHERE md5 = '".$hashed."';
";
$result = mysql_query($sql);
echo mysql_error();
$num = mysql_num_rows($result);
if($num > 0)
{
return false;
}
else
{
return true;
}
}
function validate()
{
$email = explode("@",$_POST["email"]);
if(count($email) > 1)
{
$email = explode(".",$_POST["email"]);
if(count($email) > 1)
{
$mail = true;
}
else
{
$mail = false;
}
}
else
{
$mail = false;
}
if($mail == true)
{
$_POST["name"] = ereg_replace("[^A-Za-z0-9 ]", "", $_POST["name"]);
$_POST["bericht"] = ereg_replace("[^A-Za-z0-9 ]", "", $_POST["bericht"]);
return true;
}
else
{
return false;
}
}
?>
</body>
</html>
include "bestanden/config.php";
$posts_per_page = "10";
$maximum_paginas = "1";
session_start();
?>
<html>
<head>
<title>gastenboek</title>
</head>
<?php include "bestanden/style.css"; ?>
<body class="gastenboek" link="#000000" alink="#000000" vlink="#000000">
<?PHP
if(!isset($_SESSION["post"]) || $_SESSION["post"] = false)
{ ?>
<form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
<table class="gastenboek">
<tr>
<td>
Name:
</td>
<td>
<input type="text" name="name" value="<?php echo $_SESSION['gebruiker']; ?>"><br><br>
</td>
</tr>
<tr>
<td>
Email:
</td>
<td>
<input type="text" name="email"><br><br>
</td>
</tr>
<tr>
<td>
Bericht:
</td>
<td>
<textarea name="bericht" cols="30" rows="5"></textarea><br><br>
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="verzend"><br><br>
</td>
</tr>
</table>
</form>
<?php
}
if(isset($_POST["submit"]))
{
if(isset($_POST["name"]) && !empty($_POST["name"])
&& isset($_POST["email"]) && !empty($_POST["email"])
&& isset($_POST["bericht"]) && !empty($_POST["bericht"]))
{
if(!isset($_SESSION["post"]) || $_SESSION["post"] = false)
{
if(validate() == true)
{
if(check_hash() == true)
{
$result = insert_post();
if($result == 1)
{
echo "Het bericht is toegevoegd!<br><br>";
$_SESSION["post"] = true;
}
else
{
echo "Het bericht is niet toegevoegd!<br><br>";
echo mysql_error();
}
}
elseif(check_hash() == false)
{
echo "Exact ditzelfde bericht is al eens gepost, het is dus niet meer nodig!<br><br>";
}
}
else
{
echo "Het door u ingevulde email adres was niet correct!<br><br>";
}
}
else
{
echo "U heeft al gepost in deze sessie, dit is een gastenboek, geen spamboek!<br><br>";
}
}
else
{
echo "Niet alle velden waren ingevuld!<br><br>";
}
}
show_pages();
show_posts();
mysql_close($mysql);
function show_posts()
{
global $posts_per_page, $maximum_paginas;
if(!isset($_GET["page"]))
{
$page = 1;
}
else
{
$page = $_GET["page"];
}
if($page <= $maximum_paginas)
{
$limit_start = ($page - 1) * $posts_per_page;
$limit = $limit_start.", ".$posts_per_page;
$sql = "
SELECT time, name, email, bericht FROM berichten ORDER BY time DESC LIMIT ".$limit.";
";
$result = mysql_query($sql);
echo mysql_error();
while($row = mysql_fetch_row($result))
{
$time = $row['0'];
$name = $row['1'];
$email = $row['2'];
$bericht = $row['3'];
echo "<table class=\"gastenboek\" cellspacing=\"0\">";
echo "<tr>";
echo "<td bgcolor=\"#CCCCCC\" width=\"300\">";
echo "<a href=\"mailto:".$email."\">".$name."</a> schreef op ".$time;
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td bgcolor=\"edecec\">";
echo $bericht;
echo "</td>";
echo "</tr>";
echo "<table>";
echo "<br>";
}
}
elseif($page > $maximum_paginas)
{
echo "Het maximum aantal paginas is door de beheerder ingesteld op ".$maximum_paginas."!";
}
}
function insert_post()
{
$time = date("d-m-y H:i:s");
$hashed = md5($_POST["bericht"]);
$sql = "
INSERT INTO berichten
(time, name, email, bericht, md5)
VALUES
('".$time."',
'".$_POST["name"]."',
'".$_POST["email"]."',
'".$_POST["bericht"]."',
'".$hashed."');
";
$result = mysql_query($sql);
return $result;
}
function show_pages()
{
global $posts_per_page, $maximum_paginas;
$sql = "
SELECT id FROM berichten;
";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num > $posts_per_page)
{
$paginas = ceil($num/$posts_per_page);
if($paginas > $maximum_paginas)
{
$paginas = $maximum_paginas;
}
echo "Pagina: ";
for($i=1;$i<=$paginas;$i++)
{
echo "<a href=\"index.php?page=".$i."\">".$i."</a> ";
}
echo "<br><br>";
}
}
function check_hash()
{
$hashed = md5($_POST["bericht"]);
$sql = "
SELECT * FROM berichten WHERE md5 = '".$hashed."';
";
$result = mysql_query($sql);
echo mysql_error();
$num = mysql_num_rows($result);
if($num > 0)
{
return false;
}
else
{
return true;
}
}
function validate()
{
$email = explode("@",$_POST["email"]);
if(count($email) > 1)
{
$email = explode(".",$_POST["email"]);
if(count($email) > 1)
{
$mail = true;
}
else
{
$mail = false;
}
}
else
{
$mail = false;
}
if($mail == true)
{
$_POST["name"] = ereg_replace("[^A-Za-z0-9 ]", "", $_POST["name"]);
$_POST["bericht"] = ereg_replace("[^A-Za-z0-9 ]", "", $_POST["bericht"]);
return true;
}
else
{
return false;
}
}
?>
</body>
</html>
alvast bedankt
Waar gaat het fout?
1: Zet session_start(); helemaal bovenaan,
2: Gebruik bij integers geen quotes,
3: Een link-tag of een style-tag hoort in de head-tag en niet daaronder,
4: Gebruik een andere manier om te controleren of er is gepost,
Code (php)
5: Je controleert telkens of een post is gezet en of hij leeg is, hij is al gepost omdat je dat bovenaan controleert,
6: Een true of false waarde (boolean) kun je anders controleren,
7: Een if/else statement kan korter geschreven worden met een ternary operator,
Code (php)
8: Het kopieren van variabelen is nergens voor nodig, gebruik $row[0] (i.p.v. $row['0']) gewoon direct.
9: Je hebt bij je echo's een dubbele quote, hierdoor moet je alle quotes in je HTML backslashen, gebruik enkele quotes bij je echo's. Want HTML wil dat je dubbele quotes gebruikt,
10: Gebruik namen voor variabele zodat je aan de naam kan zien wat het is.
Wat is verder je probleem?
Punt 1: session_start kan waarschijnlijk beter in bestanden/config.php aangezien je die include en dan hoeft het maar op 1 plek te staan.
@Ruben, de check op het posten gebeurt in regel 63
if(!isset($_SESSION["post"]) || $_SESSION["post"] = false)
Er wordt namelijk wat in de sessie gezet die het controleerd. Dat zetten van die variabele en de controle daarop moet je eruit halen als je wilt dat iemand meerdere keren in een sessie kan posten.
Volgens mij moeten dan deze regels weg: 13,14,15,56,63,64,74,88/92
alleen toen ik wilde veranderen dat je meerdere keren per sessie kom posten toen ging het fout dus heb ik de originele code hier gepost en gevraagd hoe dat het wel moet
PS bedankt iedereen alvast voor de reacties en vakkundige opmerkingen:P
Heb je de oplossing die ik melde uitgeprobeerd?
TJVB schreef op 23.01.2009 09:53:
Als jij de ternary operator snapt, dan valt hij gewoon op.Dennis, punt 7 is lang niet altijd beter. Grote stukken code met veel verkorte if/else statements blijken vaak lastig te lezen zijn
Daarnaast zei ik dat het kon, en zei ik niet dat het beter was :)
Dennis Mertens schreef op 23.01.2009 12:17:
Daarnaast zei ik dat het kon, en zei ik niet dat het beter was :)
TJVB schreef op 23.01.2009 09:53:
Als jij de ternary operator snapt, dan valt hij gewoon op.Dennis, punt 7 is lang niet altijd beter. Grote stukken code met veel verkorte if/else statements blijken vaak lastig te lezen zijn
Daarnaast zei ik dat het kon, en zei ik niet dat het beter was :)
Als jij grote hoeveelheden code met zeer veel verkochte statements ziet wordt je vanzelf niet gelukkig.
Als je wel eens een project heb moeten overnemen waar dat het geval is weet je dat ook.
En je opsomming suggereert in mijn ogen dat je het beter vindt, maar dat kan ik verkeerd zien.
Gewijzigd op 01/01/1970 01:00:00 door TJVB tvb
Je weet dat je hiermee de nodige onzin in je database zet? Hiermee kun je onmogelijk een datum opslaan, je kunt er niets meer mee. Ga maar eens sorteren, vergelijken of rekenen, dat blijkt ineens onmogelijk te zijn.
Een datum met tijd sla je in MySQL op in een kolom van het datatype DATETIME. Deze EIST het ISO-formaat yyyy-mm-dd hh:mm:ss. Hoe jij dat later op het scherm wilt gaan weergeven mag je zelf weten, daar zijn duizend en één mogelijkheden voor. Met jouw $time kun je dat wel vergeten, dat is onbruikbare rommel.
Kortom, ga dit even aanpassen voordat je echt in de problemen zit.
Gewijzigd op 01/01/1970 01:00:00 door Frank -