В сети есть сайт myminicity.com, где каждому желающему предлагают построиьт свой город. Суть заключается в том, чтобы заходить по ссылкам в город увеличивая соответсвующий параметр. Всё просто и лаконично, если не считать, что каждый город можно увеличить 1 раз в сутки с 1-го IP адреса.
Можно, конечно, постоянно отключать интернет и подключать его снова, но это время и силы.
Предлагаю вашему внимания функцию загрузки страницы города, определения следующего необходимого параметра и подготовке к следующему вызову.
function UpdateCity($city){
global $i,$log;
echo '
';
$log = fopen (dirname(__FILE__)."/".$city.".log.txt", 'a');
$html=new html();
$next=file_get_contents(dirname(__FILE__)."/".$city.".next.txt");
writelog($city."\t");
$get=http_req('http://'.$city.'.myminicity.com/'.$next,array('X-MV-Referer'=>'http%3A%2F%2F'.$city.'.myminicity.com%2F'.$next), '','http://'.$city.'.myminicity.com/','Lugavchik autoBots',true,'','0',true);
if (isset($get['location'])){
$get=http_req('http://'.$city.'.myminicity.com/',array('X-MV-Referer'=>'http%3A%2F%2F'.$city.'.myminicity.com%2F'),'','ht tp://'.$city.'.myminicity.com/','Lugavchik autoBots',true,'','0',true);
}
$html->SetText($get['answer']);
$html->TruncBegin('&ranking=');
$ranks=explode('|',$html->Extract('&'));
$ranktable='';
foreach($ranks as $r){
list($pos,$name) = explode(',',$r);
$ranktable.='.($name==$city?' style="font-weight:bolder;"':'').'>'.$pos.'
.$name.'.myminicity.com/">'.$name.'';
}
$ranktable.='';
$html->TruncBegin('id="swf_client"');
$html->TruncBegin('"FlashVars","');
$flash=$html->Extract('"');
$f=explode('&',$flash);
$flashpar=array();
foreach($f as $fp){
list($name,$val)=explode('=',$fp,2);
$flashpar[$name]=$val;
}
$html->TruncBegin('id="messages">');
$chat=$html->Extract(');
$html->TruncBegin('
');
$html->TruncBegin('');
$Population=$html->Extract('');
$html->TruncBegin('');
$Cost=$html->Extract(' ');
$html->TruncBegin('Unemployment');
$html->TruncBegin('">');
$Unemployment=$html->Extract(' ');
$html->TruncBegin('Transport');
$html->TruncBegin('">');
$Transport=$html->Extract(' ');
$html->TruncBegin('Crime rate');
$html->TruncBegin('">');
$Crime=$html->Extract(' ');
$html->TruncBegin('Pollution');
$html->TruncBegin('">');
$Pollution=$html->Extract(' ');
$next='';
if ($Unemployment!='0') $next='ind';
if ($Transport!='100') $next='tra';
if ($Crime!='0') $next='sec';
if ($Pollution!='0') $next='env';
writelog($Population."\t".$Cost."\t".$Unemployment."\t".$Transport."\t".$Crime."\t".$Pollution."\t".$next."\t".$flashpar['pop']."\t".$flashpar['ind']."\;t".$flashpar['tra']."\t".$flashpar['sec']."\t".$flashpar['env']."\t".$flashpar['com']."\r\n");
$rnn = fopen (dirname(__FILE__)."/".$city.".next.txt", 'w');
fwrite($rnn, $next);
fclose($rnn);
fclose($log);
$i++;
echo '
.$i.'" style="height:100px; overflow:auto;margin-right:150px;">'.$chat.'
.$i.'">.$flash.'" scale="noscale" height="80%" width="1000px">'.$ranktable.
'
';
}
В скрипте использовано:
- Функция writelog($text); Записывающая в файл $log текст переданный в неё и выводящий его же в браузер. (Напишете сами?)
- Класс html - предназначенны для отрезания от текста частей текста с заданного начала или извлечения до указанных символов. (При необходимости поделюсь.)
- Функция http_req - Запрашивающая переданную ей страницу с приведёнными параметрами запроса. (При необходимости поделюсь.)
Вызов осуществляется с передачей имени города в качесте единственного аргумента: UpdateCity('megatron.ws');
В качестве домашнего задания написания функции переподключения интернета для смены IP адреса.