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

Как неопустить запуск пхп скрипта дважды?
  #1  
Старый 12.03.2007, 13:03
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию Как неопустить запуск пхп скрипта дважды?

Мне просто позарез необходим кусочек кода недопускающий запуск одного и итогоже скрипта (в моём случае опроса) на одном и томже компьютере дважды, или пусть запускается, но юзеру вместо вопросов выведется строчка "Хрен тебе".

Ps:Просто у меня есть такая проблема: юзверь не должен одновременно быть на одном и том-же сайте, просто там стоит опрос и опрашиваемый как правило узнаёт правильный ответ на вопрос просто открыв тотже сайт и тыкнув на ответ находит правильный вариант, а затем закрывает второе окно и вставляет в первое верный ответ.
 
Ответить с цитированием

  #2  
Старый 12.03.2007, 13:11
Аватар для blaga
blaga
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме:
2976185

Репутация: 694


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

кукисы и запоминание ip. И вообще что эта тема делает в этом разделе? Перенес в PHP.
 
Ответить с цитированием

  #3  
Старый 12.03.2007, 13:24
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

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

А можно поконкретнее. Мнебы кусочек кода по сравнению куков, ip, сессии и выводе определённой странички...
 
Ответить с цитированием

  #4  
Старый 12.03.2007, 13:27
Аватар для blaga
blaga
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме:
2976185

Репутация: 694


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

а почему бы тебе самому этим незаняться? Есть отличный сайт по теме. http://php.su русский. Там все хорошо описано. Здесь помогают решать проблемы а не решают их за тебя.
 
Ответить с цитированием

  #5  
Старый 12.03.2007, 15:00
Аватар для r0
r0
Постоянный
Регистрация: 17.07.2005
Сообщений: 475
Провел на форуме:
1665310

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

Код:
<?php
  ///////////////////////////////////////////////////
  // Web-приложения для книги "Профессиональный сайт на PHP 5"
  // 2004 (C) IT-студия SoftTime (http://www.softtime.ru)
  // Симдянов И.В. (simdyanov@softtime.ru)
  // Голышев С.В. (glsv@softtime.ru)
  // Кузнецов М.В. (kuznetsov@softtime.ru)
  ///////////////////////////////////////////////////

  // Устанавливаем соединение с базой данных
  include "../admin/config.php";
  $title="Голосование";      
  include "../util/top.php";  
  ?>
  <h1 class=artnamepage>Голосование</h1>   
  <?
  // Учитываем голос
  if(!empty($_POST['id_answer']))
  {
    $id_answer = $_POST['id_answer'];
    // Получаем ip-адрес посетителя
    // Это необходимо для реализации защиты от накруток
    $forward = getenv(HTTP_X_FORWARDED_FOR);
    $ip = urldecode(getenv(HTTP_CLIENTIP));
    if (($forward != NULL)&&($forward != $REMOTE_ADDR)) $ip = $ip."/".$forward;
    // Проверяем наличие IP-адреса посетителя в таблице poll_ip
    // В ней содержатся IP-адреса последних проголосовавших посетителей
    $isip = "SELECT * FROM poll_ip 
             WHERE ip = '$ip' 
             AND puttime > now() - interval '2' minute";
    $ipresult = mysql_query($isip);
    // Удаляем устаревшие записи в таблице poll_ip
    // (IP-адреса посетителей голосовавших более 2 минут назад)
    $delip = "DELETE FROM poll_ip 
              WHERE puttime < now() - interval '2' minute";
    mysql_query($delip);
    // Проверка на ошибки при выполнении запроса 
    if($ipresult)
    {
      // Если результат запроса не содержит записей,
      // то посетитель с данных ip-адресом не учавствовал в голосовании
      // за последние 2 минуты и его голос должен быть засчитан 
      if(mysql_num_rows($ipresult)<1)
      {
        // Заносим ip-адрес посетителя в таблицу poll_ip
        mysql_query("INSERT INTO poll_ip VALUES(0, '$ip', now())");
        // Заносим результат голосования посетителя в таблицу answer
        $query = "SELECT hit FROM answer 
                  WHERE id_answer = $id_answer";
        $num = mysql_query($query);
        if($num)
        {
          $number = mysql_fetch_array($num);
          $query = "UPDATE answer SET hit = ".($number['hit']+1)." 
                    WHERE id_answer = $id_answer";
          mysql_query($query);
        } else puterror("Ошибка при обращении к блоку голосования");
      }
      else
      {
        echo "<p class=msg><b>Вы уже голосовали за последние 2 минуты. Ваше голосование не будет засчитано.</b></p>";
      }
    }
  }
  else
  {
    echo "<p class=msg><b>Вы не выбрали вариант ответа</b></p>";
  }
  // Отображаем результаты голосования
  $query = "SELECT * FROM poll 
            WHERE archive = 'active' AND hide = 'show'";
  $pol = mysql_query($query);
  if ($pol)
  {
    $poll = mysql_fetch_array($pol);
    // Отображаем вопрос голосования
    echo "<h3 class=artzag>".$poll['name']."</h3>";
    // Просматриваем ответы на вопрос голосования 
    // и статистику голосования по ним
    $query = "SELECT * FROM answer 
              WHERE id_poll = ".$poll['id_poll']." 
              ORDER BY pos";
    // Подсчитываем сумму всех проголосовавших в текущем голосовании
    $total = "SELECT SUM(hit) FROM answer 
              WHERE id_poll = ".$poll['id_poll'];
    $ans = mysql_query($query);
    $tot = mysql_query($total);
    if($ans && $tot)
    {
      $totl = mysql_fetch_array($tot);
      $totalhits = $totl['SUM(hit)'];
      if($totalhits == 0) $totalhits = 1;
      // Выводим заголовок таблицы с результатами голосования
      echo "<table border=1>
  	       <tr><td>Ответ</td><td>Проголосовало</td><td>%</td></tr>";
      while($answer = mysql_fetch_array($ans))
      {
        // Выводим результаты голосования
        echo "<tr>
                <td>".$answer['name']."</td>
                <td>".$answer['hit']."</td>
                <td>".sprintf("%01.1f%s", $answer['hit']/$totalhits*100,'%')."</td>
              </tr>";
      }
      echo "</table>";
      echo "Общее число проголосовавших составляет: ".$totl['SUM(hit)']."<br><br>";
      // Ссылка на просмотр архива
      echo "<a href=archive.php>Посмотреть архив голосований</a><br>";
    } else puterror("Ошибка при обращении к блоку голосования");
  } else puterror("Ошибка при обращении к блоку голосования");
include "../util/bottom.php";   
?>
 
Ответить с цитированием

  #6  
Старый 12.03.2007, 15:14
Аватар для blaga
blaga
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме:
2976185

Репутация: 694


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

Код выше это работа c ip. Всмысле это голосование которое разворотишь и получиться код для работы с ip адресом как в твоем случае.
 
Ответить с цитированием

  #7  
Старый 12.03.2007, 21:01
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

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

И за сайт и за код спасибо, многое почерпнул!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск Perl скрипта из командной строки Prince_Dark Windows 10 20.07.2007 12:37
Посимвольный перебор в базах данных на примере MySQL LoFFi Чужие Статьи 5 30.04.2007 05:05
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Как использовать cross-site scripting (css) foreva Чужие Статьи 0 06.02.2005 19:03



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


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




ANTICHAT.XYZ