|
|
|
| Собственно вопрос не о том как отправлять данные(это я уже прочёл в википедии), а о 2 параметрах. Исходные данные которые отправляются серверу:
POST /mailbox/send-message.html HTTP/1.1
Host: mail.example.com
Referer: http://mailbox/send-message.html
User-Agent: BrowserForDummies/4.67b
Content-Type: multipart/form-data; boundary="Asrf456BGe4h"
Content-Length:
Connection: keep-alive
Keep-Alive: 300
(пустая строка)
(пустая преамбула)
--Asrf456BGe4h
Content-Disposition: form-data; name="DestAddress"
(пустая строка)
brutal-vasya@example.com
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageTitle"
(пустая строка)
Я негодую
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageText"
(пустая строка)
Привет, Василий! Твой ручной лев, которого ты оставил
у меня на прошлой неделе, разодрал весь мой диван.
Пожалуйста забери его скорее!
Во вложении две фотки с последствиями.
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile1"; filename="horror-photo-1.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое первой фотографии)
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile2"; filename="horror-photo-2.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое второй фотографии)
--Asrf456BGe4h--
(отсутствующий эпилог)
|
Собственно вопрос. Что писать в Content-Length? Я понимаю, что надо писать длину данных, а откуда начинать считать? Сразу после заголовка? Или после всех заголовков? И второй вопрос. Важен ли параметр boudary, или можно использовать всегда тот, который сейчас указан? В общем жду пояснений))) | |
|
|
|
|
|
|
|
для: winflip
(04.11.2009 в 11:01)
| | И что такое пустая преамбула и отсутствующий эпилог? | |
|
|
|
|
|
|
|
для: winflip
(04.11.2009 в 11:01)
| | Длина - весь остаток после пустой строки - От преамбулы и по эпилог.
boundary не должен встречаться в разделенных фрагментах частей тела - других ограничений нет. | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2009 в 11:13)
| | Спасибо за подробное разъяснение | |
|
|
|
|
|
|
|
для: winflip
(04.11.2009 в 13:34)
| | Если можете, то скажите почему может зависать скрипт в этом месте программы:
my $data = "\n\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"name\"\n\n";
$data .= "$name\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"login\"\n\n";
$data .= "$username\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"email\"\n\n";
$data .= "$e_mail\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"password\"\n\n";
$data .= "$password\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"password2\"\n\n";
$data .= "$password\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"wmz\"\n\n";
$data .= "$wmz\n";
$data .= "--$boundary\n";
$data .= "Content-Disposition: form-data; name=\"defaultInterface\"\n\n";
$data .= "$webmaster\n";
$data .= "--$boundary--\n\n";
print $socket "POST /userAction?action=registerUser HTTP/1.0\n".
"Host: www.example.ru\n".
"Referer: http://www.liex.ru/Registration.jsp\n".
"User-Agent: liexAPI/0.9\n".
"Cookie: Referrer=".$cookies{'Referral'}."; JSESSIONID=".$cookies{'JSESSIONID'}.";\n".
"Content-Type: multipart/form-data; boundary=\"".$boundary."\"\n".
"Content-Length: ".length($data)."\n".
"Connection: keep-alive\n".
"Keep-Alive: 300\n".$data;
while(my $get = <$socket>){
$page .= $get;
}
|
$socket - это открытый сокет, ну а остальные переменные объявлены и имеют правильное значение. Язык perl, но думаю это не очень значимо. | |
|
|
|
|
|
|
|
для: winflip
(05.11.2009 в 13:56)
| | Зависает именно в нижнем цикле, вод все что скрипт посылает серверу:
POST /userAction?action=registerUser HTTP/1.0
Host: www.examplex.ru
User-Agent: Mozilla
Cookie: Referrer=14834; JSESSIONID=h62qj2hea5ig;
Content-Type: multipart/form-data; boundary="Asrf456BGe4h"
Content-Length: 522
Connection: keep-alive
Keep-Alive: 300
--Asrf456BGe4h
Content-Disposition: form-data; name="name"
Gena
--Asrf456BGe4h
Content-Disposition: form-data; name="login"
Pahan
--Asrf456BGe4h
Content-Disposition: form-data; name="email"
winflip@yandex.ru
--Asrf456BGe4h
Content-Disposition: form-data; name="password"
123456543
--Asrf456BGe4h
Content-Disposition: form-data; name="password2"
123456543
--Asrf456BGe4h
Content-Disposition: form-data; name="wmz"
z123456789012
--Asrf456BGe4h
Content-Disposition: form-data; name="defaultInterface"
1
--Asrf456BGe4h--
|
| |
|
|
|
|
|
|
|
для: winflip
(05.11.2009 в 14:06)
| | Разобрался | |
|
|
|
|
|
|
|
для: winflip
(05.11.2009 в 14:06)
| | вообще-то я сказал, длина - после пустой строки , а не вместе с ней. | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2009 в 20:41)
| | Да ошибся))) Ещё вопрос небольшой. Когда я отправляю е-mail я заменяю @ на %40. Ведь данные надо обрабатывать urlencode(), но в perl, такого нету. Не стал искать модуль. В общем я отпраляю что-то вроде . Но обработчик на стороне сервера пишет, что не корректный e-mail. Пробовал просто winflip@yandex.ru, тоже ничего. | |
|
|
|
|
|
|
|
для: winflip
(05.11.2009 в 21:14)
| | > Ведь данные надо обрабатывать urlencode(),
кто Вам сказал такое? | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2009 в 22:04)
| | Google)) Точнее не он сам а то что он нашёл. Но я пробовал и просто winflip@yandex.ru писать но тоже ноль. Ошибки в принимающем скрипте нету(это 100% точно). Если регистрироваться через форму то всё нормально. | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2009 в 22:04)
| | Тема всё ещё актуальна | |
|
|
|
|
 38.3 Кб |
|
|
для: Trianon
(05.11.2009 в 22:04)
| | В общем ситуация стала ещё лучше. Я отправил эти же данные на локальную машину, и вывел данные print_r($_POST). Вот результат:
( [name] => Gena [login] => test [email] => winflip@yandex.ru [password] => 123456543 [password2] => 123456543 [wmz] => Z123456789012 [defaultInterface] => 1 [term] => yes )
|
Как видно e-mail пришёл в целости и сохранности. Вот форма с того сайта(может я не так что-то делаю):
<form name="form1" enctype="multipart/form-data" action="userAction?action=registerUser" method="post" onsubmit="return validateForm(this);">
<tr>
<td colspan="2"><img src="/Images/new_images/i/sect_registration.gif" alt="Регистрация" ></td>
</tr>
<tr>
<td><p class="textSmall">Отображаемое имя</p></td>
<td><label>
<input name="name" type="text" maxlength="200" alt=">0" class="inputArea">
</label> </td>
</tr>
<tr>
<td><p class="textSmall">Логин</p></td>
<td width="100%"><label>
<input maxLength="200" name="login" type="text" alt=">0" class="inputArea">
</label> </td>
</tr>
<tr>
<td nowrap><p class="textSmall">Адрес e-mail</p></td>
<td><label>
<input maxLength="200" name="email" type="text" alt=">0, email" class="inputArea">
</label> </td>
</tr>
<tr>
<td><p class="textSmall">Пароль<br/>(не менее 6 символов)</p></td>
<td><input maxLength="200" name="password" type="password" value="" alt=">5, pwd1" class="inputArea"></td>
</tr>
<tr>
<td nowrap><p class="textSmall">Подтверждение пароля</p></td>
<td><input maxLength="200" name="password2" type="password" alt=">5, pwd2" class="inputArea"></td>
</tr>
<tr>
<td nowrap><p class="textSmall">Кошелек WMZ</p></td>
<td><input name="wmz" type="text" maxlength="13" alt=">12, <13" class="inputArea"></td>
</tr>
<tr>
<td colspan="2"><span class="hints">В целях безопасности для изменения кошелька установлена задержка 1 неделя (не применяется для изменений в течение 2 суток после регистрации). Во избежание недоразумений рекомендуем сразу указывать кошелек при регистрации.</span></td>
</tr>
<tr>
<td nowrap><p class="textSmall">Интерфейс по умолчанию </p></td>
<td class="textSmall"><label>
<input id="i1" class="us_form_text_radio" name="defaultInterface" type="radio" value="1"/><label for="i1"> Вебмастер</label>
<input id="i2" class="us_form_text_radio" name="defaultInterface" type="radio" value="2"/><label for="i2"> Рекламодатель</label></label> </td>
</tr>
<tr>
<td colspan="2">
<p class="textSmall">
<input type="checkbox" id="term_id" name="term" alt="mustCheck">
<label for="term_id" class="textSmall">Я ознакомился и принимаю</label><a target="_blank" href="/Term.jsp"> пользовательское соглашение</a>
</p>
</td>
</tr>
<tr>
<td> </td>
<td><label>
<input type="image" name="Submit2" src="/Images/new_images/i/cn_registration.gif">
</label></td>
</tr>
</form>
|
Функция отсюда же validateForm()
function validateForm(form)
{
if (form.wmz.value == '') form.wmz.disabled = true
var ret = validate(form)
if (form.wmz.value != ''){
if (!form.wmz.value.match("^Z\\d{12}$")) {
disValid(form.wmz, "Указан неверный номер WMZ-кошелька! Образец: Z123456789012. Вы можете оставить это поле пустым и заполнить его позже.")
alert("Указан неверный номер WMZ-кошелька! Образец: Z123456789012. Вы можете оставить это поле пустым и заполнить его позже.")
ret = false
}
}
if(!ret) form.wmz.disabled = false
return ret
|
Копировал щас этот скрипт и заметил, что там ещё огромные .js подключается. В аттаче.Прошу. Посмотрите пожалуйста, я уже многое перепробовал | |
|
|
|
|
|
|
|
для: winflip
(07.11.2009 в 12:03)
| | Вставил скрипт и форму на локальную машину, получил ещё 2 переменные, 2Submit_x(y) по моему-так, но всё равно не работает. E-mail не изменяется от работы js скрипта, посмотрите пожалуйста js может что-нибудь увидмте, просто я в js ноль | |
|
|
|