| Current Path : /home/seto/public_html/brokers-binary.com/lm/template/ |
| Current File : /home/seto/public_html/brokers-binary.com/lm/template/code.php |
<?php
if(!defined("INDEX")){header('HTTP/1.1 403 Forbidden'); die('403 Forbidden');}
$db = new SQLite3("data.db");
$db->busyTimeout(5000);
$db->exec("PRAGMA journal_mode=WAL;");
//получаем данные из $_GET
if(isset($_GET['q'])){$q = $_GET['q'];} else{$q = '';}
if(isset($_GET['d'])){$d = $_GET['d'];} else{$d = '';}
if(isset($_GET['i'])){$i = $_GET['i'];} else{$i = '';}
//переменные
$res_search = '';
//удаление донора
if(!empty($d) && $q == 'delete_donor'){
$db->query("DROP TABLE '$d';");
$db->querySingle("VACUUM;");
}
//добавление новых доноров
if(isset($_POST['donors']) && $_POST['submit'] == "Submit"){
$donors = explode("\r\n", $_POST['donors']);
$x = 0;
while(!empty($donors[$x])){
$donor = trim($donors[$x]);
if(!$db->querySingle("SELECT * FROM sqlite_master WHERE type = 'table' AND name = '$donor';")){
$db->query("PRAGMA encoding = 'UTF-8'; PRAGMA journal_mode = WAL; CREATE TABLE '$donor' (id INTEGER PRIMARY KEY, url TEXT, links TEXT, count TEXT, google TEXT, yandex TEXT);");
$url = "http://$donor/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$page = curl_exec($ch);
$test = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$db->query("INSERT INTO '$donor' (url, links, count, google, yandex) VALUES ('http://$donor/', '', '0', 'x', 'x');");
$y = 1;
preg_match_all("~(http://$donor/.+?/)\">~", $page, $matches);
while(!empty($matches[1][$y])){
$page_url = trim($matches[1][$y]);
$page_url = SQLite3::escapeString(htmlentities($page_url, ENT_QUOTES, 'UTF-8'));
$db->query("INSERT INTO '$donor' (url, links, count, google, yandex) VALUES ('$page_url', '', '0', 'x', 'x');");
$y++;
}
}
$x++;
}
}
//считаем доноров
$count_donors = $db->querySingle("SELECT COUNT(*) FROM sqlite_master WHERE type = 'table';");
//редактирование ссылок
if(isset($_POST['block_links']) && $_POST['submit'] == "Submit"){
$block_links = explode("\r\n", $_POST['block_links']);
$x = 0;
$bl = '';
$cl = 0;
while(isset($block_links[$x])){
$link = trim($block_links[$x]);
if(!empty($link)){
if(empty($bl)){
$bl = $link;
}
else{
$bl = $bl.'|'.$link;
}
$cl++;
}
$x++;
}
$bl = SQLite3::escapeString(htmlentities($bl, ENT_QUOTES, 'UTF-8'));
$db->query("UPDATE '$d' SET links = '$bl' WHERE id = '$i';");
$db->query("UPDATE '$d' SET count = '$cl' WHERE id = '$i';");
}
//считаем страницы донора
if($db->querySingle("SELECT * FROM sqlite_master WHERE type = 'table' AND name = '$d';")){
if(!empty($d)){
$count_pages = $db->querySingle("SELECT COUNT(*) FROM '$d';");
}
}
//добавление страниц
if($q == 'add_pages' && !empty($d) && isset($_POST['add_pages'])){
$add_pages = trim($_POST['add_pages']);
$add_pages = explode("\r\n", $add_pages);
$x = 0;
while(!empty($add_pages[$x])){
$new_page = $add_pages[$x];
$new_page = SQLite3::escapeString(htmlentities($new_page, ENT_QUOTES, 'UTF-8'));
if(!$db->querySingle("SELECT * FROM '$d' WHERE url = '$new_page';")){
if(preg_match("~^http://$d/.*$~", $new_page, $matches)){
$db->query("INSERT INTO '$d' (url, links, count, google, yandex) VALUES ('$new_page', '', '0', 'x', 'x');");
}
}
$x++;
}
}
//удаление страниц
if($q == 'delete_pages' && !empty($d) && !empty($i)){
$db->query("DELETE FROM '$d' WHERE id = '$i';");
$db->querySingle("VACUUM;");
}
//удаление получателей
if($q == 'delete_links' && isset($_POST['delete_links']) && $_POST['submit'] == "Submit"){
$delete_links = trim($_POST['delete_links']);
$delete_links = explode("\r\n", $delete_links);
$x = 0;
while(!empty($delete_links[$x])){
$dl = $delete_links[$x];
$res_1 = $db->query("SELECT name FROM sqlite_master;");
while($array_1 = $res_1->fetchArray(SQLITE3_ASSOC)){
$donor = trim($array_1['name']);
$res_2 = $db->query("SELECT * FROM '$donor';");
while($array_2 = $res_2->fetchArray(SQLITE3_ASSOC)){
$links = trim($array_2['links']);
$id = trim($array_2['id']);
if(stristr($links, $dl)){
$ex_links = explode('|', $links);
$y = 0;
$bl = '';
$cl = 0;
while(!empty($ex_links[$y])){
if(!stristr($ex_links[$y], $dl)){
if(empty($bl)){
$bl = $ex_links[$y];
}
else{
$bl = $bl.'|'.$ex_links[$y];
}
$cl++;
}
$y++;
}
$bl = SQLite3::escapeString(htmlentities($bl, ENT_QUOTES, 'UTF-8'));
$db->query("UPDATE '$donor' SET links = '$bl' WHERE id = '$id';");
$db->query("UPDATE '$donor' SET count = '$cl' WHERE id = '$id';");
}
}
}
$x++;
}
$db->querySingle("VACUUM;");
}
//поиск ссылок
if($q == 'search_links' && isset($_POST['search_links']) && $_POST['submit'] == "Submit"){
$search_links = trim($_POST['search_links']);
$search_links = explode("\r\n", $search_links);
$x = 0;
$count_search = '';
while(!empty($search_links[$x])){
$dl = $search_links[$x];
$res_1 = $db->query("SELECT name FROM sqlite_master;");
while($array_1 = $res_1->fetchArray(SQLITE3_ASSOC)){
$donor = trim($array_1['name']);
$res_2 = $db->query("SELECT * FROM '$donor';");
while($array_2 = $res_2->fetchArray(SQLITE3_ASSOC)){
$links = trim($array_2['links']);
$id = trim($array_2['id']);
$url = trim($array_2['url']);
if(stristr($links, $dl)){
$ex_links = explode('|', $links);
$y = 0;
while(!empty($ex_links[$y])){
if(stristr($ex_links[$y], $dl)){
$ex_l = $ex_links[$y];
$ex_l = stripslashes($ex_l);
$res_search = $res_search.$ex_l." | <a href=\"$admin_page?q=edit_links&d=$donor&i=$id\">$url</a><br>";
$count_search++;
}
$y++;
}
}
}
}
$x++;
}
}
//удаление всех ссылок с донора
if($q == 'delete_all_links' && !empty($d)){
$x = $count_pages;
while($x != 0){
$db->query("UPDATE '$d' SET links = '' WHERE id = '$x';");
$db->query("UPDATE '$d' SET count = '' WHERE id = '$x';");
$x--;
}
}
//удаление всех страниц донора
if($q == 'delete_all_pages' && !empty($d)){
$x = $count_pages;
while($x != 0){
$db->query("DELETE FROM '$d' WHERE id = '$x';");
$x--;
}
$db->querySingle("VACUUM;");
$count_pages = $db->querySingle("SELECT COUNT(*) FROM '$d';");
}
//считаем ссылки с донора
if($db->querySingle("SELECT * FROM sqlite_master WHERE type = 'table' AND name = '$d';")){
if(!empty($d)){
$count_links = 0;
$res = $db->query("SELECT count FROM '$d';");
while($array = $res->fetchArray(SQLITE3_ASSOC)){
$cl = trim($array['count']);
$count_links = $count_links + $cl;
}
}
}
//максимальное количество добавляемых ссылок за один раз
if($count_donors != 0){
$temp = $count_donors;
$x = array();
while(!empty($temp)){
$cd = $db->querySingle("SELECT name FROM sqlite_master WHERE type = 'table' AND rowid = '$temp';");
$cp = $db->querySingle("SELECT COUNT(*) FROM '$cd';");
$x[] = $cp;
$temp--;
}
sort($x);
// print_r($x);
$max_links = $x[0] * $count_donors;
if(isset($_POST['links'])){
$block_links = explode("\r\n", $_POST['links']);
$cl = 0;
while(!empty($block_links[$cl])){
$cl++;
}
if($cl > $max_links){
echo 'Error: Invalid number of links';
exit();
}
}
}
else{
$max_links = 0;
}
//распределение ссылок
if(isset($_POST['links']) && $_POST['links'] && $_POST['submit'] == "Submit" && $count_donors > 0){
$block_links = explode("\r\n", $_POST['links']);
$cl = 0;
while(!empty($block_links[$cl])){
$cl++;
}
//количество ссылок для каждого донора
$bl = $cl / $count_donors;
$int = intval($bl);
// echo 'Ссылок: '.$cl.'<br>';
// echo 'На каждого донора: '.$int.'<br>';
$temp = $count_donors;
$x = array();
while(!empty($temp)){
$cd = $db->querySingle("SELECT name FROM sqlite_master WHERE type = 'table' AND rowid = '$temp';");
$cp = $db->querySingle("SELECT COUNT(*) FROM '$cd';");
$x[] = $cp;
$temp--;
}
sort($x);
// print_r($x);
$max_links = $x[0] * $count_donors;
if($cl > $max_links){
echo 'Error: Invalid number of links';
exit();
}
//равномерное распределение
if($int >= 1){
u_distribution();
while(!empty($block_links[$counter])){
r_distribution();
$counter++;
}
}
//случайное распределение
else{
$counter = 0;
while(!empty($block_links[$counter])){
r_distribution();
$counter++;
}
}
}
//
function u_distribution(){
global $count_donors, $db, $int, $block_links, $counter, $cbl, $nl;
$x = $count_donors;
$counter = 0;
while(!empty($x)){
$y = $int;
$cd = $db->querySingle("SELECT name FROM sqlite_master WHERE type = 'table' AND rowid = '$x';");
$cdp = $db->querySingle("SELECT COUNT(*) FROM '$cd';");
$p_array = array();
while(!empty($y)){
$t = 0;
while($t != 1){
$rand_page = mt_rand(1, $cdp);
if(!in_array($rand_page, $p_array)){
array_push($p_array, $rand_page);
$t = 1;
}
}
$curr_link = $block_links[$counter];
$curr_link = SQLite3::escapeString(htmlentities($curr_link, ENT_QUOTES, 'UTF-8'));
$temp_p = $db->querySingle("SELECT links FROM '$cd' WHERE id = '$rand_page';");
if(!empty($temp_p)){
$curr_link = $temp_p.'|'.$curr_link;
}
$db->query("UPDATE '$cd' SET links = '$curr_link' WHERE id = '$rand_page';");
$ccl = $db->querySingle("SELECT count FROM '$cd' WHERE id = '$rand_page';");
$ccl++;
$db->query("UPDATE '$cd' SET count = '$ccl' WHERE id = '$rand_page';");
// echo 'ссылка: '.$curr_link.' => донор: '.$cd.' => id страницы: '.$rand_page.'<br>';
$counter++;
$y--;
}
$x--;
}
}
//
function r_distribution(){
global $count_donors, $db, $block_links, $counter;
$rand_donor = mt_rand(1, $count_donors);
$cd = $db->querySingle("SELECT name FROM sqlite_master WHERE type = 'table' AND rowid = '$rand_donor';");
$cdp = $db->querySingle("SELECT COUNT(*) FROM '$cd';");
$rand_page = mt_rand(1, $cdp);
$curr_link = $block_links[$counter];
$curr_link = SQLite3::escapeString(htmlentities($curr_link, ENT_QUOTES, 'UTF-8'));
$temp_p = $db->querySingle("SELECT links FROM '$cd' WHERE id = '$rand_page';");
if(!empty($temp_p)){
$curr_link = $temp_p.'|'.$curr_link;
}
$db->query("UPDATE '$cd' SET links = '$curr_link' WHERE id = '$rand_page';");
$ccl = $db->querySingle("SELECT count FROM '$cd' WHERE id = '$rand_page';");
$ccl++;
$db->query("UPDATE '$cd' SET count = '$ccl' WHERE id = '$rand_page';");
// echo 'ссылка: '.$curr_link.' => донор: '.$cd.' => id страницы: '.$rand_page.'<br>';
}
?>