-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathratethis.php
More file actions
119 lines (119 loc) · 3.68 KB
/
ratethis.php
File metadata and controls
119 lines (119 loc) · 3.68 KB
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
<?php
include('db.php');
sleep(1);
// Соединение с базой данных
$connection = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$connection)
{
// die("Невозможно подключиться к базе данных: <br />" . mysql_error());
die();
}
// Выбор базы данных
$db_select = mysql_select_db($dbname);
if (!$db_select)
{
// die("Невозможно выбрать базу данных: <br />" . mysql_error());
die();
}
mysql_query("SET character_set_client = 'utf8'");
mysql_query("SET character_set_connection = 'utf8'");
mysql_query("SET character_set_results = 'utf8'");
mysql_query("SET NAMES 'utf8'");
mysql_set_charset("utf8");
// код для определения ip с учетом прокси взят с http://www.tigir.com/php.htm
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
{
$ip = getenv("REMOTE_ADDR");
}
elseif (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
{
$ip = $_SERVER['REMOTE_ADDR'];
}
else
{
$ip = "unknown";
}
if (isset($_POST['id']))
{
$id = (int) $_POST['id'];
}
if (isset($_POST['type']))
{
$type = (string) $_POST['type'];
}
$status = 0; // голосовал ли пользователь с таким $ip за форум с таким $id. Сначала примем, что нет
$sql = "SELECT *
FROM fc_votes
WHERE ip = '" . $ip . "'";
$result = mysql_query($sql);
if (!$result)
{
// die("Невозможно исполнить запрос к базе данных: <br />" . mysql_error());
die();
}
while ($result_row = mysql_fetch_array($result, MYSQL_ASSOC))
{
if ($result_row['forum_id'] == $id)
{
$status = 1; // пользователь уже голосовал
}
}
if ($status == 1)
{
$message = 'Вы уже голосовали за этот форум. Повторное голосование не разрешено.';
}
else
{
// добавление информации о текущем голосе
$sql = "INSERT
INTO fc_votes
VALUES ('" . $id . "', '" . $type . "', '" . $ip . "', '" . time() . "')";
$result = mysql_query($sql);
if (!$result)
{
// die("Невозможно исполнить запрос к базе данных: <br />" . mysql_error());
die();
}
// обновление рейтинга форума
$sql = "UPDATE fc_forums ";
if ($type == 'plus')
{
$sql .= "SET rating = (rating + 1)";
}
else
{
$sql .= "SET rating = (rating - 1)";
}
$sql .= " WHERE id = " . $id;
$result = mysql_query($sql);
if (!$result)
{
// die("Невозможно исполнить запрос к базе данных: <br />" . mysql_error());
die();
}
$message = 'Вы успешно проголосовали за форум. Рейтинг будет обновлён при следующем просмотре форума.';
}
// обновление значение рейтинга на странице
$sql = "SELECT rating
FROM fc_forums
WHERE id = " . $id;
$result = mysql_query($sql);
if (!$result)
{
// die("Невозможно исполнить запрос к базе данных: <br />" . mysql_error());
die();
}
$result_row = mysql_fetch_array($result, MYSQL_ASSOC);
$rating = $result_row['rating'];
echo $rating . " <script>alert(" . $message . ");</script>";
// Закрытие соединения с mysql
mysql_close($connection);
?>