Stemmen opslaan door cookies?
Hallo,
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:
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
Zet even om de code, dan wordt de color highlighting actief en is de code beter leesbaar.
Dank je
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
Okee, dan doe je eerst een check of er een cookie gezet is:
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
waar moet ik dat neerzetten in het bestand?
En wat nouw als ik dat koekje verwijder?
Dan ken ik weer stemmen..
Dat wil je juist niet
GR. mebus!
edit:
ip varchar(23) NOT NULL,
UNIQUE KEY(ip)
$IP wist ik ff niet meer snel $_SERVER['remote_addr'];
Heb ik dat goed?
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?
hmmm ja daar heb je wel wat, maar nu moet ik dat IP nog inbouwen!!!
kun je ook vertellen waar ik dat neer moet zetten, en wat voor een sql moet ik maken?
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 ());
}
?>




