<?php
$version = 0.1;
/*
Голосование для WAP сайта.
Достоинства:
- Может работать с несколькими голосованиями, сохраненными в разных файлах.
Как настроить:
- Подготовьте файл с вопросом и вариантами ответов как в примере ниже, сохраните с именем golos.dat и используйте ссылку golos.php?f=golos.dat
Формат файла для голосования: первая строка вопрос, остальные - варианты ответа. Скрипт в итоге после каждого ответа допишет кол-во голосов.
Пример файла golos.dat:
--------
Что надо делать со слониками?
Убить
Повесить и убить
Повесить, убить и сжечь
Показывать детям, потому что они такие милые
--------
-- Для golos.dat нужно ставить chmod 777
[email protected]
*/
if ($PHP_SELF=='') $PHP_SELF = $_SERVER["PHP_SELF"]; // путь к текущему файлу, например: /phptest.php
$tmp=$QUERY_STRING;if($tmp=='') $tmp=$_SERVER["QUERY_STRING"]; // в зависимости от настроек сервера
$tmp=preg_replace('/[^ -}А-я#]|\$/e',"",$tmp);
parse_str($tmp); // теперь появятся переменные $url, $p и т.д.
if (!$f) $f="golos.dat"; // файл с данными
$fhome="http://zheka911.com.ru"; // домашняя страница
srand ((float) microtime() * 10000000);
$url="$PHP_SELF?f=$f&r=".chr(rand(97,122)).chr(rand(97,122)); // эта строчка будет добавляться во все ссылки
//===============================================
// загружаем данные из файла
//===============================================
if (!file_exists($f)) tsecho("<p>Не найден файл ".$f);
else $arr = file($f);
for($i=0;$i<count($arr);$i++) {$arr[$i]=str_replace("\r","",$arr[$i]);$arr[$i]=str_replace("\n","",$arr[$i]);}
if (count($arr)<2) tsecho("<p>Неверный формат файла ".$f);
if (!$arr[count($arr)-1]) unset($arr[count($arr)-1]);
//===============================================
// основная страница
//===============================================
$text="<do type=\"options\" name=\"o1\" label=\"Выход\"><go href=\"$fhome\"/></do>";
$text.="<p>";
$arrc=array();
$count=0;
for ($i=1;$i<count($arr);$i++) {
$arr[$i]=explode("[:]",$arr[$i]);
if (count($arr[$i])==2 && intval($arr[$i][1])) $arrc[$i]=intval($arr[$i][1]); else $arrc[$i]=0;
$count+=$arrc[$i];
}
if ($select) {
if ($select>=count($arr)) tsecho("<p>Неверный ответ","$url");
$arr[$select][1]+=1;
// сохраняем...
$file = fopen ($f, "w");
if ($file) {
fputs($file,$arr[0]."\n");
for ($i=1;$i<count($arr);$i++) {
fputs($file,$arr[$i][0]);
if (count($arr[$i])==2) fputs($file,"[:]".$arr[$i][1]);
fputs($file,"\n");
}
fclose($file);
} else tsecho("<p>Ошибка при сохранении файла","$url");
tsecho("<p>Спасибо за голос!","$url");
}
$text.="<b>".$arr[0]."</b>\n<br/>Всего голосов: $count<br/><select name=\"select\" value=\"1\">";
for ($i=1;$i<count($arr);$i++) {
if ($count>0) $per=round($arrc[$i]*100/$count); else $per=0;
$text.="\n<option value=\"$i\">".$arr[$i][0];
if ($arrc[$i]>0) $text.=" [".$arrc[$i]." гол., ".$per."%]";
$text.="</option>";
}
$text.="</select>";
$text.="<anchor>Голосовать<go href=\"$url\" method=\"post\"><postfield name=\"select\" value=\"$(select)\"/></go></anchor><br/>
<a href=\"$fhome\">Главная</a>";
tsecho($text);
//===============================================
// вывод
//===============================================
function tsecho($s,$t="") {
global $ft;
header ("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, no-store, must-revalidate, max-age=0");
header ("Pragma: no-cache");
header("Content-type:text/vnd.wap.wml;charset=utf-8");
setlocale (LC_CTYPE, 'ru_RU.CP1251');
function win2unicode ( $s ) { if ( (ord($s)>=192) & (ord($s)<=255) ) $hexvalue=dechex(ord($s)+848); if ($s=="Ё") $hexvalue="401"; if ($s=="ё") $hexvalue="451"; return("�".$hexvalue.";");}
function translate($s) {return(preg_replace("/[А-яЁё]/e","win2unicode('\\0')",$s));}
ob_start("translate");
echo "<?xml version=\"1.0\"?>\n<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">";
echo "
<wml>
<card title=\"Голосование\">";
echo "
$s";
if ($t) echo "<br/><a href=\"$t\">Назад</a>";
echo "
</p>
</card>
</wml>";
ob_end_flush();
die("");
}