<untitled> (PHP)
Ревизии: current
Добавил: shurikpris
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Парсер</title>
</head>
<body>
<?php
if (isset($_POST['logpass'])){$logpass = $_POST['logpass'];}else{echo "<font color='#FF0000'>Не введен логин и пароль</font><br />";}
if (isset($_POST['rss'])){$rss = $_POST['rss'];}else{echo "<font color='#FF0000'>Не введен файл</font><br />";}
if (isset($_POST['mes'])){$mes = $_POST['mes'];}else{echo "<font color='#FF0000'>Не введен месяц</font><br />";}
if (isset($_POST['god'])){$god = $_POST['god'];}else{echo "<font color='#FF0000'>Не введен год</font><br />";}
if (isset($_POST['day'])){$day = $_POST['day'];}else{echo "<font color='#FF0000'>Не введен день</font><br />";}
if (isset($_POST['ot'])){$ot = $_POST['ot'];}else{echo "<font color='#FF0000'>Не введен диапазон статей</font><br />";}
if (isset($_POST['do'])){$do = $_POST['do'];}else{echo "<font color='#FF0000'>Не введен диапазон статей</font><br />";}
if (isset($_POST['sim'])){$sim = $_POST['sim'];}else{echo "<font color='#FF0000'>Не введено количество символов</font><br />";}
echo '
<div align="center">
<form action="" method="post">
<textarea name="logpass" cols="50" rows="10">'.$logpass.'</textarea><br /><br />
<label>Название текстового файла</label>
<input size="50px" name="rss" type="text" maxlength="200" value="'.$rss.'" />
<br />
<br />
<label>Введите год:</label>
<input name="god" type="text" maxlength="100" value="'.$god.'" />
(В формате 2009)
<br />
<br />
<label>Введите месяц:</label>
<input name="mes" type="text" maxlength="100" value="'.$mes.'" />
(В формате от 1 до 12)
<br />
<br />
<label>Введите день:</label>
<input name="day" type="text" maxlength="100" value="'.$day.'" />
(В формате от 1 до 31)
<br />
<br />
<label>Разместить статьи от:</label>
<input name="ot" size="10px" type="text" maxlength="10" value="'.$ot.'" />
<label>всего:</label>
<input name="do" size="10px"type="text" maxlength="10" value="'.$do.'" />
<br />
<br />
<label>Количество символов:</label>
<input name="sim" type="text" maxlength="100" value="'.$sim.'" />
<br />
<br />
<input name="" type="submit" />
</form>
</div>
';
function recursive($data)
{
if (is_array($data))
{
$d = array();
foreach ($data as $k => &$v)
{
$d[cp1251_to_utf8_recursive($k)] = cp1251_to_utf8_recursive($v);
}
return $d;
}
if (is_string($data)) return iconv('cp1251', 'utf-8//IGNORE//TRANSLIT', $data);
if (is_scalar($data) or is_null($data)) return $data;
#throw warning, if the $data is resource or object:
trigger_error('An array, scalar or null type expected, ' . gettype($data) . ' given!', E_USER_WARNING);
return $data;
}
function detectUTF8($string)
{
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs', $string);
}
function split_zag($text)
{
$k = 0;
$result = '';
for ($i = 0; $i < strlen($text); $i++)
{
if ($text[$i] == ' ')
{
$k++;
if ($k == 4)
{
$result = substr($text, 0, $i);
break;
}
}
}
return $result;
}
class UniqueRand
{
private $from;
private $to;
private $allready_used;
function __construct($from, $to)
{
$this->from = $from;
$this->to = $to;
$this->allready_used = array();
}
public function next()
{
$result = "fail";
if ($this->to - $this->from + 1 == count($this->allready_used))
{
return $result;
}
while (true)
{
$i = mt_rand($this->from, $this->to);
if (array_search($i, $this->allready_used) === false)
{
$result = $i;
$this->allready_used[] = $result;
break;
}
}
return $result;
}
}
function split_rand($text)
{
$k = 0;
for ($i = 0; $i < strlen($text); $i++)
{
if ($text[$i] == ' ')
{
$k++;
$spaces[] = $i;
}
}
$v=0;
while ($v <= 10)
{
$per = new UniqueRand(1, $k - 2); /*mt_rand(1, $k - 2);*/
$p = $per->next() ;
$w = substr($text, $spaces[$p], $spaces[$p + 1] - $spaces[$p]);
if (strlen($w) > 5)
{
$pattern = "/[,.!@#$%^&*()':;-_]/";
$replacement = '';
$tert = preg_replace($pattern, $replacement, $w);
return strtolower($tert);
}
else
{
$v++;
}
}
}
function split_it($text, $count, $from = 0, $line = 200)
{
$result = array();
$k = 0;
for ($i = 0; $i < strlen($text), count($result) <= $count; $i++)
{
if ($k > $line)
{
if ($text[$i] == '.')
{
if ($from != 0)
{
$from--;
$k = 0;
}
else
{
$result[] = substr($text, $i - $k, $k + 1);
$k = 0;
}
}
else
{
$k++;
}
}
else
{
$k++;
}
}
return $result;
}
function kodir($text)
{
$cont = detectUTF8($text);
if($cont == 0)
{
return recursive($text);
}
else
{
return $text;
}
}
$contents = file_get_contents($rss);
include('IXR_Library.inc.php');
preg_match_all ("/(.*)\|(.*)/", $logpass, $out, PREG_SET_ORDER);
$a = split_it($contents, $do-1, $ot, $sim);
$ttt = 0;
define('LJ_HOST', 'www.livejournal.com');
define('LJ_PATH', '/interface/xmlrpc');
define('LJ_LOGIN', trim($out[$ttt][1]));
define('LJ_PASSWD', trim($out[$ttt][2]));
$ttt++;
$ot += $do;
foreach($a as $b)
{
$r = split_zag($b);
/* echo $r."." . "<br><br>";
echo $b . "<br><br>";*/
$y = split_rand($b);
$x = split_rand($b);
$z = split_rand($b);
/*echo $y.",".$x.",".$z . "<br><br><br><br><br><br>";*/
$tag = kodir($y).",".kodir($x).",".kodir($z);
// Создаем xml-rpc клиента
$ljClient = new IXR_Client(LJ_HOST, LJ_PATH);
// Посылаем challange-запрос (что такое - читайте ниже)
if (!$ljClient->query('LJ.XMLRPC.getchallenge')) {
echo 'Ошибка [' . $ljClient->getErrorpre().'] '.$ljClient->getErrorMessage();
}
else {
// Получаем ответ
$ljResponse = $ljClient->getResponse();
// Вытягиваем challenge
$ljChallenge = $ljResponse['challenge'];
// Заполняем поля XML-запроса
$ljArgs = array();
// Имя пользователя
$ljArgs['username'] = LJ_LOGIN;
// Указываем способ идентификации
$ljArgs['auth_method'] = 'challenge';
// Указываем полученный challenge
$ljArgs['auth_challenge'] = $ljChallenge;
// Посылаем зафрованный пароль
// формула md5(challenge + md5(password))
$ljArgs['auth_response'] = md5($ljChallenge . md5(LJ_PASSWD));
// Версия протокола, 1 - все данные в кодировке UTF-8
$ljArgs['ver'] = "1";
// Текст записи (перекодируем из windows-1251 в UTF-8)
$ljArgs['event'] = kodir($b);
// Заголовок записи (перекодируем из windows-1251 в UTF-8)
$ljArgs['subject'] = kodir($r);
// Дата
$ljArgs['year'] = $god; // год
$ljArgs['mon'] = $mes; // месяц
$ljArgs['day'] = $day; // день
$ljArgs['hour'] = 12; // часы
$ljArgs['min'] = 00; // минуты
// Доп параметры
$ljArgs['props'] = array(
// Текст уже отформатирован (содержит HTML-теги)
'opt_preformatted' => false,
// Добавляем запись "задним числом"
'opt_backdated' => true,
'taglist' => $tag,
);
// Доступность записи - доступна всем (по-умолчанию)
$ljArgs['security'] = 'public';
// Добавляем новое сообщение
$ljMethod = 'LJ.XMLRPC.postevent';
// Посылаем запрос
if (!$ljClient->query($ljMethod, $ljArgs)) {
echo 'Ошибка ['.$ljClient->getErrorpre().'] '.$ljClient->getErrorMessage();
}
else {
// Получаем ответ
$ljResponse = $ljClient->getResponse();
print_r($ljResponse);
}
}
echo '<br />';
}
echo '
<form action="next.php" method="post">
<input name="logpass" type="hidden" maxlength="200" value="'.$logpass.'"/>
<input name="rss" size="50px" type="hidden" maxlength="200" value="'.$rss.'" />
<input name="god" type="hidden" maxlength="100" value="'.$god.'" />
<input name="mes" type="hidden" maxlength="100" value="'.$mes.'" />
<input name="day" type="hidden" maxlength="100" value="'.$day.'" />
<input name="ot" size="10px" type="hidden" maxlength="10" value="'.$ot.'" />
<input name="do" size="10px"type="hidden" maxlength="10" value="'.$do.'" />
<input name="sim" type="hidden" maxlength="100" value="'.$sim.'" />
<input name="ttt" type="hidden" maxlength="100" value="'.$ttt.'" />
<input name="" type="submit" value="Следующий журнал"/>
</form>
';
?>
</body></html>
Комментарии:
Нет