[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: UPDATE
uMnepaTop
Эт Апять йа)

В таблице есть столбец 'hits' в него надо при нажатии на ссылку прибавлять +1

Дайте мануальчик плз)



Спустя 2 минуты, 7 секунд (16.06.2008 - 17:45) uMnepaTop написал(а):
Нашел тамже) Ща попробуйу)

Спустя 4 минуты, 13 секунд (16.06.2008 - 17:50) uMnepaTop написал(а):
С этим разобрался) А как сделать, чтобы голосовать можно было, только 1 раз?

Спустя 4 минуты, 50 секунд (16.06.2008 - 17:54) Ghost написал(а):
1. сохранять на компе у юзера куки и проверять их
2. сохранять в базе ид голосовавшего (если есть регистрация и голосилка только для зарегеных юзеров)

Спустя 11 минут, 18 секунд (16.06.2008 - 18:06) uMnepaTop написал(а):
Эм.. лучше канечно 2 вариант, но без регистрации.

Надо создать таблицу где хранить IP и время:

users:
++++++++++
user_ip (CHAR) + date (DATETIME)
++++++++++

Код
$user_ip = $REMOTE_ADDR;
$date = date("Y-m-d H:i:s");
$dates = mktime($date);


А вот дальше я незнаю чего делать...

Надо проверку по user_ip & date делать, только я незнаю как 8(

Спустя 21 минута, 28 секунд (16.06.2008 - 18:27) Ghost написал(а):
при выводе голосовалки проверять совпадения и выводить не форму, а результаты голосования.
походу при изменении результатов голосования тоже проверять совпадения.

только учти - блокируя по ип ты блокируешь не один комп - а локалку, ну еще про модемы и прокси вспомнить можно.

Спустя 22 минуты, 25 секунд (16.06.2008 - 18:50) uMnepaTop написал(а):
Я чего то не совсем понимаю как сделать, помогите плз blush.gif

Спустя 6 минут, 19 секунд (16.06.2008 - 18:56) Sylex написал(а):
Может быть сохранять хэш всех данных, которые можно узнать о компе?

Т.е. помимо кукисов - UserAgent, разрешение экрана, кол-во цветов, ОС и что там еще есть.. кроме ИП

Спустя 9 минут, 30 секунд (16.06.2008 - 19:05) uMnepaTop написал(а):
Мде))) Вы мне хоть кодик какой нить скиньте) А то я и так не понимаю как сделать просто по ip) А тут такое...

Спустя 2 часа, 19 минут, 17 секунд (16.06.2008 - 21:25) uMnepaTop написал(а):
Помогите, как по IP сделать?

Спустя 50 минут, 16 секунд (16.06.2008 - 22:15) Adil написал(а):
При входе человека на сайт считываешь его ip и проверяешь голосовал ли юзер с таким ip и если ни разу не голосовал выводишь ему форму голосования. После голосовании добавляешь в базу данных ip проголосовавшего и дату его последнего голосования. При успешном голосовании выводишь ему результаты.

Если уже голосовал, то сразу показываешь ему результаты.

Спустя 1 минута, 33 секунды (16.06.2008 - 22:17) uMnepaTop написал(а):
Во) Почти то, что нужно... Теперь только с кодом разобраться)

Спустя 5 минут, 15 секунд (16.06.2008 - 22:22) uMnepaTop написал(а):
Кто нибудь, помогите с кодом пожаааааааааалуйста)

Спустя 7 часов, 57 минут, 22 секунды (17.06.2008 - 06:19) Sylex написал(а):
Цитата(uMnepaTop @ 17.6.2008, 2:22) [snapback]40813[/snapback]
Кто нибудь, помогите с кодом пожаааааааааалуйста)


создаешь БД и таблицу:
Код
CREATE TABLE Golos (
    id INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(id),
    otvet CHAR(1),
    ip VARCHAR(15),
    date DATETIME);


Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Голосование из 5-и вариантов ответа</title>
<style type="text/css">
DIV {
    border: 1px solid #000;
    background: #c30;
    margin: 0px;
}
H2,H3 {
   text-align: center;
}
</style>
</head>
<body>    

<?
  function getip() // определение реального IP-адреса
                   // конечно, нет способа для анонимных и сверханонимных прокси:)
{
  // посл. перебираем переменные HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR и наконец REMOTE_ADDR
  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'];
  
  return($ip);
}
  
  $mysql_hostname="localhost";
  $mysql_user="root";
  $mysql_password="159";
  $mysql_database="golos";
  mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die ("Не могу подключиться к MySQL серверу. Пожалуйста, попробуйте позже.");
  mysql_select_db($mysql_database) or die ("Не могу выбрать базу. Пожалуйста, попробуйте позже.");
  if ($_POST['item']) { // если послан ответ
    $ip=getip($ip); // получаем IP и проверяем на Proxy

    // проверка, голосовали ли с этого IP сегодня
    // если есть запись с текущим IP и датой - вывести сообщение
    if (mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE ip='$ip' AND date=NOW()"))) {
      echo "Запрещено голосовать более 1 раза в сутки с одного IP ($ip)<br><br><a href=\"index.php\">Назад</a></body></html>";
      exit;    // выход
    }
    
    $otvet=$_POST['item']; // получаем номер выбранного ответа
    mysql_query("INSERT INTO Golos (otvet, ip, date) VALUES ('$otvet','$ip',NOW())");
    }
  if ($_POST['item'] || $_GET['res']==1) { // если был выбран ответ, или нажали ссылку "Результаты" - показываем результаты
    
    $col=mysql_num_rows(mysql_query("SELECT id FROM Golos")); // кол-во голосов
    if ($col==0) $col=1; // если не голосовали - чтоб не было ошибки / на 0
// кол-во голосов для каждого ответа
    $g1=mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE otvet='1'"));
    $g2=mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE otvet='2'"));
    $g3=mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE otvet='3'"));
    $g4=mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE otvet='4'"));
    $g5=mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE otvet='5'"));
// проценты для каждого ответа, и целые части для линий в CSS
    $p1=sprintf("%.2f", $g1/$col*100); $p_1=round($p1);
    $p2=sprintf("%.2f", $g2/$col*100); $p_2=round($p2);
    $p3=sprintf("%.2f", $g3/$col*100); $p_3=round($p3);
    $p4=sprintf("%.2f", $g4/$col*100); $p_4=round($p4);
    $p5=sprintf("%.2f", $g5/$col*100); $p_5=round($p5);
?>
<h2>Результаты голосования</h2>
<h3>Какая операционная система стоит на вашем компьютере?</h3><br>
<table align="center" width="70%">
<tr>
    <td>Лицензионный Windows</td><td><? echo $g1; ?></td><td><? echo $p1; ?>%</td>
</tr>
<tr>
    <td><div style="width:<? echo $p_1; ?>%;"><img src="1.gif" width="<? echo $p_1; ?>%" height="5" alt="" border="0"></div></td><td> </td>
</tr>
<tr>
    <td>"Пиратский"  Windows</td><td><? echo $g2; ?></td><td><? echo $p2; ?>%</td>
</tr>
<tr>
    <td><div style="width:<? echo $p_2; ?>%;"><img src="1.gif" width="<? echo $p_2; ?>%" height="5" alt="" border="0"></div></td><td> </td>
</tr>
<tr>
    <td>Linux</td><td><? echo $g3; ?></td><td><? echo $p3; ?>%</td>
</tr>
<tr>
    <td><div style="width:<? echo $p_3; ?>%;"><img src="1.gif" width="<? echo $p_3; ?>%" height="5" alt="" border="0"></div></td><td> </td>
</tr>
<tr>
    <td>Другая</td><td><? echo $g4; ?></td><td><? echo $p4; ?>%</td>
</tr>
<tr>
    <td><div style="width:<? echo $p_4; ?>%;"><img src="1.gif" width="<? echo $p_4; ?>%" height="5" alt="" border="0"></div></td><td> </td>
</tr>
<tr>
    <td>Я не знаю точно</td><td><? echo $g5; ?></td><td><? echo $p5; ?>%</td>
</tr>
<tr>
    <td><div style="width:<? echo $p_5; ?>%;"><img src="1.gif" width="<? echo $p_5; ?>%" height="5" alt="" border="0"></div></td><td> </td>
</tr>
<tr>
<td>Всего голосов</td><td><? echo $col; ?></td><td>100%</td>
</tr>
</table>
<a href="index.php">Назад</a>
</body></html>
<?
    exit; // выход, чтоб не показывать опрос, если показывали результаты
}
?>

<form name="golos" action="index.php" method="POST">
<table>
<tr>
    <td><h3>Какая операционная система стоит на вашем компьютере?</h3></td></tr>
<tr>
    <td><input type="radio" name="item" value="1" checked>
    <label>Лицензионный Windows</label></td></tr>
<tr>
    <td><input type="radio" name="item" value="2">
    <label>"Пиратский"  Windows</label></td></tr>
<tr>
    <td><input type="radio" name="item" value="3">
    <label>Linux</label></td></tr>
<tr>
    <td><input type="radio" name="item" value="4">
    <label>Другая</label></td></tr>
<tr>
    <td><input type="radio" name="item" value="5">
    <label>Я не знаю точно</label></td></tr>
<tr>
    <td align="center"><input name="s" type="submit" value="Голосовать"></td></tr>
<tr>
    <td align="center"><a href="index.php?res=1">результаты</a></td></tr>
</table>
</form>

</body>
</html>


писал давно, код можно оптимизировать, конечно, вместо 5 запросов smile.gif

Спустя 7 часов, 35 минут, 2 секунды (17.06.2008 - 13:54) uMnepaTop написал(а):
Омг) А что мне в этом коде надо? У меня таблица:

| id | user_ip | date |

И собственно проверять по IP & DATE: Если у меня ссылка, а не форма и тут нету по времени (убирать ссылку), вообщем тут мало что подходит)

Похожих скриптов дофига в инете, и если бы я мог переделать, сюды бы не обращался за помощью)

Спустя 6 часов, 33 минуты, 8 секунд (17.06.2008 - 20:27) Sylex написал(а):
Цитата(uMnepaTop @ 17.6.2008, 17:54) [snapback]40845[/snapback]
Омг) А что мне в этом коде надо? У меня таблица:

| id | user_ip | date |

И собственно проверять по IP & DATE: Если у меня ссылка, а не форма и тут нету по времени (убирать ссылку), вообщем тут мало что подходит)

Похожих скриптов дофига в инете, и если бы я мог переделать, сюды бы не обращался за помощью)


у меня такая же таблица + ответ и проверка идет по IP и DATE. Форму можно легко поменять на ссылку, а зачем? Какого времени нету?

Спустя 23 минуты, 36 секунд (17.06.2008 - 20:51) uMnepaTop написал(а):
Но я там не вижу цифр: 3600 хотя бы, как там определяется 1 день между голосованиями?)

Спустя 1 час, 26 минут, 56 секунд (17.06.2008 - 22:18) Sylex написал(а):
Цитата(uMnepaTop @ 18.6.2008, 0:51) [snapback]40879[/snapback]
Но я там не вижу цифр: 3600 хотя бы, как там определяется 1 день между голосованиями?)


Код
// проверка, голосовали ли с этого IP сегодня
    // если есть запись с текущим IP и датой - вывести сообщение
    if (mysql_num_rows(mysql_query("SELECT id FROM Golos WHERE ip='$ip' AND date=NOW()"))) {
      echo "Запрещено голосовать более 1 раза в сутки с одного IP ($ip)<br><br><a href=\"index.php\">Назад</a></body></html>";
      exit;    // выход
    }


Цитата
date=NOW()

Спустя 48 минут, 39 секунд (17.06.2008 - 23:07) uMnepaTop написал(а):
А что значит NOW();?

Спустя 3 минуты, 18 секунд (17.06.2008 - 23:10) Sylex написал(а):
Цитата(uMnepaTop @ 18.6.2008, 3:07) [snapback]40886[/snapback]
А что значит NOW();?


функция возвращает текущую дату... Т.е. запрос проверяет, голосовал ли чел с таким-то ИП сегодня или нет. Если нет - вставляет запись, иначе - выводит сообщение

Спустя 10 минут, 20 секунд (17.06.2008 - 23:20) uMnepaTop написал(а):
Ааа, ну тогда прошу прощения!
Но я когда вставляю:
Код
if (mysql_num_rows(mysql_query("SELECT id FROM users WHERE user_ip='$user_ip' AND date=NOW()"))) {
echo "Вы уже голосовали";
exit;}

Ссылается на mysql_num_rows 8(

В чем проблемко?

Спустя 7 минут (17.06.2008 - 23:27) uMnepaTop написал(а):
Код
$user_ip = $REMOTE_ADDR;
if (mysql_num_rows(mysql_query("SELECT id FROM users WHERE user_ip='$user_ip' AND date=NOW()"))) {
echo "$hits";
} else {
echo "<a href='/vote.php?id=$id' target=_blank><img src='up.PNG' border=0></a> $hits</span></td>";
}

Мне вот что то типа этого надо, только этот код не работает) *КрИвЫе РуКи*

Спустя 1 минута, 34 секунды (17.06.2008 - 23:29) Ghost написал(а):
AND `date`=NOW()

Спустя 2 минуты, 30 секунд (17.06.2008 - 23:31) uMnepaTop написал(а):
Цитата(Ghost @ 17.6.2008, 20:29) [snapback]40890[/snapback]
AND `date`=NOW()

Не помогайет 8(

Спустя 4 часа, 20 минут, 49 секунд (18.06.2008 - 03:52) uMnepaTop написал(а):
Тааакс)))) С этим я разобрался!!!!!!! Ура))))
Теперь вопрос в другом, как обновить страницу, после нажатия на ссылку?

Спустя 2 часа, 10 минут, 56 секунд (18.06.2008 - 06:03) Sylex написал(а):
Цитата(uMnepaTop @ 18.6.2008, 7:52) [snapback]40895[/snapback]
Тааакс)))) С этим я разобрался!!!!!!! Ура))))
Теперь вопрос в другом, как обновить страницу, после нажатия на ссылку?


ниче не понятно, конкретезируй вопрос

Спустя 4 часа, 40 минут, 52 секунды (18.06.2008 - 10:44) uMnepaTop написал(а):
Есть ссылка "Голосовать"(/vote.php?id=3 например)... после нажатия, чтобы страница перезагружалась...

Спустя 2 часа, 8 минут, 48 секунд (18.06.2008 - 12:53) Sylex написал(а):
Цитата(uMnepaTop @ 18.6.2008, 14:44) [snapback]40916[/snapback]
Есть ссылка "Голосовать"(/vote.php?id=3 например)... после нажатия, чтобы страница перезагружалась...


и соответственно она опять должна перегрузиться, и опять должна перегрузиться и опять.... так? Ведь ссылка на эту же страницу? smile.gif
Объясняй зачем оно нужно!!!

Код
<?php
if ($_GET['id'] == 3 )
  header("Location: {$_SERVER['REQUEST_URI']}");
?>


наслаждайся smile.gif

Спустя 7 минут, 21 секунда (18.06.2008 - 13:00) uMnepaTop написал(а):
Да, неее)
Есть страница, на ней ссылка с голосованием, после нажатия, открывается окно, что вы проголосовали и в это время, должна обновиться главная страница, где ссылка с голосованием, это для того, чтобы ссылка убиралась после нажатия на нее)

Спустя 1 час, 51 минута, 31 секунда (18.06.2008 - 14:52) Alchemist написал(а):
Код
<script type="text/javascript">if (window.opener) window.opener.location.reload();</script>

Спустя 20 часов, 32 минуты, 42 секунды (19.06.2008 - 11:24) uMnepaTop написал(а):
Не, не прокатит) Я уже реши л проблему, можно тему закрывать)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.