ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #891  
Старый 15.11.2007, 17:00
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Ip-как раз и надо хранить строкой... А в идеале (если не подразумевается работать с таблицей напрямую через Sql-запросы, иначе усложнит реализацию запросов), нужно разбивать Ip на части, каждую часть преобразовывать в Hex представление, и уже засовывать результат в Char(8) поле... Это будет наиболее оптимально. Например:

Ip-127.0.0.1

Ip[0] = 127 (7f)
Ip[1] = 0 (00)
Ip[2] = 0 (00)
Ip[3] = 1 (01)

и засовывать в базу, в поле Char(8) строку 7f000001.
 
Ответить с цитированием

  #892  
Старый 15.11.2007, 18:26
Аватар для halkfild
halkfild
Leaders of Antichat - Level 4
Регистрация: 11.11.2005
Сообщений: 391
Провел на форуме:
7084941

Репутация: 2277
По умолчанию

используй
ip2long php
Цитата:
ip2long - конвертирует строку, содержащую адрес (IPv4) Internet Protocol, в подходящий адрес.
обратно long2ip

или средствами mysql
INET_ATON()
Цитата:
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
-> 2130706433, 2130706433
и обратную ей
INET_NTOA()
Цитата:
mysql> SELECT INET_NTOA(3520061480);
-> '209.207.224.40'
 
Ответить с цитированием

  #893  
Старый 15.11.2007, 18:56
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Inet_aton() и Inet_ntoa() я бы не советовал использовать, т.к. это усложнит перенос веб-приложения на другие СУБД, в которых такие фичи отсутствуют. Лучше сделать это преобразование в Php-коде чтобы СУБД работала уже с окончательной версией данных.
 
Ответить с цитированием

  #894  
Старый 16.11.2007, 18:44
Аватар для darckmilord
darckmilord
Познающий
Регистрация: 08.02.2007
Сообщений: 41
Провел на форуме:
136843

Репутация: 13
По умолчанию

Всем привет, Ребята помогите пожалуйста... Начал работать с ПХП и решил написать голосование...
сделал вот таким образом...
PHP код:
<table class=blok><tr><td class=head><div class=white>
Голосование:
</div></td></tr><tr><td><div>
<?php
$data
='basa/vote.vhg'// Название файла базы банных
if($action=='done')
{
  
$file fopen($data"r+t");
  
$content=fread($filefilesize($data));
  
$content=explode('-'$content); 
  if(
$game==1$content[0]=$content[0]+1;
  if(
$game==2$content[1]=$content[1]+1;
  if(
$game==3$content[2]=$content[2]+1;
  if(
$price==1$content[3]=$content[3]+1;
  if(
$price==2$content[4]=$content[4]+1;
  if(
$price==3$content[5]=$content[5]+1;
  echo(
"
        <center>
        <font size=+2><div style=\"wi-dth: 200px;height: 24px;filter: shadow(color=#999999,direction=150);back-ground: #aaaaaa\">
        Спасибо, за голос!</div></font>
        <table><tr><td width=30%><font face=arial size=1 color=#ffc000>
        класс:<br>
        норма:<br>
        плохо:</td>
       <td width=7%><font face=arial size=1 color=#ffc000>
       
$content[0]<br>$content[1]<br>$content[2]</td>
       <td width=56%><font face=arial size=1 color=#ffc000>
        WEB кодинг:<br>
        Кодинг:<br>
        Реверсинг:</td>
       <td width=7%><font face=arial size=1 color=#ffc000>
       
$content[3]<br>$content[4]<br>$content[5]</td>
        </font></td></tr></table></center><hr><a href=javascript:history.back(2)><i>Вернуться назад</i></a>
       "
);
  
$content=implode("-"$content);
  
rewind($file);
  
fwrite($file$content);
  
fclose($file);
}
else
{
echo(
'
      <center>
      <font size=+2><div style="width: 200px;height: 24px;filter: shadow(color=#999999,direction=150);back-ground: #aaaaaa">
      ПРОГОЛОСУЙ!</div></font>
      <form action=index.php?action=done method=post>
      <table><tr><td>
      <font face=arial size=1 color=#ffc000>Как Вам портал?<br>  
      <input type="radio" name="game" value="1">на 5 баллов<br>
      <input type="radio" name="game" value="2" checked>на 3 балла<br>
      <input type="radio" name="game" value="3">на 1 балл<br><br>
      </td><td><tr><td>
      <font face=arial><font face=arial size=1 color=#ffc000>Ваше направление?<br>
      <input type="radio" name="price" value="1">WEB кодинг<br>
      <input type="radio" name="price" value="2">Кодинг<br>
      <input type="radio" name="price" value="3" checked>Реверсинг</font>
      </td></tr></table><br>
      <input class=but type=submit value=проголосовать>
      </form>
      </center><a href=javascript:history.back(1)><i>Вернуться назад</i></a>
     '
);
}
?>
</div></td></tr></table>
Скажите пожалуйста как сделать так чтобы проголосовав потом страница сразу отображала результаты а при попытке проголосовать по новой говорила что я уже голосовал.... пробовал с getcookie но повидимому руки кривые и знаний мало..
 
Ответить с цитированием

  #895  
Старый 16.11.2007, 18:50
Аватар для scrat
scrat
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме:
5812656

Репутация: 1540


Отправить сообщение для scrat с помощью ICQ
По умолчанию

darckmilord: можно сделать таблицу в бд в которую будут делаться записи ip|время голосования потом при голосовании проверять как давно голосовал или голосовал ли.либо сессии
 
Ответить с цитированием

  #896  
Старый 16.11.2007, 18:55
Аватар для darckmilord
darckmilord
Познающий
Регистрация: 08.02.2007
Сообщений: 41
Провел на форуме:
136843

Репутация: 13
По умолчанию

хммм scrat знаешь я бы рад но есив я на пхп не могу это пока организовать то что говорить про работу с базами данных....
 
Ответить с цитированием

  #897  
Старый 16.11.2007, 19:39
Аватар для Doom123
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


Отправить сообщение для Doom123 с помощью ICQ
По умолчанию

Моно в файл записать с каких айпи голосовали а при голосовани проверять если такой ип уже голосовал.
(если это скрипт теоретический и его не будут ставить на сайт.)

но лучше помойму в кукисах прописать отметку о том что человек проголосовал....
А вот как это сделать пусть ктото из программистов ответит .. а то я пока не наю как это делать =)

Последний раз редактировалось Doom123; 16.11.2007 в 19:44..
 
Ответить с цитированием

  #898  
Старый 16.11.2007, 19:49
Аватар для NOmeR1
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Цитата:
Сообщение от Doom123  
Моно в файл записать с каких айпи голосовали а при голосовани проверять если такой ип уже голосовал.
PHP код:
<?

$file 
'ips.txt';
if( 
substr_countfile_get_contents($file), getenv('REMOTE_ADDR') ) < )
{
     
golosovanie(); // ну здесь само голосование
     
$fopen fopen$file'a' );
     
fwrite$fopengetenv'REMOTE_ADDR') );
     
fclose$fopen );
}
else
{
     echo(
'Вы уже голосовали');
}

?>
Цитата:
но лучше помойму в кукисах прописать отметку о том что человек проголосовал....
Нет не лучше. любой может очистить или изменить кукисы.
 
Ответить с цитированием

  #899  
Старый 16.11.2007, 19:59
Аватар для Doom123
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


Отправить сообщение для Doom123 с помощью ICQ
По умолчанию

а что если сидят 20 человек на сайте с одного ип?

и если записывать для каждого голосования ип в отдельный файл то это просто будет увеличивать размеры скрипта.... ладно еси проголосуют 20 - 30 а если 30к или 100к?

Последний раз редактировалось Doom123; 16.11.2007 в 20:03..
 
Ответить с цитированием

  #900  
Старый 16.11.2007, 20:02
Аватар для NOmeR1
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Цитата:
Сообщение от Doom123  
а что если сидят 20 человек на сайте с одного ип?
Попробуй ещё и по браузеру проверять..
PHP код:
<?

$file 
'ips.txt';
if( 
substr_countfile_get_contents($file), getenv('REMOTE_ADDR')." ".$_SERVER["HTTP_USER_AGENT"] ) < )
{
     
golosovanie(); // ну здесь само голосование
     
$fopen fopen$file'a' );
     
fwrite$fopengetenv'REMOTE_ADDR')." ".$_SERVER["HTTP_USER_AGENT"] );
     
fclose$fopen );
}
else
{
     echo(
'Вы уже голосовали');
}

?>
Как-ниубдь так =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ