Категория архива: php

Аналог функции для сокетов, только с использованием курла. Постоянно теряю её на харде, поэтому выложу здесь:

<?php
set_time_limit(0);
ob_implicit_flush ();
//
//mr.The
//
 
/**
Функция получения страницы с использованием курла
**/
function get_page($url,$post='',$ref='',$cookie='',$ua="Opera 9.64 (compatible; MSIE 6.0; Windows NT 5.1; ru)",$proxy='') {
    $ch = curl_init();
 
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_USERAGENT,$ua);
    curl_setopt($ch, CURLOPT_REFERER,$ref);
 
    curl_setopt($ch, CURLOPT_PROXY , $proxy);
 
    if($post!==''){
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
 
    $headers [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
    $headers [] = "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8";
    $headers [] = "Connection: close";
    $headers [] = "Cache-Control: no-store, no-cache, must-revalidate";
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
    curl_setopt($ch, CURLOPT_HEADER, 1); // тут лучше поставить 0, если куки не нужны
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    @curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
    $result = curl_exec($ch);
    curl_close($ch);
    if($result)return $result; else    return false;
}
 
function get_cookie($page) {
    if(!preg_match_all("/Set-Cookie: (.*)(; |\n)/Ui",$page,$rnd)) return false;
 
    print_r($rnd);
 
    $co="";
    foreach($rnd[1] as $key) $co.=trim($key).";";
    return $co;
}
?>
Авг, 9 Теги: , ,
php | Комментариев нет

Один хороший друг сделал сайт, который проверяет веб-страницы на валидность и выводит её сорцы с предложенными исправлениями. Всё красиво нарисовано и замечательно работает.

.

И закралась мне мысль... Вобщем, вместо адреса сайта, а вбил «index.php». И что, вы думаете я увидел? Правильно, исходный пхп код index'a! Добраться до конфига, а из него и до базы не составило труда. Вот так file_get_contents слил всё на свете.

.

Баг он пофиксил заюзав мою функцию

(далее...)

Авг, 2 Теги: , ,
php, Уязвимости | Один комментарий

В связи с баном демоноидом Украины — сделал себе ретрекер. При надобности — легко переписывается под другие трекеры.

UPD: чуть подправил. Теперь работает более адекватно.

< ?php
/**
 *mr.The (C)
**/
set_time_limit(0);
error_reporting(0);
 
$data="/announce?";
foreach ($_GET as $key => $value){
	if($key=="peer_id") $data.="peer_id=-UT1820-z8%D1D%CE%12%85%82R%C8%A3%1F&"; else
		$data.=$key."=".urlencode(str_replace("<error>","",$value))."&";
}
 
$socket = fsockopen("inferno.demonoid.com",3407);
if ($socket){
	$send = "GET $data HTTP/1.0\r\n";
	$send .= "Host: inferno.demonoid.com\r\n";
	$send .= "User-Agent: ".$_SERVER['USER_AGENT']."\r\n";
	$send .= "Connection: Close\r\n";
	$send .= "\r\n";
 
	if(fputs($socket,$send)) {
		$buf="";
		while(fgets($socket,1024)!="\r\n" &amp;&amp; !feof($socket));
		while(!feof($socket)) $buf.=fread($socket,1024);
	}
}
echo $buf;
?></error>

(далее...)

Апр, 20 Теги: , , ,
php | Комментариев нет

Попросили добавить Google Analytics на один сайт. Открываю шаблон, добавляю JavaScript код... И ничего не меняется. Шаблон 100% тот. Вспоминаю про кеш Smarty, и очищаю его. Ещё лучше — сайт не открывается вообще. После получаса ковыряния оказалось, что сервер не отображает ошибки, а пишет их в лог. Весь лог был забит примерно этим:

Smarty error: [in index.tpl.html line 289]: syntax error: unrecognized tag 'var' (smarty_compiler.class.php, line 580) in /home/******/www/smarty/smarty.class.php on line 1088

В шаблоне index.tpl.html на 289-й строке оказался JavaScript и его фигурные скобки, которые пытался парсить Smarty. В первой ссылке из гугла узнал, что у Smarty есть тег {literal} {/literal} который позволяет не парсить то. что внутри тега. Заключив JavaScript в этот тег всё заработало.

Вывод: читайте логи и мануалы к распространённым классам!

Апр, 13 Теги: , , ,
php | Комментариев нет

Нашел свою функцию для работы с сокетами. Если нет курла, то очень удобно.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
set_time_limit(0);
ob_implicit_flush ();
//
//mr.The (C)
//
 
/**
Функция получения страницы с использованием сокетов
**/
function get_page($site,$page,$ref='',$cookie='',$post='',$isheaders=false,$ua='Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)')
{
$page=trim($page);
$site=trim($site);
$socket = fsockopen($site, 80, $errno, $errstr, 15);
if ($socket){
 
	if ($post!=''){
		$send  = "POST $page HTTP/1.0\r\n"; 
		$send .= "Content-Length: ". strlen($post) ."\r\n";
		$send .= "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n";	
	}  else $send  = "GET $page HTTP/1.0\r\n";
	$send .= "User-Agent: $ua\r\n";
	$send .= "Host: $site\r\n";
	$send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
	if($ref!='') $send .= "Referer: $ref\r\n";
	if($cookie!=''){
		$send .= "Cookie: $cookie\r\n";
    	$send .= 'Cookie2: $Version=1'."\r\n";
    }
	$send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
	$send .= "Connection: close\r\n\r\n".$post;
 
 
	if(fputs($socket,$send)) { 
		if(!$isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket));
		$he="";
		while(!feof($socket)) $he.=fread($socket,10240);
	};
	fclose($socket);
}
return $he;
};
?>
марта, 20 Теги: , , ,
php | 2 комментария