Shoutbox probleem
Dat is natuurlijk niet helemaal veilig maar ze moeten al hun geschiedenis enz wissen tot ze weer kunnen sturen. Maar ik wil dat er op die shoutbox een tijd komt zodat er ieder uur een berichtje kan geplaatst worden,
maar het moet met sessies blijven hoe doe ik dat?
dit heb ik:
Quote:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shoutbox - beta</title>
</head>
<body>
<form method="POST">
<table border="0">
<tr>
<td><strong>Naam:</strong></td>
<td><input type="text" name="Naam" maxlength="40" /></td>
</tr>
<tr>
<td><strong>Bericht:</strong></td>
<td><textarea name="Bericht" maxlength="125"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Toevoegen" value="Toevoegen!" /></td>
</tr>
</table>
</form>
</body>
</html>
Code (php)
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shoutbox - beta</title>
</head>
<body>
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
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
<?php
include("connect.php");
$Naam = mysql_real_escape_string(strip_tags($_POST['Naam']));
$Bericht = mysql_real_escape_string(strip_tags($_POST['Bericht']));
$IP = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['Toevoegen'])) {
if(empty($Naam)) {
echo "Geen naam ingevuld!<br />";
}
elseif(empty($Bericht)) {
echo "Geen bericht ingevuld!<br />";
}
elseif(strlen($Naam) > 40) {
echo "Naam us te lang!<br />";
}
elseif(strlen($Bericht) > 125) {
echo "Bericht is te lang!<br />";
}
else {
$insert = "INSERT INTO `shoutbox` (IP, Naam, Bericht) VALUES ('$IP', '$Naam', '$Bericht')";
mysql_query($insert) or die(mysql_error());
echo "Je bericht werd succesvol toegevoegd!<br />";
$_SESSION['gepost'] = 1;
}
}
}
$query = "SELECT * FROM shoutbox ORDER BY id DESC LIMIT 4";
$shout = mysql_query($query);
while($r = mysql_fetch_array($shout)) {
echo " ".$r['Naam'].": ".$r['Bericht']."<br /> ";
}
?>
include("connect.php");
$Naam = mysql_real_escape_string(strip_tags($_POST['Naam']));
$Bericht = mysql_real_escape_string(strip_tags($_POST['Bericht']));
$IP = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['Toevoegen'])) {
if(empty($Naam)) {
echo "Geen naam ingevuld!<br />";
}
elseif(empty($Bericht)) {
echo "Geen bericht ingevuld!<br />";
}
elseif(strlen($Naam) > 40) {
echo "Naam us te lang!<br />";
}
elseif(strlen($Bericht) > 125) {
echo "Bericht is te lang!<br />";
}
else {
$insert = "INSERT INTO `shoutbox` (IP, Naam, Bericht) VALUES ('$IP', '$Naam', '$Bericht')";
mysql_query($insert) or die(mysql_error());
echo "Je bericht werd succesvol toegevoegd!<br />";
$_SESSION['gepost'] = 1;
}
}
}
$query = "SELECT * FROM shoutbox ORDER BY id DESC LIMIT 4";
$shout = mysql_query($query);
while($r = mysql_fetch_array($shout)) {
echo " ".$r['Naam'].": ".$r['Bericht']."<br /> ";
}
?>
<form method="POST">
<table border="0">
<tr>
<td><strong>Naam:</strong></td>
<td><input type="text" name="Naam" maxlength="40" /></td>
</tr>
<tr>
<td><strong>Bericht:</strong></td>
<td><textarea name="Bericht" maxlength="125"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Toevoegen" value="Toevoegen!" /></td>
</tr>
</table>
</form>
</body>
</html>
Sla in de database bij elk bericht ook een datumtijd stempel op en controleer voordat iemand een bericht plaatst of er niet al een bericht bestaat met dat ip adres binnen een bepaald tijdsbestek.
En hoe doe je dat? :s
Blanche:
Sla in de database bij elk bericht ook een datumtijd stempel op en controleer voordat iemand een bericht plaatst of er niet al een bericht bestaat met dat ip adres binnen een bepaald tijdsbestek.
Let wel op dat als je site veel bezocht wordt door scholieren, of mensen van een bedrijf, dat er dan vaak maar 1 iemand een bericht kan plaatsen.
Meestal gebruiken scholen en bedrijven maar een paar ip adressen, dus er zitten veel meer mensen achter 1 ip adres.
Dat is niet echt een antwoord op m'n vraag :s
Als je anti-spam wil hebben, kun je ook gewoon per minuut of per 5 minuten 1 bericht. Dan zal het niet zo een groot probleem zijn als je het per IP doet.
Aaargh, heeft hier niemand een voorbeeld hoe ik het ga scripten fz?
hehe
Niet getest, maar zou een opzet kunnen zijn. (hoewel wel omslachtig, zou ook korter kunnen denk ik)
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
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
<?php
include("connect.php");
$Naam = mysql_real_escape_string(strip_tags($_POST['Naam']));
$Bericht = mysql_real_escape_string(strip_tags($_POST['Bericht']));
$IP = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['Toevoegen'])) {
if(empty($Naam)) {
echo "Geen naam ingevuld!<br />";
}
elseif(empty($Bericht)) {
echo "Geen bericht ingevuld!<br />";
}
elseif(strlen($Naam) > 40) {
echo "Naam us te lang!<br />";
}
elseif(strlen($Bericht) > 125) {
echo "Bericht is te lang!<br />";
}
else {
$date=date('d-m-Y-H-i-s');
$sql1 = "SELECT * FROM shoutbox WHERE IP = '$IP'";
$res1 = mysql_query($sql1) or die(mysql_error());
while(mysql_fetch_array($res1)){
$ip=$res1['IP'];
$datumtijd=$res1['datumtijd'];
}
//arrays met daarin alle tijdsgegevens
$a1=exlode("-", $datumtijd);
$a2=exlode("-", $date);
//hier kun je tijdsbestek uitkiezen, nu is hij om het uur ingesteld
if(($a1[0]==$a2[0])&&($a1[1]==$a2[1])&&($a1[2]==$a2[2])&&($a1[3]==$a2[3])&&($a1[4]!==$a2[4])&&($a1[4]!==$a2[4])){
$date=date('d-m-Y-H-i-s');
$insert = "INSERT INTO `shoutbox` (IP, Naam, Bericht, datumtij) VALUES ('$IP', '$Naam', '$Bericht', '$date')";
mysql_query($insert) or die(mysql_error());
echo "Je bericht werd succesvol toegevoegd!<br />";
}
}
}
}
$query = "SELECT * FROM shoutbox ORDER BY id DESC LIMIT 4";
$shout = mysql_query($query);
while($r = mysql_fetch_array($shout)) {
echo " ".$r['Naam'].": ".$r['Bericht']."<br /> ";
}
?>
include("connect.php");
$Naam = mysql_real_escape_string(strip_tags($_POST['Naam']));
$Bericht = mysql_real_escape_string(strip_tags($_POST['Bericht']));
$IP = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['Toevoegen'])) {
if(empty($Naam)) {
echo "Geen naam ingevuld!<br />";
}
elseif(empty($Bericht)) {
echo "Geen bericht ingevuld!<br />";
}
elseif(strlen($Naam) > 40) {
echo "Naam us te lang!<br />";
}
elseif(strlen($Bericht) > 125) {
echo "Bericht is te lang!<br />";
}
else {
$date=date('d-m-Y-H-i-s');
$sql1 = "SELECT * FROM shoutbox WHERE IP = '$IP'";
$res1 = mysql_query($sql1) or die(mysql_error());
while(mysql_fetch_array($res1)){
$ip=$res1['IP'];
$datumtijd=$res1['datumtijd'];
}
//arrays met daarin alle tijdsgegevens
$a1=exlode("-", $datumtijd);
$a2=exlode("-", $date);
//hier kun je tijdsbestek uitkiezen, nu is hij om het uur ingesteld
if(($a1[0]==$a2[0])&&($a1[1]==$a2[1])&&($a1[2]==$a2[2])&&($a1[3]==$a2[3])&&($a1[4]!==$a2[4])&&($a1[4]!==$a2[4])){
$date=date('d-m-Y-H-i-s');
$insert = "INSERT INTO `shoutbox` (IP, Naam, Bericht, datumtij) VALUES ('$IP', '$Naam', '$Bericht', '$date')";
mysql_query($insert) or die(mysql_error());
echo "Je bericht werd succesvol toegevoegd!<br />";
}
}
}
}
$query = "SELECT * FROM shoutbox ORDER BY id DESC LIMIT 4";
$shout = mysql_query($query);
while($r = mysql_fetch_array($shout)) {
echo " ".$r['Naam'].": ".$r['Bericht']."<br /> ";
}
?>
Gewijzigd op 21/05/2010 20:10:54 door wesley Overdijk
captcha past niet in m'n lay-out dus daarom gebruik ik dat niet ;)
Siebe:
captcha past niet in m'n lay-out dus daarom gebruik ik dat niet ;)
??