Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: curl и multipart/form-data
 
 автор: skyfay   (28.11.2009 в 13:32)   письмо автору
 
 

Модераторы, пожалуйста поправьте тему например на curl и multipart/form-data, что то не получилось создать с первого раза, а после обновления записалась 1.

Здравствуйте, прошу помощи у знающих людей...
Поиск по форуму не дал вразумительных результатов.

итак,
не знаю почему но у интересующего меня сайта, форма авторизации передается через multipart/form-data, а в сети на эту тему очень мало информации. в основном только примеры для отправки файлов, а мне нужно просто авторизоваться и пройтись по сайту загрузив нужную страницу.

форма следующая (можно зайти как через обычный HTTP, так и через HTTPS)


<div style="position: absolute; margin-left: -165px; width:330; height: 200px; left: 50%; top:20%; text-align:center;">
<script language="JavaScript">
function check(no_check) 
{
    var is_disable;
}
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td ><b class="rtop">
<b class="r1" style="background:#AAA"></b><b class="r2" style="background:#AAA;border-left:2px solid #AAA; border-right:2px solid #AAA">
</b><b class="r3" style="background:#AAA;border-left:1px solid #AAA; border-right:1px solid #AAA"></b><b class="r4" style="background:#AAA;border-left:1px solid #AAA; border-right:1px solid #AAA">
</b></b></td></tr><tr><td   align="center" style="background:#AAA; border-left:1px solid #AAA;border-right:1px solid #AAA; padding: 0 10px 5px 10px;color:#FFF; ">
<b>Личный кабинет</b></td></tr><tr><td  valign="top" style="background:#F0F0F7; border-left:1px solid #AAA;border-right:1px solid #AAA; padding: 1px 5px 1px 5px; color:#000;">
<table valign="top" class="form_table" height="100%" width="100%" border="0"><tr><td>

<form name="login" id="login" action="/office.php" method="post" enctype="multipart/form-data">
<table class="form_table" width="100%" border="0"><tr><td align="right" width="30%">
<b>Логин</td><td align="left">&nbsp;&nbsp;<input   size="32" maxlength="32"  name="login" id="_login" type="text" value="">
<br></td></tr><tr><td align="right">
<b>Пароль</td><td align="left">&nbsp;&nbsp;<input   size="32" maxlength="32"  name="password" id="_password" type="password" value="">
<br></td></tr><tr><td align="right">
</td><td align="left">&nbsp;&nbsp;<input  class="checkbox"  name="remember" id="_remember" type="checkbox" value="true" onClick="check(false)" >
<label style="cursor:pointer;" for="_remember">&nbsp;запомнить логин&nbsp;</label><br></td></tr></td></tr></table>
<div align="center"><button type="submit"  class="lbutton" style="" onClick="document.login._action_.value = 'authorization';" >
    Вход</button>
</div></td></tr></table>
<input type="hidden" name="_onchange_">
<input type="hidden" name="_action_">
<input type="hidden" name="_multirow_">
<input type="hidden" name="_this_form_name_" value="login">
</form></td></tr><tr><td ><b class="rbottom">


пробовал много разных вариантов, ничего не получается, то ошибка 401, то просто обратно грузиться форма авторизации без каких либо ошибок curl.

вот например,

$postData = array();
// POST-ы беру либо со своей формы либо с ихней формы.
$postData[ 'login' ] = $_POST['login'];
$postData[ 'password' ] = $_POST['password']; 
$postData[ 'remember' ] = $_POST['remember']; 
$postData[ '_onchange_' ] = $_POST['_onchange_']; 
$postData[ '_action_' ] = $_POST['_action_']; 
$postData[ '_multirow_' ] = $_POST['_multirow_']; 
$postData[ '_this_form_name_' ] = $_POST['_this_form_name_']; 
$url = "http://my.site.ru/office.php";
$refer = "http://my.site.ru/office.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) WebMoney Advisor)");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
$root_directory = dirname(__FILE__);
$cookie_file = $root_directory."/curl.cookie";
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$res = curl_exec($ch);

echo $res;
echo "<br>";
//print_r($postData);
echo "<br>";
print_r(curl_getinfo($ch));  
echo "\n\ncURL error number:" .curl_errno($ch);  
echo "\n\ncURL error:" . curl_error($ch);  
curl_close($ch);
exit;


ответ вроде этого,

Array ( [url] => http://my.site.ru/office.php [content_type] => text/html [http_code] => 200 [header_size] => 206 [request_size] => 372 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.3429 [namelookup_time] => 0.01808 [connect_time] => 0.084186 [pretransfer_time] => 0.084211 [size_upload] => 0 [size_download] => 3075 [speed_download] => 8967 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 0.27257 [redirect_time] => 0 ) cURL error number:0 cURL error:

пожалуйста, помогите составить правильно запрос.

в куках после запроса curl.cookie ничего не пишется.

при просмотре через лису формы, какие данные и как нужно отсылать, пример запроса,

(Request-Line) POST /office.php HTTP/1.1
Host my.site.ru
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) WebMoney Advisor
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language ru,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Referer http://my.site.ru/office.php
Cookie __utma=204350985.253457457.1259051669.1259051669.1259054017.2; __utmz=204350985.1259051669.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=204350985; PHPSESSID=2f6655b1316cfdfeedda7271b5385e9e
Content-Type multipart/form-data; boundary=---------------------------175532470527091
Content-Length 788

-----------------------------175532470527091
Content-Disposition: form-data; name="login"

test
-----------------------------175532470527091
Content-Disposition: form-data; name="password"

test
-----------------------------175532470527091
Content-Disposition: form-data; name="remember"

true
-----------------------------175532470527091
Content-Disposition: form-data; name="_onchange_"


-----------------------------175532470527091
Content-Disposition: form-data; name="_action_"

authorization
-----------------------------175532470527091
Content-Disposition: form-data; name="_multirow_"


-----------------------------175532470527091
Content-Disposition: form-data; name="_this_form_name_"

login
-----------------------------175532470527091--

пожалуйста помогите...

  Ответить  
 
 автор: Slo_Nik   (28.11.2009 в 15:59)   письмо автору
 
   для: skyfay   (28.11.2009 в 13:32)
 

ошибка 401 говорит о том, что не авторизирован.
а как Вы сравниваете логин/пароль поданый пользователем с теми, что указаны при регистрации?

  Ответить  
 
 автор: Fractured#   (29.11.2009 в 00:36)   письмо автору
 
   для: skyfay   (28.11.2009 в 13:32)
 

Так если файл нигде там не отправляется, то забей и отправляй через Content-type "application/x-www-form-urlencoded", т.е. как обычно. Вряд ли обработчик это проверяет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования