Stemmen opslaan door cookies?
ik heb dit onderstaande script, voor een foto rating
maar nu kun je dus constant blijven stemmen, en dat is niet mijn bedoeling.
weet iemand hoe je er voor kan zorgen dat iemand maar 1x op een foto kan stemmen?
Via cookies is goed genoeg, hoeft niet per IP
Zou iemand mij kunnen helpen?
Hier de code:
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
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
<?
if(!$_GET["show"] and !$_POST["show"]){
$result = mysql_query("SELECT * FROM $db_table_pictures;");
while(list($ids[]) = mysql_fetch_row($result));
while(true){
srand((double)microtime()*1000000);
$show = rand(1,mysql_num_rows($result));
if(array_search($show,$ids)){
break;
}
}
}
else{
$show = $_GET["show"] ? $_GET["show"] : $_POST["show"];
}
$row = mysql_fetch_array(mysql_query("SELECT * FROM $db_table_pictures WHERE id=$show;"));
list($next) = mysql_fetch_row(mysql_query("SELECT id FROM $db_table_pictures WHERE id>$show ORDER BY id ASC LIMIT 0,1;"));
if($row["points"] != 0){
$row["points"] = number_format($row["points"]/$row["votes"],2,",","");
}
if(!$next){
list($next) = mysql_fetch_row(mysql_query("SELECT id FROM $db_table_pictures WHERE id>1 ORDER BY id ASC LIMIT 0,1;"));
}
echo $header;
echo "
<form action=\"index.php\" method=\"post\">
<table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\">
<tr>
<td rowspan=\"2\">Slecht</td>
<td rowspan=\"2\" width=\"10\"> </td>";
for($i=1;$i<=$max_points;$i++){
echo "
<td align=\"center\">$i</td>";
}
echo "
<td rowspan=\"2\" width=\"10\"> </td>
<td rowspan=\"2\">Goed</td>
</tr>
<tr>";
for($i=1;$i<=$max_points;$i++){
echo "
<td align=\"center\"><input type=\"radio\" name=\"vote\" value=\"$i\" onClick=\"submit();\"></td>";
}
?>
if(!$_GET["show"] and !$_POST["show"]){
$result = mysql_query("SELECT * FROM $db_table_pictures;");
while(list($ids[]) = mysql_fetch_row($result));
while(true){
srand((double)microtime()*1000000);
$show = rand(1,mysql_num_rows($result));
if(array_search($show,$ids)){
break;
}
}
}
else{
$show = $_GET["show"] ? $_GET["show"] : $_POST["show"];
}
$row = mysql_fetch_array(mysql_query("SELECT * FROM $db_table_pictures WHERE id=$show;"));
list($next) = mysql_fetch_row(mysql_query("SELECT id FROM $db_table_pictures WHERE id>$show ORDER BY id ASC LIMIT 0,1;"));
if($row["points"] != 0){
$row["points"] = number_format($row["points"]/$row["votes"],2,",","");
}
if(!$next){
list($next) = mysql_fetch_row(mysql_query("SELECT id FROM $db_table_pictures WHERE id>1 ORDER BY id ASC LIMIT 0,1;"));
}
echo $header;
echo "
<form action=\"index.php\" method=\"post\">
<table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\">
<tr>
<td rowspan=\"2\">Slecht</td>
<td rowspan=\"2\" width=\"10\"> </td>";
for($i=1;$i<=$max_points;$i++){
echo "
<td align=\"center\">$i</td>";
}
echo "
<td rowspan=\"2\" width=\"10\"> </td>
<td rowspan=\"2\">Goed</td>
</tr>
<tr>";
for($i=1;$i<=$max_points;$i++){
echo "
<td align=\"center\"><input type=\"radio\" name=\"vote\" value=\"$i\" onClick=\"submit();\"></td>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Gerjan de Vries
om de code, dan wordt de color highlighting actief en is de code beter leesbaar.
Dank je
Zet even Dank je
Ik zou juist wel de IP opslaan in de database en dan eisen dat die UNIQUE moet zijn. Dan krijg je foutmelding 1062 (uit mijn hoofd) als er een dubbele IP is.
cookies is voor dit doel voldoende
waar moet ik dat neerzetten in het bestand?
Dan ken ik weer stemmen..
Dat wil je juist niet
GR. mebus!
edit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = mysql_query("SELECT COUNT(1) FROM tabel WHERE ip = '".$IP."'") or trigger_error(mysql_error());
$count = mysql_result($sql,0);
if($count == FALSE) {
// je kan wel stemmen
} else {
// je kan niet stemmen
}
?>
$sql = mysql_query("SELECT COUNT(1) FROM tabel WHERE ip = '".$IP."'") or trigger_error(mysql_error());
$count = mysql_result($sql,0);
if($count == FALSE) {
// je kan wel stemmen
} else {
// je kan niet stemmen
}
?>
ip varchar(23) NOT NULL,
UNIQUE KEY(ip)
$IP wist ik ff niet meer snel $_SERVER['remote_addr'];
Heb ik dat goed?
Gewijzigd op 01/01/1970 01:00:00 door Mebus Hackintosh
dat maakt niet uit, het heeft meer als doel het flooden tegen te gaan.
en als de browser nu geen cookies ondersteund?
kun je ook vertellen waar ik dat neer moet zetten, en wat voor een sql moet ik maken?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function get_ip () {
if (@getenv ($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = @getenv ($_SERVER['HTTP_X_FORWARDED_FOR']);
}
elseif (@getenv ($_SERVER['HTTP_CLIENT_IP'])) {
$ip = @getenv ($_SERVER['HTTP_CLIENT_IP']);
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip = get_ip ();
$sql = "
INSER INTO tabel
SET ip = '" . $ip . "'
LIMIT 1";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_errno () . ': ' . mysql_error ());
}
?>
function get_ip () {
if (@getenv ($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = @getenv ($_SERVER['HTTP_X_FORWARDED_FOR']);
}
elseif (@getenv ($_SERVER['HTTP_CLIENT_IP'])) {
$ip = @getenv ($_SERVER['HTTP_CLIENT_IP']);
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip = get_ip ();
$sql = "
INSER INTO tabel
SET ip = '" . $ip . "'
LIMIT 1";
if (!$res = mysql_query ($sql)) {
trigger_error (mysql_errno () . ': ' . mysql_error ());
}
?>