Полезные коды в PHP и MySQL

2.55K
.
Tzeentch
В этой теме выкладываем полезные куски кодов PHP & SQL
Запрещен флуд, оффтоп, обсуждение, прозьбы. Описание и принцип работы приветствуется .
.
Krite
Вот кусок кода
(хоть я его и писал на кенто, напишу и здесь), для 100% подмены реферера при накрутке партнерок
<?
$mod = isset($_GET['mod']) ? trim($_GET['mod']) : '';
if (isset($_GET['index']))
$mod = 'index';
switch ($mod)
{
case 'index':
header("Location: http://johncms.com);//сюда ставишь ссылку на партнерку для накрутки
exit();
break;
}
?>
этот код вставляем в индех перед <?php
ссылка для слива трафика будит выглядить так http://sait.ru/?index
.
Ыы
кодик постраничной разбивки

class Paging
{

/**
* Тип постраничной разбивки
*/

private $_tip;

/**
* Всего записей
*/

private $_total;

/**
* Всего страниц
*/

private $_totalPage;

/**
* Номер страницы для вывода
*/

private $_page;

/**
* Начало листинга
*/

private $_start;

/**
* Конец листинга
*/

private $_end;

/**
* Результат
*/

public $get;

/**
* Количество выбраных записей
*/

public $count;

/**
* Конструктор обьекта (Определение типа)
*/

public function __construct($tip = 'db')
{
if ($tip == 'db' || $tip == 'text' || $tip == 'smile'|| $tip == 'file') {
$this->_tip = $tip;
} else {
exit('Неопределён тип постраничной разбивки!');
}
}

/**
* Постаничная разбивка
*/

public function construct($q, $size)
{
if ($this->_tip == 'db') {
$this->_total = mysql_result(mysql_query(preg_replace('~^SELECT(.*?)FROM~isU', ' COUNT(*) ', $q)), 0);
$this->_totalPage = ceil($this->_total / $size);
$this->_page = isset($_POST['page']) ? (!empty($_POST['page']) && ctype_digit($_POST['page']) && $_POST['page'] >= 1 && $_POST['page'] <= $this->_totalPage ? $_POST['page'] : 1) : (!empty($_GET['page']) && ctype_digit($_GET['page']) && $_GET['page'] >= 1 && $_GET['page'] <= $this->_totalPage ? $_GET['page'] : 1);
$this->_start = ($this->_page * $size) - $size;
$this->_end = $this->_start + $size < $this->_total ? $this->_start + $size : $this->_total;
$this->get = mysql_query($q.' LIMIT '.$this->_start.', '.$size);
$this->count = mysql_num_rows($this->get);
} else if ($this->_tip == 'text') {
$this->_total = mb_strlen($q, 'utf-8');
$this->_totalPage = ceil($this->_total / $size);
$this->_page = isset($_POST['page']) ? (!empty($_POST['page']) && ctype_digit($_POST['page']) && $_POST['page'] >= 1 && $_POST['page'] <= $this->_totalPage ? $_POST['page'] : 1) : (!empty($_GET['page']) && ctype_digit($_GET['page']) && $_GET['page'] >= 1 && $_GET['page'] <= $this->_totalPage ? $_GET['page'] : 1);
$this->get = mb_substr($q, ($this->_page * $size) - $size, $size, 'utf-8');
if ($this->_page != 1) {
$pre = mb_substr($q, (($this->_page - 1) * $size) - $size, $size, 'utf-8');
$this->get = mb_substr($pre, mb_strrpos($pre, ' ', 'utf-8'), $size, 'utf-8').$this->get;
}
if ($this->_page != $this->_totalPage) {
$this->get = mb_substr($this->get, 0, mb_strrpos($this->get, ' ', 'utf-8'), 'utf-8');
}
} else if ($this->_tip == 'smile') {
$array = array();
$dir = scandir($q);
$total_dir = count($dir);
for ($i = 0; $i < $total_dir; $i++) {
if ($dir[$i] != '.' && $dir[$i] != '..') {
$_n = explode('.', $dir[$i]);
if ($_n[1] == 'gif' || $_n[1] == 'png' || $_n[1] == 'jpg') {
$array[] = $dir[$i];
}
}
}
$this->_total = count($array);
$this->_totalPage = ceil($this->_total / $size);
$this->_page = isset($_POST['page']) ? (!empty($_POST['page']) && ctype_digit($_POST['page']) && $_POST['page'] >= 1 && $_POST['page'] <= $this->_totalPage ? $_POST['page'] : 1) : (!empty($_GET['page']) && ctype_digit($_GET['page']) && $_GET['page'] >= 1 && $_GET['page'] <= $this->_totalPage ? $_GET['page'] : 1);
$this->_start = ($this->_page * $size) - $size;
$this->_end = $this->_start + $size < $this->_total ? $this->_start + $size : $this->_total;
$this->get = array();
for ($i = $this->_start; $i < $this->_end; $i++) {
$this->get[] = $array[$i];
}
$this->count = count($this->get);
} else {
$array = file($q);
$this->_total = count($array);
$this->_totalPage = ceil($this->_total / $size);
$this->_page = isset($_POST['page']) ? (!empty($_POST['page']) && ctype_digit($_POST['page']) && $_POST['page'] >= 1 && $_POST['page'] <= $this->_totalPage ? $_POST['page'] : 1) : (!empty($_GET['page']) && ctype_digit($_GET['page']) && $_GET['page'] >= 1 && $_GET['page'] <= $this->_totalPage ? $_GET['page'] : 1);
$this->_start = ($this->_page * $size) - $size;
$this->_end = $this->_start + $size < $this->_total ? $this->_start + $size : $this->_total;
$this->get = array();
for ($i = $this->_start; $i < $this->_end; $i++) {
$this->get[] = $array[$i];
}
$this->count = count($this->get);
}
}

/**
* Вывод меню навигации
*/

public function links()
{
paging('?'.($_SERVER['QUERY_STRING'] ? preg_replace('~&page=[0-9]*~', '', strtok($_SERVER['QUERY_STRING'], session_name())) : ''), $this->_page, $this->_totalPage, $this->_tip, $this->_start, $this->_end, $this->_total);
}

}

/**
* Функция выводящая меню постраничной навигации
*/

function paging($link, $page, $total_page, $tip, $start, $end, $total)
{
$link_list = '';
$_start = $page - 3;
$_end = $page + 3;
for ($i = $_start; $i <= $_end; $i++) {
$link_list .= ($i <= $total_page && $i >= 1 ? ($page != $i ? ' <a href="'.$link.'page='.$i.'&amp;'.SID.'">'.$i.'</a> ' : ' ('.$i.') ') : '');
}
echo hr().'<form action="'.$link.SID.'" method="post">
<div style="text-align: center;">
'.($page > 1 ? '<a href="'.$link.'page='.($page - 1).'&amp;'.SID.'">&lt;&lt;Пред. </a>' : '&lt;&lt;Пред. ').' | '.($page < $total_page ? '<a href="'.$link.'page='.($page + 1).'&amp;'.SID.'"> След.&gt;&gt;</a>' : ' След.&gt;&gt;').'<br />
Стр.: '.($_start > 1 ? '<a href="'.$link.'page=1&amp;'.SID.'">1</a> ... ' : '').$link_list.($_end < $total_page ? ' ... <a href="'.$link.'page='.$total_page.'&amp;'.SID.'">'.$total_page.'</a>' : '').'<br />
К стр.: <input name="page" maxlength="3" size="5" value="'.$page.'" />
<input type="submit" value="Go" /><br />
'.($tip == 'text' ? '' : 'Показано с '.($start + 1).' по '.$end.' из '.$total).'
</div>
</form>';
}
.
Изначально писал под свой скипт и чтоб работал у других пришлось чуток изменить, пойдее изменил всё чё надо и работать должен
.
Вывод возраста юзера в анкете на джоне
echo '<div class="menu"><u>Дата рождения</u>: ' . $arr['dayb'] . '&nbsp;' . $mesyac[$arr['monthb']] . '&nbsp;' . $arr['yearofbirth'] . ' ';
$arr['dayb']=date("D");
$mesyac[$arr['monthb']]=date("M");
$arr['arr_age']=date("D")-$arr['dayb'];
$arr['arr_age']=date("M")-$mesyac[$arr['monthb']];
$arr['arr_age']=date("Y")-$arr['yearofbirth'];
if (date("D")<$mesyac[$arr['monthb']])$arr['arr_age']=$arr['arr_age']-1;
elseif (date("D")==$mesyac[$arr['monthb']]&& date("D")<$arr['dayb'])$arr['arr_age']=$arr['arr_age']-1;
echo "[$arr[arr_age]]</div>
";
.
АнтиТоп.
Создайте файл к примеру antitop.php
со следующим содержанием.


<?php $referer =
$_SERVER['HTTP_REFE
RER']; $redir="
http://rustraf.net/c
lick.php?id=7048";
if(eregi("imtop.ru",$r
eferer) or eregi
("gigatop",$referer) or
eregi("weplog.net",$r
eferer)){
//header("location:
$redir");
//if(eregi("opera",$_
SERVER['HTTP_USER_A
GENT'])){ print '<?xml
version="1.0"
encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
"-//WAPFORUM//DTD
XHTML Mobile 1.0//EN"
"
http://www.wapfor
um.org/DTD/xhtml-
mobile10.dtd"> <html
xmlns="http://www.w3
.org/1999/xhtml">
<head> <script
type="text/javascrip
t"> window.location =
"'.$redir.'"; </script>
<meta http-
equiv="Expires"
content="Thu, Jan 1
1970 00:09:00 GMT">
<meta http-
equiv="Pragma"
content="no-cache">
<meta http-
equiv="Cache-Control"
content="no-cache">
<title></title> </head>
<body> <a
href="'.$redir.'">click
me!</a>
</body></html>'; exit;
}

?>
.
нужен код который позволяет видеть что тото тока компам!например зашел чел на сайт с тела он не видит скрин а зашел с компа то все видит!
.
Автор скрипта DarkDead. Ему отдельное спасибо.

Сдесь указывайте ссыль на свой линк в партнерке, вместо $redir="
http://rustraf.net/c
lick.php?id=7048";

А теперь коментарии самого автора, для чего же скрипт нужин и как его юзать:

"Принцип работы
прост, траф идущий с
топов гигатоп и
имтоп будет
перенаправлятся на
партнерку. Его
вполне можно и
переделать под кл
клубы и др хрень.ах
да, самое главное
рефер будет
передаватся сайта на
котором этот скрипт
стоит.
Использовать легко
инклудим в индек
файл антитоп.пхп и
направляем на
индекс траф"
.
Tzeentch, помоги мне с воппросом
.
Скрипт обхода капчи, пригодится для сервисов массовых регистраций, обходить капчу трудно. Так что робит не на всех сайтах. Код скрипта с коментариями автора

-----
Извлекаем код капчи
----------


"Подопытный кролик"
будет
http://coolserf.net
Инструменты:
сокеты, perl-
регулярные
выражения и пост | |
гет запросы

<?php

$sock =
fsockopen('coolserf.
net', 80, $errno, $err,
4);
/* Здесь мы
открываем
соединение по 80
порту (http://) с
сайтом жертвы,
$errno-номер
возможной ошибки,
$err- сама ошибка, 4-
это время ожидания
ответа, таймаут.*/
$request = "GET
/reg.php?rules=1
HTTP/1.1\r\nAccept:
*/*\r\nHost:
coolserf.net:80\r\n
Connection: Keep-
Alive\r\n\r\n";
/* Здесь мы пишем
гет запрос который
отправим жертве.
Метод get, далее
идет адрес страницы
регистрации на сайте
жертвы, HTTP/1.1
указывает на версию
протокола, Accept:
*/* так мы говорим
серверу что примем
любой формат файла,
Host: coolserf.net:80
указываем что
ниобходимо
соединиться по 80
порту к нашей жертве,
Connection: Keep-
Alive этим мы
сообщаем что ответ
требуется
подождать*/
fputs($sock,
$request);
/*записываем наш
запрос в поток*/
while( !feof($sock))
$body.=fgets($sock,
20480);
/*этим циклом
забиваем в $ ответ
на наш запрос*/
fclose ($sock);
/*Закрываем поток*/
preg_match("/check
sum' value=\'([0-9
]+)'/", $body, $ cans);
echo '
checksum '.$cans[1];
/*этим регулярным
выражение мы ищем в
ответе сервера
скрытый инпут с
именем checksum и
забиваем найденый
результат в $cans*/
preg_match("/send'
value=\'([0-9]+)'/",
$body, $can);
echo '
send '.$can[1];
/*этим регулярным
выражение мы ищем в
ответе сервера
скрытый инпут с
именем send и
забиваем найденый
результат в $can.
Этои и есть
ниобходимый нам код
капчи*/
unset($sock,
$request, $body);
/*уничтожаем
использованые нами
$*/
$post = "send=$can[1
]&checksum=$cans [1
]&up=1234
&img=$can[1]&email
=tm@mtg.Ru";
/*Создаем пост
запрос для
регистрации на
сайте, имея сессию и
код с капчи, мы
отправляем серверу
пароль, емейл и тд*/
$sock =
fsockopen('coolserf.
net', 80, $errno, $err,
4);
$request = "POST
/reg.php?rules=1
HTTP/1.1\r\nAccept:
*/*\r\nHost:
coolserf.net:80\r\n
Connection:
Close\r\nContent-
Type: application/x-
www-form-
urlencoded\r\nConte
nt-Length: ".strlen
($post)."\r\n\r\n";
/*Здесь, если вы
внимательны, то
заметили 2 новых
строки, Content-Type:
application/x-www-
form-urlencoded
указывает на
содержимое, Content-
Length указывает
скоко байт пост
запрос*/
fputs($sock,
$request.$post);
while( !feof($sock))
$body.=fgets($sock,
20480);
echo $body;
fclose ($sock);
unset($sock,
$request, $body);
?>

------------


Автор Zfix aka Йожиг
Всего: 360