|
|
|
| Здравствуйте. Помогите сделать авторегистратор на сайтах при помощи HTML и JAVASCRIPT.
Обьясняю принцип работы:
На HTML страничке есть куча IFRAME в каждом IFRAME есть форма которая уже заполнена данными (невидимая). JavaScript должен отправить все данные из форм (в каждом из IFRAME) при этом чтоб REFERER была ссылка куда отсылается форма.
Как только посетитель заходит на эту HTML страницу в каждом IFRAME отправляется формачка в которой заменяется REFERER место текущего сайта на сайт куда отсылается форма.
Цель: Авторегистратор без помощи PHP (CURL).
Пожалуйста помогите. Заранее спасибо. | |
|
|
|
|
|
|
|
для: pavluxa09
(14.11.2009 в 14:09)
| | Как вы предлагаете реферер подставить без отправки соответствующего заголовка? | |
|
|
|
|
|
|
|
для: mihdan
(15.11.2009 в 01:07)
| | Яж и справшиваю как через JAVASCRIPT вместе с формой отправить соответсвующий заголовок? | |
|
|
|
|
|
|
|
для: pavluxa09
(15.11.2009 в 17:55)
| | HTTP-заголовок средствами JS изменить нельзя.
Но можно сделать иначе.
1. Для браузера MSIE:
Загружается HTA-страница, в которой есть ифрейм.
В ифрейм загружается именно та страница, реферрер от которой надо получить.
По окончании загрузки в ифрейм (событие ONLOAD на теге <IFRAME>) innerHTML тега <BODY> загруженной страницы полностью переписывается - на странице создаётся нужная вам форма, которая затем сабмитится. В результате вы имеете сабмит формы с нужным вам реферрером в заголовке. Ифреймов с разными SRC (==нужные вам реферреры) на одной HTA-странице может быть множество.
2. В браузере FF можно сделать аналогичное, используя навеску Greasemonkey. | |
|
|
|
|
|
|
|
для: АЯ
(16.11.2009 в 10:52)
| | Ох мама мия. А примерчик можно? :) | |
|
|
|
|
|
|
|
для: pavluxa09
(16.11.2009 в 14:41)
| | Нет, нельзя. | |
|
|
|
|
|
|
|
для: АЯ
(16.11.2009 в 15:48)
| | Ну пожалуйста :( | |
|
|
|
|
|
|
|
для: pavluxa09
(16.11.2009 в 15:57)
| | Авторегистрация - зло.
Авторегистрация в руках неумного человека (неспособного сделать простейший код по полностью разжёванной схеме) - зло вдвойне. | |
|
|
|
|
|
|
|
для: АЯ
(16.11.2009 в 16:00)
| | Так авторегистрация нужна не для зла. А чтоб пользовать по сто раз не вводил одни и теже данные в поддоменах сайта. Ну пожалуйста :'(
Вы супер пупер мега крупер программист помогите пожалуйста... | |
|
|
|
|
|
|
|
для: pavluxa09
(16.11.2009 в 16:02)
| | У меня получилось так:
<html>
<head>
<title></title>
</head>
<body id="body">
<iframe src="http://site" width="100" height="100" onLoad="document.getElementById('body').innerHTML = '<form action=http://site method=post><input name=42 type=submit value=Äîáàâèòü></form>';"></iframe>
</body>
</html>
|
Но оно почемуто не работает, почему? | |
|
|
|
|
|
|
|
для: pavluxa09
(16.11.2009 в 16:16)
| | Не знаю, почему не работает, но самую последнюю точку с запятой нужно убрать, и onload писать маленькими буквами. | |
|
|
|
|
|
|
|
для: pavluxa09
(16.11.2009 в 16:16)
| | К объекту <body> в любом браузере можно обратиться так - document.body.
Но "некоторые" делают следующее:
1. сначала присваивают тегу <BODY> какой-то id - <body id="body">
2. потом к этому объекту обращаются так - document.getElementById ('body').
Зачем, спрашивается?
У меня есть единственное объяснение: видимо, эти "некоторые" по сути своей - журналисты/газетчики, которые получают гонорар в зависимости от количества букв в статье. Чем больше буковок, тем больше вознаграждение :-)
Может быть, я неправ?
---
Что до конкретного JS-кода, то обращаться к тегу <body> текущей страницы и изменять его innerHTML для данной задачи нет никакой надобности. Изменять innerHTML надо у тега <BODY> страницы, загруженной в <IFRAME> (о чём мною и было написано ранее, но товарищ "Будущий Авторегистратор" не понял). | |
|
|
|
|
|
|
|
для: АЯ
(16.11.2009 в 23:21)
| | Так обратиться к содержимому iframe нельзя. Даже если ему присвоить id="iframe" и командой document.getElementById('iframe').innerHTML.body.innerHTML не получиться изменить. Или я не прав? | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 09:33)
| | Для того чтобы пользователь не вводил по 100 раз в поддоменах, совсем не нужен IFRAME. А document.getElementById('iframe').innerHTML.body.innerHTML это ересь, вы хоть сами можете объяснить логику записи этой? | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 09:33)
| | Конечно, вы неправы.
К содержимому <IFRAME> обратиться вполне можно.
Разумеется, только после полного окончания загрузки содержимого в этот <IFRAME>:
<iframe name="myFrame" onload="window.frames.myFrame.document.body.innerHTML = 'код_формы'">
|
А потом - СРАЗУ ЖЕ - можно эту форму автоматически просабмитить.
Но об этом - позже.
После того, как я посмеюсь над вашим сообщением, что у вас браузер выдаёт ошибку "Access denied". | |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 10:33)
| | У меня браузер не выдаёт ошибку "Access denied". Он выдаёт ошибку: "Разрешение отклонено".
:'( Как исправить? И ещё оно ломает всё. Тоесть на странице показывается токо форма а остальные IFRAME пропали :( | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 13:55)
| | >У меня браузер не выдаёт ошибку "Access denied". Он выдаёт ошибку: "Разрешение отклонено".
А вы попробуйте "Access denied" перевести на русский - GoogleTranslate вам в помощь.
>Как исправить?
А не надо ничего исправлять.
Надо внимательно ПЕРЕчитать самое первое моё сообщение в этой ветке.
Первое предложение раздела "1. Для браузера MSIE".
И даже не всё предложение, а лишь первые два его слова.
Там всё объяснено.
Когда ПЕРЕчитаете, тогда и поймёте - почему я знал, что буду над вами смеяться.
>на странице показывается токо форма а остальные IFRAME пропали
Команды "запихивать" на страницу "остальные IFRAME" я вам не давал - вы сначала с одним-единственным IFRAME разберитесь. | |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 15:19)
| | Я тестирую на браузере Internet Explorer (MSIE).
> Загружается HTA-страница
- Да есть. Я создал файл *.hta и в нём пишу весь код.
Ну оно всё равно не работает :( Ну точнее уже работает. Я сделал так
document.getElementById(id).contentWindow.document.body.innerHTML
Но теперь новая проблемка. Как отправить автоматом эту форму. А точнее как мне достать <body onload> в этом IFRAME? | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 15:28)
| | >Я сделал так
document.getElementById(id).contentWindow.document.body.innerHTML
Маладца! "Назло бабушке отморожу уши" называется.
Ну да ладно... можно и так.
>Как отправить автоматом эту форму. А точнее как мне достать <body onload> в этом IFRAME?
"А нафига козе баян?" - в смысле, зачем "доставать" <body onload> в этом IFRAME?
Форма пропишется, т.е. загрузится - а ничего более в <body> и не будет.
Или хотите поместить там фотографию своей любимой девочки, с которой вместе ходили на один горшок в младшей группе детсада?
Сразу после прописывания формы можно её сабмитить:
<iframe name="myFrame" onload="with (window.frames.myFrame.document) {body.innerHTML = 'код_формы'; forms [0].submit ()}">
|
Только не забудьте в полях формы сразу прописать нужные значения, т.е. не просто <input name="field">, а <input name="field" value="то_что_надо"> | |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 15:57)
| | У меня не совсем так сделано.
function name()
{
document.getElementById(id).contentWindow.document.body.innerHTML = 'Форма';
document.getElementById(id).contentWindow.document.body.forms[0].submit();
}
Тоесть у мя вывод формы в функции тошо там нада ещё проверить куча всего (чтоб по сто раз не отправляло)
Но оно не хочет субмитеть. Как исправить? | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 16:03)
| | | |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 16:27)
| | Дело в том что оно отправляет форму не ту которую я добавил
document.getElementById(id).contentWindow.document.body.innerHTML = 'форма'; тут,
а ту которая уже есть в самом сайте куда указывает IFRAME | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 16:33)
| | Вы свою форму не "добавляли".
Свою форму вы записывали ВМЕСТО всего того, что было на исходной странице между тегами <body> и </body>.
Когда "добавляют", то пишут innerHTML += 'код_формы'
Я рекомендовал вам писать innerHTML = 'код_формы' (безо всякого плюса). Тогда ВСЁ и ВСЯ полностью УНИЧТОЖАЕТСЯ (включая любое количество имеющихся там форм) и на странице в <IFRAME> оказывается ТОЛЬКО ваш код_формы.
Или вы снова "по-своему" сделали, но скромно об этом умолчали? :-) | |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 16:40)
| | ну щас у меня так:
function name()
{
document.getElementById(id).contentWindow.document.body.innerHTML = 'Моя форма';
document.getElementById(id).contentWindow.document.forms[0].submit();
}
|
В результате работы оно тупо обновляет страницу. Почему?
Если убрать код document.getElementById(id).contentWindow.document.forms[0].submit(); то в флейме есть кнопочка которую я вставил и при клики на неё всё нормально. А если повсить этот код то кнопочка даже не успевает показаться и тупо обновляет страницу
Вот код с формочкой моей:
document.getElementById(id).contentWindow.document.body.innerHTML = '<form action="http://'+url+'/register.php" method="POST" name="regform">тут скрытые импуты<input name="new_user" type="submit" value="Отправить" /></form>';
|
| |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 16:43)
| | Ну... не знаю.
У меня никогда никаких проблем не было.
Ну сделайте тогда с задержкой:
function name()
{
document.getElementById(id).contentWindow.document.body.innerHTML = 'Моя форма';
setTimeout ("document.getElementById(id).contentWindow.document.forms[0].submit()", 10);
}
| Хотя это, конечно, бред.
Зачем, кстати, на кнопку сабмита в вашей форме прописывать "Отправить"?
Кто читать-то это будет при автосабмите? :-)
Да и hidden-поля можно оформлять обычными текстовыми инпутами - зачем прятать то, что и так никто никогда не увидит? | |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 16:52)
| | Ну для экономии :). А как можно отправить форму с заданным ID? | |
|
|
|
|
|
|
|
для: pavluxa09
(17.11.2009 в 16:56)
| |
document.forms['id_формы'].submit()
|
| |
|
|
|
|
|
|
|
для: АЯ
(17.11.2009 в 16:58)
| | Всё дошло. Спасибо большое!!! Ты лутший программист на свете!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! | |
|
|
|