Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сочетание ip и UZER_AGENT
 
 автор: 31   (11.08.2006 в 18:56)   письмо автору
 
 

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

<?php


if (!file_exists("answer.dat"))
   {
      
touch("answer.dat",666);
      
$aop fopen("answer.dat","w");
      
flock($aop,2);
      
fputs($aop,"0|0|0|0|0");
      
flock($aop,2);
      
fclose($aop);
   }

if (!
file_exists("ip.dat")) { touch("ip.dat",666); }
if (!
file_exists("ua.dat")) { touch("ua.dat",666); }

$answer "answer.dat";
$anf file($answer);

$user_agent="";

if (isset(
$add) && isset($op))
{
  
$ip $REMOTE_ADDR;

  
$fip file("ip.dat");
  
$error null;

  for (
$i=0;$i<sizeof($fip);$i++) { if ($ip == trim($fip[$i])) { $error "1"; } }

  if (!isset(
$error) || empty($error) || $error != '1')
    {
        
$fop fopen("ip.dat","a");
        
flock($fop,2);
        
fputs($fop,"$ip\r\n");
        
flock($fop,3);
        
fclose($fop);
    }

//////////////////////
// здесь дописано

  
$user_agent=$_SERVER["HTTP_USER_AGENT"];

  
$fua file("ua.dat");
  
$error_ua null;

  for (
$i=0;$i<sizeof($fua);$i++) { if ($user_agent == trim($fua[$i])) { $error_ua "1"; } }

  if (!isset(
$error_ua) || empty($error_ua) || $error_ua != '1')
    {
        
$fop fopen("ua.dat","a");
        
flock($fop,2);
        
fputs($fop,"$fua\r\n");
        
flock($fop,3);
        
fclose($fop);
    }
////////////////////////
//

}

//////////////////////
//  дописано

if (isset($add) && isset($op) && ((isset($error) && !empty($error) && $error == '1') || (isset($error_ua) && !empty($error_ua) && $error_ua == '1')  ) ) { echo "Вы уже голосовали"; }

////////////////////////
//
if (isset($see))
{
  
$file fopen($answer,"r+t");
  
$writ=fread($file,filesize($answer));
  
$writ=explode("|",$writ);

      echo 
"<table><tr>Результаты<tr>";
  echo 
"<table><tr><td align=center>Как вам мой сайт?</td></tr><tr><td height=8></td></tr>";
  echo 
"<tr><td> Супер  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $writ[0]</td></tr>";
  echo 
"<tr><td>Хорошо &nbsp;&nbsp;&nbsp; $writ[1]</td></tr>";
  echo 
"<tr><td>Пойдет &nbsp;&nbsp;&nbsp; $writ[2]</td></tr>";
  echo 
"<tr><td>Плохо  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $writ[3]</td></tr>";
  echo 
"<tr><td>Ужасно &nbsp;&nbsp;&nbsp; $writ[4]</td></tr><tr><td height=8></td></tr>";
}

if (isset(
$add) && isset($op) && ((!isset($error) || empty($error) || $error != '1') || (!isset($error_ua) || empty($error_ua) || $error_ua != '1'))  )
{
  
$file fopen($answer,"r+t");
  
$writ=fread($file,filesize($answer));
  
$writ=explode("|",$writ);

  if(
$op == 1) { $writ[0]=$writ[0]+1; }
  if(
$op == 2) { $writ[1]=$writ[1]+1; }
  if(
$op == 3) { $writ[2]=$writ[2]+1; }
  if(
$op == 4) { $writ[3]=$writ[3]+1; }
  if(
$op == 5) { $writ[4]=$writ[4]+1; }


  echo 
"<table><tr><td align=center>Как вам мой сайт?</td></tr><tr><td height=8></td></tr>";
  echo 
"<tr><td><input type=radio> Супер  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $writ[0]</td></tr>";
  echo 
"<tr><td><input type=radio> Хорошо &nbsp;&nbsp;&nbsp; $writ[1]</td></tr>";
  echo 
"<tr><td><input type=radio> Пойдет &nbsp;&nbsp;&nbsp; $writ[2]</td></tr>";
  echo 
"<tr><td><input type=radio> Плохо  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $writ[3]</td></tr>";
  echo 
"<tr><td><input type=radio> Ужасно &nbsp;&nbsp;&nbsp; $writ[4]</td></tr><tr><td height=8></td></tr>";

  
$writ=implode("|",$writ);
  
rewind($file);
  
fwrite($file,$writ);
  
fclose($file);
}

if (!isset(
$add) && !isset($op) && !isset($see))
{
  echo 
"<table><form action=$PHP_SELF method=post>";
  echo 
"<tr><td align=center>Как вам мой сайт?</td></tr><tr><td height=8></td></tr>";
  echo 
"<tr><td><input name=op type=radio value=1> Супер</td></tr>";
  echo 
"<tr><td><input name=op type=radio value=2> Хорошо</td></tr>";
  echo 
"<tr><td><input name=op type=radio value=3> Пойдет</td></tr>";
  echo 
"<tr><td><input name=op type=radio value=4> Плохо</td></tr>";
  echo 
"<tr><td><input name=op type=radio value=5> Ужасно</td></tr><tr><td height=8></td></tr>";
  echo 
"<tr><td align=center><input type=submit name=\"add\" value=\":: Ответить ::\"></td></tr>";
  echo 
"<tr><td align=center><input type=submit name=\"see\" value=\":: Результаты ::\"></td></tr></form>";
}

?>

по идее второй раз пользователь оставить голос не может так как в файлы записывается его UA и IP. просто в том файле что я вложил идет запись только IP адрес, но мне нужно еще и софт. Почему получается второй раз проголосовать?

   
 
 автор: 31   (11.08.2006 в 19:30)   письмо автору
 
   для: 31   (11.08.2006 в 18:56)
 

неправильно в файл ua записывается юзер агент. все время записываетчя Array а не агент. почему так происходит?

   
 
 автор: Unkind™   (11.08.2006 в 23:13)   письмо автору
 
   для: 31   (11.08.2006 в 19:30)
 

Это:

fputs($fop,"$fua\r\n");

замените на это:

fputs($fop, getenv('HTTP_USER_AGENT')."\r\n");

   
 
 автор: 31   (11.08.2006 в 23:29)   письмо автору
 
   для: Unkind™   (11.08.2006 в 23:13)
 

Unkind™ спасибо. точно работает все! я уже втрой день парюсь а тут все так просто!

   
 
 автор: 31   (11.08.2006 в 23:31)   письмо автору
 
   для: 31   (11.08.2006 в 23:29)
 

Unkind™ а как ты в своих опросах сделал результаты в процентах?

   
 
 автор: Unkind™   (11.08.2006 в 23:35)   письмо автору
 
   для: 31   (11.08.2006 в 23:31)
 

А ты кто? ;)

   
 
 автор: 31   (11.08.2006 в 23:51)   письмо автору
 
   для: Unkind™   (11.08.2006 в 23:35)
 

Unkind™ да я в wap'е просто на вен форуме бывает сижу ты же там модер тебя знаю. ну если ты не анхост то тогда извиняюсь. )

   
 
 автор: Unkind™   (12.08.2006 в 13:33)   письмо автору
 
   для: 31   (11.08.2006 в 23:51)
 

Да, я это...А ты, наверное, Admin...Раз секретишься так...=)))

<?php
printf
("%01.1f%s"$answers['votes']/$allvotes 100"%");
//$answers['votes'] - это у меня голоса за ответ
//$allvotes - ну это все голоса, естественно...
?>

   
 
 автор: 31   (12.08.2006 в 16:13)   письмо автору
 
   для: Unkind™   (12.08.2006 в 13:33)
 

Unkind™ спасибо) нет я там под ником 31 все время)
куда мне до админа =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования