Как неопустить запуск пхп скрипта дважды? Мне просто позарез необходим кусочек кода недопускающий запуск одного и итогоже скрипта (в моём случае опроса) на одном и томже компьютере дважды, или пусть запускается, но юзеру вместо вопросов выведется строчка "Хрен тебе". Ps:Просто у меня есть такая проблема: юзверь не должен одновременно быть на одном и том-же сайте, просто там стоит опрос и опрашиваемый как правило узнаёт правильный ответ на вопрос просто открыв тотже сайт и тыкнув на ответ находит правильный вариант, а затем закрывает второе окно и вставляет в первое верный ответ.
А можно поконкретнее. Мнебы кусочек кода по сравнению куков, ip, сессии и выводе определённой странички...
а почему бы тебе самому этим незаняться? Есть отличный сайт по теме. http://php.su русский. Там все хорошо описано. Здесь помогают решать проблемы а не решают их за тебя.
Code: <?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"; ?>
Код выше это работа c ip. Всмысле это голосование которое разворотишь и получиться код для работы с ip адресом как в твоем случае.