Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

PHP, SQL, SSI-Дневник ламера, превращающегося в ГУРУ :-) Создание системы рефералов в магазине.


Информационный Канал Subscribe.Ru

Выпуск номер 6
Рассылка: Дневник ламера.
     
 

Добрый день :-) Сегодня у меня хорошее настроение. Набил морду нескольким придуркам и дописал скрипт идентификации рефералов, для своего интернет-магазина. Уже почти-почти закончил. Всё мерзкая работа мешает.
Сегодня этот скрипт и рассмотрим. Вам думаю может пригодиться в будущем.
Исходная задача: Есть три уровня рефералов. Тоесть при регистрации в системе, мы запоминаем, регистрировался-ли этот пользователь по какой-то ещё реферальной ссылке, или сам на нас вышел. Через поисковик допустим.
При заполнении формы заказа и отправке данных, мы должны проверять, от реферала-ли нашего пришёл заказчик. И если да, то проверяем также далее так скажем Уровни вложенности. Тоесть в базе заказов предусмотрено три позиции. Первый реферал, реферал этого Первого реферала и реферал реферала реферала :-))) Всё карочи сложно кажется, но на самом деле просто.
Так вот, теперь сам скрипт:


<?
// ниже кусок Хедера, где у меня определение появившихся по реферальной ссылке

session_name("sid"); //определяем имя сессии, чтоб если что, в строке слишком длинное стандартное имя не висело

session_start(); // Собсно стартуем сессию. Об этом рассказывал в прошлом выпуске

if(isset($mod)) // Это проверка. Тоесть если в адресе к нам приходит переменная, (адрес в таком случае должен выглядеть так: http://test3.ru?mod=45 mod - имя переменной, передаваемой методом GET в скрипт, 45 - номер реферала в нашей базе данных) то мы её определяем и начинаем обрабатывать.

{settype($mod, "integer"); $_SESSION["referal"]=$mod; // Определяем её тип как цифровой (integer) чтобы всякие урроды не пихали бяку и заносим значение в переменную сессии

setcookie("referal", $mod, time()+999999); // Устанавливаем на компутер кукис с именем "referal", которое в дальнейшем в скрипте у нас будет использоваться как $referal значение кукиса $mod которое есть номер реферала и время издыхания кукиса: time()+999999 тоесть кукис издохнет Очень не скоро :-)

include"files/sql.php"; // Цепляемся к базе данных на всякий случай

$query='select * from referal where ip="'.$REMOTE_ADDR.'";'; // Проверяем в базе данных таблицу рефералов по IP адресу. Переменная: $REMOTE_ADDR - это стандартная, в которой находится IP нашего посетителя

$result=mysql_query($query, $db); // Запрос к базе
if(mysql_num_rows($result)<1){ // Если количество строк ноль, тоесть с этого IP к нам ещё не заходили, то идём дальше и...

$query='insert into referal values("'.$REMOTE_ADDR.'","'.$mod.'","");'; mysql_query($query, $db);} //Добавляем в таблицу рефералов посетителя

else{$query='update referal set iduserparent ="'.$mod.'" where ip="'.$REMOTE_ADDR.'";'; // Если же с этого адреса уже заходил реферал, то мы просто обновляем данные в таблице
mysql_query($query, $db);}
}

// Теперь дальше... Собственно кусок самого скрипта приёма заказов

if(isset($_SESSION['referal']) || isset($referal)) // Если переменная сессии определена или у заказчика стоит кукис с номером реферала, то начинаем выполнение условия обработки
љ {
if(isset($_SESSION['referal'])){$ref1=$_SESSION['referal'];} else{$ref1=$referal;} // Если номер реферала в переменной сессии, то $ref1 - реферал первого уровня приравниваем к нему, если стоял кукис с номером реферала, то к нему

$query1='select * from users where id="'.$ref1.'";'; // Выбираем из таблицы рефералов его персональные даные. Вдруг он сам является чьим-то рефералом ?

љ

$res1=mysql_query($query1,$db);

if(mysql_num_rows($res1)>0){$rdata=mysql_fetch_array($res1); $ref2=$rdata['referal'];} else {$ref1=0; $ref2=0; $ref3=0;} // Если таковой присутствует, то мы в тупую берём значение его поля 'referal' и пихаем в переменную $ref2 если же не присутствует, то переназначаем переменную $ref1 в ноль, $ref2 тоже в ноль и....
}
else
{ echo 'Чёто идёт'; // Это отладочня метка. Забыл убрать :-)

$query1='select * from referal where ip="'.$REMOTE_ADDR.'";'; $res1=mysql_query($query1,$db); // ...и проверяем базу IP адресов. Может там нам повезёт и мы найдём того, кому сказать спасибо за данного заказчика :-)

if(mysql_num_rows($res1)>0) // Если в базе такой IP есть, то...
{ $dataref=mysql_fetch_array($res1); $ref1=$dataref['iduserparent']; // ...то мы определяем переменную $ref1 на ID реферала в базе

$query1='select * from users where id="'.$ref1.'";'; $res1=mysql_query($query1,$db); // и вытаскиваем из базы его данные

if(mysql_num_rows($res1)>0){ $dataref=mysql_fetch_array($res1); $ref2=$dataref['referal'];} // Если эти данные там есть, то определяем реферала второго уровня в переменой $ref2
}else{ $ref1=0; $ref2=0; $ref3=0; } // А если нет, то рога и денег никто не получит за привлечение заказчика
}

if($ref2>0) // Если же всётаки реферал второго уровня есть, то...
{
$query2='select * from users where id="'.$ref2.'";'; $res2=mysql_query($query2,$db); // То просто проверяем его данные, вдруг он тоже чей-то реферал

if(mysql_num_rows($res2)>0){$dataref=mysql_fetch_array($res2); // Если таковой там есть, то...
if($dataref['referal']>0){$ref3=$dataref['referal'];}else{$ref3=0;} } // ...то мы забиваем в переменную $ref3 это ID номер в базе. Проверять наличие там такового не будем. Уже в лом :-)
}

?>
Вот собсно на сегодня всё. До следующего выпуска товарищи :-) В нём напишу про работу с мылом. Как его рассылать, потому как сейчас озадачился написанием спам-робота. Чтобы потрошил сайты, выгребая почтовые адреса и потом рассылал спам. Плохой я ;-)


Досвиданья.

 
     
Евгений Евсеев - IrkutskProject(Собака)yandex.ru

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.php1sql1ssi
Отписаться

В избранное