View file golos/golos.php

File size: 4.73Kb
<?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&amp;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=\"&#x0412;&#x044B;&#x0445;&#x043E;&#x0434;\"><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>&#x0421;&#x043F;&#x0430;&#x0441;&#x0438;&#x0431;&#x043E; &#x0437;&#x0430; &#x0433;&#x043E;&#x043B;&#x043E;&#x0441;!","$url");
		}

		$text.="<b>".$arr[0]."</b>\n<br/>&#x0412;&#x0441;&#x0435;&#x0433;&#x043E; &#x0433;&#x043E;&#x043B;&#x043E;&#x0441;&#x043E;&#x0432;: $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>&#x0413;&#x043E;&#x043B;&#x043E;&#x0441;&#x043E;&#x0432;&#x0430;&#x0442;&#x044C;<go href=\"$url\" method=\"post\"><postfield name=\"select\" value=\"$(select)\"/></go></anchor><br/>
<a href=\"$fhome\">&#x0413;&#x043B;&#x0430;&#x0432;&#x043D;&#x0430;&#x044F;</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("&#x0".$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=\"&#x0413;&#x043E;&#x043B;&#x043E;&#x0441;&#x043E;&#x0432;&#x0430;&#x043D;&#x0438;&#x0435;\">";
echo "
$s";
if ($t) echo "<br/><a href=\"$t\">&#x041D;&#x0430;&#x0437;&#x0430;&#x0434;</a>";
echo "

</p>
</card>
</wml>";
	ob_end_flush();
	die("");
	}