Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

15.11.2007, 17:00
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
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.
|
|
|

15.11.2007, 18:26
|
|
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'
|
|
|

15.11.2007, 18:56
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Inet_aton() и Inet_ntoa() я бы не советовал использовать, т.к. это усложнит перенос веб-приложения на другие СУБД, в которых такие фичи отсутствуют. Лучше сделать это преобразование в Php-коде чтобы СУБД работала уже с окончательной версией данных.
|
|
|

16.11.2007, 18:44
|
|
Познающий
Регистрация: 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($file, filesize($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 но повидимому руки кривые и знаний мало..
|
|
|

16.11.2007, 18:50
|
|
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме: 5812656
Репутация:
1540
|
|
darckmilord: можно сделать таблицу в бд в которую будут делаться записи ip|время голосования потом при голосовании проверять как давно голосовал или голосовал ли.либо сессии
|
|
|

16.11.2007, 18:55
|
|
Познающий
Регистрация: 08.02.2007
Сообщений: 41
Провел на форуме: 136843
Репутация:
13
|
|
хммм scrat знаешь я бы рад но есив я на пхп не могу это пока организовать то что говорить про работу с базами данных....
|
|
|

16.11.2007, 19:39
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
Моно в файл записать с каких айпи голосовали а при голосовани проверять если такой ип уже голосовал.
(если это скрипт теоретический и его не будут ставить на сайт.)
но лучше помойму в кукисах прописать отметку о том что человек проголосовал....
А вот как это сделать пусть ктото из программистов ответит .. а то я пока не наю как это делать =)
Последний раз редактировалось Doom123; 16.11.2007 в 19:44..
|
|
|

16.11.2007, 19:49
|
|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
Сообщение от Doom123
Моно в файл записать с каких айпи голосовали а при голосовани проверять если такой ип уже голосовал.
PHP код:
<?
$file = 'ips.txt';
if( substr_count( file_get_contents($file), getenv('REMOTE_ADDR') ) < 1 )
{
golosovanie(); // ну здесь само голосование
$fopen = fopen( $file, 'a' );
fwrite( $fopen, getenv( 'REMOTE_ADDR') );
fclose( $fopen );
}
else
{
echo('Вы уже голосовали');
}
?>
но лучше помойму в кукисах прописать отметку о том что человек проголосовал....
Нет не лучше. любой может очистить или изменить кукисы.
|
|
|

16.11.2007, 19:59
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
а что если сидят 20 человек на сайте с одного ип?
и если записывать для каждого голосования ип в отдельный файл то это просто будет увеличивать размеры скрипта.... ладно еси проголосуют 20 - 30 а если 30к или 100к?
Последний раз редактировалось Doom123; 16.11.2007 в 20:03..
|
|
|

16.11.2007, 20:02
|
|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
Сообщение от Doom123
а что если сидят 20 человек на сайте с одного ип?
Попробуй ещё и по браузеру проверять..
PHP код:
<?
$file = 'ips.txt';
if( substr_count( file_get_contents($file), getenv('REMOTE_ADDR')." ".$_SERVER["HTTP_USER_AGENT"] ) < 1 )
{
golosovanie(); // ну здесь само голосование
$fopen = fopen( $file, 'a' );
fwrite( $fopen, getenv( 'REMOTE_ADDR')." ".$_SERVER["HTTP_USER_AGENT"] );
fclose( $fopen );
}
else
{
echo('Вы уже голосовали');
}
?>
Как-ниубдь так =)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|