Проблема с запросом НTTPSend
От: surovnev  
Дата: 17.05.12 22:11
Оценка:
Новичок в этой теме, так что сильно не пинайте. Не получается сделать корректный запрос, перечитал кучу информации, ничего не помогает. На сайт картинку загружает, но ответ сервера не одна ссылка а все ссылки кторые когда либо загружались через программу. Такое чувство как будто сессия не закрывается. Вот функция:

function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
const
CRLF = #$0D + #$0A;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '1231654654';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: image/jpeg' + CRLF + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.MimeType := 'multipart/form-data, boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
ResultData.LoadFromStream(HTTP.Docu ment);
finally
HTTP.Free;
end;

Вот так вызываю её:

begin
st := TFileStream.Create('2.jpg', fmOpenRead or fmShareDenyWrite);
try
ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines));
ShellExecute(0, 'open', 'http://рiсuрiс.nеt/add_photo.php', nil, nil, SW_SHOW);
finally
st.Free;
end;

т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл. Но если делать через эту функцию ответ приходит с кучей ссылок на картинки которые я раньше загружал.
Даже если просто сделать этот запрос HTTP.HTTPMethod('POST', URL);
то ответ приходит со всеми ссылками. Да даже если просто открыть браузером страницу http://рiсuрiс.nеt/add_photo.php то она отразить все добавленные картинки через программу.
delphi http httpsend
Re: Проблема с запросом НTTPSend
От: okman Беларусь https://searchinform.ru/
Дата: 18.05.12 05:13
Оценка:
Здравствуйте, surovnev.

Не увидел в приведенном коде обработки ответа сервера.
То, что вызывает ShellExecute — это уже новый запрос, а Вам нужно получить то,
что вернул сервер в ответ на первый HTTP POST.
Re[2]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 18.05.12 05:18
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev.


O>Не увидел в приведенном коде обработки ответа сервера.

O>То, что вызывает ShellExecute — это уже новый запрос, а Вам нужно получить то,
O>что вернул сервер в ответ на первый HTTP POST.

Вот функция:
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
const
CRLF = #$0D + #$0A;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '1231654654';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: image/jpeg' + CRLF + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.MimeType := 'multipart/form-data, boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
ResultData.LoadFromStream(HTTP.Docu ment);
finally
HTTP.Free;
end;
Вызываю её нажатием на кнопку
st := TFileStream.Create('2.jpg', fmOpenRead or fmShareDenyWrite);
try
ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines));
finally
st.Free;

т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines))
и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.
Re[3]: Проблема с запросом НTTPSend
От: okman Беларусь https://searchinform.ru/
Дата: 18.05.12 05:27
Оценка:
Здравствуйте, surovnev, Вы писали:

S>т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines))

S>и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.

А Вы уверены, что составляете POST-запрос данного типа корректно ?

S>т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл.


Вот и направление поисков — ставите какой-нибудь сниффер (например, Wireshark) и смотрите,
что шлет браузер, и что шлет Ваш код, ищите отличия. Да, кстати, код ответа сервера тоже следует
проверять — при успешном POST-запросе это должен быть код из группы 200. Все остальное — ошибки.
Re[4]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 18.05.12 05:36
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev, Вы писали:


S>>т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines))

S>>и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.

O>А Вы уверены, что составляете POST-запрос данного типа корректно ?


S>>т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл.


O>Вот и направление поисков — ставите какой-нибудь сниффер (например, Wireshark) и смотрите,

O>что шлет браузер, и что шлет Ваш код, ищите отличия. Да, кстати, код ответа сервера тоже следует
O>проверять — при успешном POST-запросе это должен быть код из группы 200. Все остальное — ошибки.


Сейчас проверил код ответа (showmessage(inttostr(http.Resultcode)) выдаёт 200
Re[4]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 18.05.12 06:03
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev, Вы писали:


S>>т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines))

S>>и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.

O>А Вы уверены, что составляете POST-запрос данного типа корректно ?


S>>т.е. если через браузер добавить картинку, то ответ будет с одной ссылкой на загруженный файл.


O>Вот и направление поисков — ставите какой-нибудь сниффер (например, Wireshark) и смотрите,

O>что шлет браузер, и что шлет Ваш код, ищите отличия. Да, кстати, код ответа сервера тоже следует
O>проверять — при успешном POST-запросе это должен быть код из группы 200. Все остальное — ошибки.

Через Wireshark не могу проверить (чёт ничего в ней не понял)
я делал через FireFox расширением LiveHTTPHeaders вот что он выдаёт при добавлении изображения:

http://picupic.net/add_photo.php

POST /add_photo.php HTTP/1.1
Host: picupic.net
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://picupic.net/
Cookie: PHPSESSID=o52cdsd2g07hkcpo308b0snru5
Content-Type: multipart/form-data; boundary=---------------------------265001916915724
Content-Length: 11210
-----------------------------265001916915724
Content-Disposition: form-data; name="size"

80
-----------------------------265001916915724
Content-Disposition: form-data; name="UploadFile"; filename="asia.jpg"
Content-Type: image/jpeg

яШяа
HTTP/1.1 200 OK
Server: nginx/0.6.36
Date: Fri, 18 May 2012 05:54:02 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 1764
----------------------------------------------------------
http://picupic.net/js/scriptaculous.js?load=effects,builder

GET /js/scriptaculous.js?load=effects,builder HTTP/1.1
Host: picupic.net
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: */*
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://picupic.net/add_photo.php
Cookie: PHPSESSID=o52cdsd2g07hkcpo308b0snru5
If-Modified-Since: Thu, 23 Dec 2010 11:55:08 GMT

HTTP/1.1 304 Not Modified
Server: nginx/0.6.36
Date: Fri, 18 May 2012 05:54:03 GMT
Last-Modified: Thu, 23 Dec 2010 11:55:08 GMT
Connection: keep-alive
----------------------------------------------------------
http://picupic.net/images/2012-05-18/409_med.jpg

GET /images/2012-05-18/409_med.jpg HTTP/1.1
Host: picupic.net
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://picupic.net/add_photo.php
Cookie: PHPSESSID=o52cdsd2g07hkcpo308b0snru5

HTTP/1.1 200 OK
Server: nginx/0.6.36
Date: Fri, 18 May 2012 05:54:03 GMT
Content-Type: image/jpeg
Content-Length: 7910
Last-Modified: Fri, 18 May 2012 05:54:02 GMT
Connection: keep-alive
Accept-Ranges: bytes
----------------------------------------------------------
http://picupic.net/images/loading.gif

GET /images/loading.gif HTTP/1.1
Host: picupic.net
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://picupic.net/add_photo.php
Cookie: PHPSESSID=o52cdsd2g07hkcpo308b0snru5

HTTP/1.1 404 Not Found
Server: nginx/0.6.36
Date: Fri, 18 May 2012 05:54:03 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Content-Length: 292
----------------------------------------------------------
http://s.sputnik.mail.ru/sid.818?xml=2

POST /sid.818?xml=2 HTTP/1.1
Host: s.sputnik.mail.ru
User-Agent: MailRuSputnik
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/octet-stream; charset=UTF-8
Content-Length: 129
Expect: 100-continue
Cookie: mrcu=98E64F700D5F09A853F7C78A45D9; VID=2lt_9u3_kRm-; sputnikff=2.5.2.66; mrcu=98E64F700D5F09A853F7C78A45D9; usr=f2be2fa53687a2a621cd1af6b6ec3a97f2f2f2; usr2=ver=2.5.2.66&ref=&sd=1324944107000
Pragma: no-cache
Cache-Control: no-cache
http://picupic.net/add_photo.php
T:1337324154 R:http://picupic.net/ U:http://picupic.net/add_photo.php TI: UW:667997 C:200 LT:384
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 18 May 2012 05:57:24 GMT
Content-Type: text/xml; charset=windows-1251
Transfer-Encoding: chunked
Connection: close
----------------------------------------------------------
Re[5]: Проблема с запросом НTTPSend
От: okman Беларусь https://searchinform.ru/
Дата: 18.05.12 08:27
Оценка:
Здравствуйте, surovnev, Вы писали:

S>Через Wireshark не могу проверить (чёт ничего в ней не понял)

S>я делал через FireFox расширением LiveHTTPHeaders вот что он выдаёт при добавлении изображения:
S>...

Параметры загрузки изображений на данный хостинг устанавливаются отдельными HTTP-запросами,
которые выполняются до главного POST-а. Попробуйте поменять размер превьюшек, либо попереключайте
checkbox, и посмотрите, что в этот момент уходит в сеть. Сессия там контролируется через Cookie.
А ответ сервера приходит в виде HTML, его еще нужно распарсить, чтобы вытащить ссылки на картинки.
Re[6]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 20.05.12 05:22
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev, Вы писали:


S>>Через Wireshark не могу проверить (чёт ничего в ней не понял)

S>>я делал через FireFox расширением LiveHTTPHeaders вот что он выдаёт при добавлении изображения:
S>>...

O>Параметры загрузки изображений на данный хостинг устанавливаются отдельными HTTP-запросами,

O>которые выполняются до главного POST-а. Попробуйте поменять размер превьюшек, либо попереключайте
O>checkbox, и посмотрите, что в этот момент уходит в сеть. Сессия там контролируется через Cookie.
O>А ответ сервера приходит в виде HTML, его еще нужно распарсить, чтобы вытащить ссылки на картинки.

Не могли бы вы мне а помочь составить правильный запрос? Всё перепробовал так и не получилось.
У меня есть страница add_photo.php вот её код:
<?
require_once("blocks/bd.php");
require_once("blocks/functions.php");

$date=date("Y-m-d");
if (isset($_FILES['UploadFile'])) {
if (($_FILES['UploadFile'] ['type'] != "image/jpeg") && ($_FILES['UploadFile'] ['type'] != "image/png") && ($_FILES['UploadFile'] ['type'] != "image/png") && ($_FILES['UploadFile'] ['type'] != "image/gif")) {
$error="Изображение должно быть формата jpg, jpeg, gif или png";
} else {
$time=time();
$time2=time()-60*60*24*30;
$result=mysql_query("SELECT * FROM photos WHERE time<'$time2'",$db);
while ($myrow=mysql_fetch_array($result)) {
@unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['id']."_med.jpg");
@unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['id']."_mini.jpg");
@unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['id']."_norm.jpg");
if ($myrow['mas']!='') {
$result2=mysql_query("SELECT * FROM photos WHERE mas='{$myrow['mas']}'",$db);
if (mysql_num_rows($result2)==1) @unlink($_SERVER['DOCUMENT_ROOT']."/images/".$myrow['date']."/".$myrow['mas']."_mas.jpg");
}
}
$result=mysql_query("DELETE FROM photos WHERE time<'$time2'",$db);
@mkdir($_SERVER['DOCUMENT_ROOT']."/images/".$date);
@chmod($_SERVER['DOCUMENT_ROOT']."/images/".$date,0777);
$name=$_FILES['UploadFile'] ['name'];
$i=strlen($name)-1;
while ($name[$i]!=".") $i--;
$ext=substr($name,$i+1);

$result=mysql_query("INSERT INTO photos (date, time, user_id, ip) VALUES ('$date', '$time', '{$_SESSION['user']}', '{$_SESSION['ip']}')",$db);
$result=mysql_query("SELECT LAST_INSERT_ID() FROM photos",$db);
$myrow=mysql_fetch_array($result);
$id=$myrow[0];
$name=$myrow[0].substr($name,$i);
$name2=$myrow[0]."_mini.jpg";
$name3=$myrow[0]."_norm.jpg";
$name4=$myrow[0]."_med.jpg";
$targetPath = $_SERVER['DOCUMENT_ROOT']."/images/".$date.'/';
move_uploaded_file ($_FILES['UploadFile'] ['tmp_name'], $targetPath.$name2);
thumb($targetPath.$name2, $targetPath.$name3, 1000);
thumb($targetPath.$name2, $targetPath.$name4, 400);
if (($_POST['size']==80) || ($_POST['size']==100) || ($_POST['size']==120) || ($_POST['size']==150)) {
thumb2($targetPath.$name2, $targetPath.$name2,$_POST['size'],0, $_POST['size'], $_POST['size']);
} else {
thumb($targetPath.$name2, $targetPath.$name2, substr($_POST['size'],1));
}
}
}

if ($_SESSION['toone']==1) {
$result=mysql_query("SELECT * FROM photos WHERE user_id='{$_SESSION['user']}'",$db);
$myrow=mysql_fetch_array($result);
$t=getimagesize($_SERVER['DOCUMENT_ROOT'].'/images/'.$myrow['date'].'/'.$myrow['id'].'_mini.jpg');
$x=$t[0];
$num=mysql_num_rows($result);
if ($num<4) {
$kolx=$num;
$koly=1;
} else {
$kolx=4;
$koly=$num/$kolx-floor($num/$kolx);
if ($koly==0) $koly=$num/$kolx;
else $koly=floor($num/$kolx)+1;

}
$mas=$myrow['id'];
mysql_query("UPDATE photos SET mas='$mas' WHERE id='{$myrow['id']}'",$db);
$thumb=ImageCreateTrueColor($x*$kolx,$x*$koly);
if ($_SESSION['color']!=1)
imagefill($thumb, 0, 0, 0xFFFFFF);
$img=imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/images/'.$myrow['date'].'/'.$myrow['id'].'_mini.jpg');
$i=0; $j=0;
imagecopyresampled($thumb,$img,$i*$x,$j*x,0,0,$x,$x,$x,$x);
$i=1; $j=0;
while ($myrow=mysql_fetch_array($result)) {
$img=imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/images/'.$myrow['date'].'/'.$myrow['id'].'_mini.jpg');
imagecopyresampled($thumb,$img,$i*$x,$j*$x,0,0,$x,$x,$x,$x);
mysql_query("UPDATE photos SET mas='$mas' WHERE id='{$myrow['id']}'",$db);
$i++;
if ($i>3) {
$i=0;
$j++;
}
}
$thumb=imagejpeg($thumb,$_SERVER['DOCUMENT_ROOT'].'/images/'.$date.'/'.$mas.'_mas.jpg',88);
}

$result=mysql_query("SELECT * FROM photos WHERE user_id='{$_SESSION['user']}'",$db);
if (mysql_num_rows($result)==0) {
$error='Фотографии не найдены';
}
else {
$i=0;
while ($myrow=mysql_fetch_array($result)) {
$photos[$i]=$myrow;
$i++;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
</head>
<body>
<table width="100%" height="295" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="60%" valign="top">
<div id="content">
<div><?=$error?></div>
<? if (($error=='') && ($_SESSION['toone']==1)) { ?>
<div align="center"><img src="images/<?=$date?>/<?=$mas?>_mas.jpg"></div><br>
<div>Ссылки для вставки:</div>
<table cellpading="3" cellspacing="3" border="0">
<tr>
<td>BB-Code:</td>
<td><input type="text" value=
'http://&lt;?=$_SERVER['HTTP_HOST']?&gt;/photo.php?mas=&lt;?=$mas?&gt;' size="120" /></td>
</tr>
<tr>
<td>HTML-Code:</td>
<td><input type="text" value=
'<a href="http://<?=$_SERVER['HTTP_HOST']?>/photo.php?mas=<?=$mas?>"><img src="http://<?=$_SERVER['HTTP_HOST']?>/images/<?=$date?>/<?=$mas?>_mas.jpg"></a>' size="120" /></td>
</tr>
<tr>
<td>URL only:</td>
<td><input type="text" value=
'http://<?=$_SERVER['HTTP_HOST']?>/photo.php?mas=<?=$mas?>' size="120" /></td>
</tr>
</table>
<? } ?>
<? if (($error=='') && ($_SESSION['toone']!=1)) { ?>
<table width="50%" cellpadding="3" cellspacing="3" border="0" align="center">
<tr>
<?
$i=0;
for ($j=0;$j<count($photos);$j++) {
if (($i%4==0) && ($i!=0)) echo '</tr><tr>';
?>
<td align="center"><a href="images/<?=$date?>/<?=$photos[$i]['id']?>_norm.jpg" rel="lightbox[roadtrip]"><img src="images/<?=$date?>/<?=$photos[$i]['id']?>_<? if (count($photos)==1) echo 'med'; else echo 'mini'; ?>.jpg" /></a></td>
<?
$i++;
}
?>
</tr>
</table>
<div>Ссылки для вставки:</div>
<table cellpading="3" cellspacing="3" border="0">
<tr>
<td>BB-Code:</td>
<td><input type="text" value=
'<? for ($i=0;$i<count($photos);$i++) { ?>http://&lt;?=$_SERVER['HTTP_HOST']?&gt;/photo.php?id=&lt;?=$photos[$i]['id']?&gt; <? } ?>' size="120" /></td>
</tr>
<tr>
<td>HTML-Code:</td>
<td><input type="text" value=
'<? for ($i=0;$i<count($photos);$i++) { ?><a href="http://<?=$_SERVER['HTTP_HOST']?>/photo.php?id=<?=$photos[$i]['id']?>"><img src="http://<?=$_SERVER['HTTP_HOST']?>/images/<?=$date?>/<?=$photos[$i]['id']?>_mini.jpg"></a> <? } ?>' size="120" /></td>
</tr>
<tr>
<td>URL only:</td>
<td><input type="text" value=
'<? for ($i=0;$i<count($photos);$i++) { ?>http://<?=$_SERVER['HTTP_HOST']?>/photo.php?id=<?=$photos[$i]['id']?> <? } ?>' size="120" /></td>
</tr>
</table>
<? } ?>
</div>
</td>
</tr>
</table>
</body>
</html>


Я так понял страница формирует ссылки через этот запрос: $result=mysql_query("SELECT * FROM photos WHERE user_id='{$_SESSION['user']}'",$db);
А я как раз не передаю значение user, может потому что оно пустое по этому страница отражает все картинки загруженные через программу. А вот как передать его я незнаю...

Вот страница через которую происходит отправка изображения (index.php)
<?
require_once("blocks/bd.php");

$_SESSION['user']=md5(time());
$_SESSION['toone']=$_POST['toone'];
$_SESSION['color']=$_POST['color'];
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Фотохостинг,Хостинг картинок,Бесплатный хостинг фотографий.</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link href="/uploadify/uploadify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="/uploadify/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/uploadify/swfobject.js"></script>
<script type="text/javascript" src="/uploadify/jquery.uploadify.v2.1.4.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '/uploadify/uploadify.swf',
'script' : '/uploadify/uploadify.php?user=<?=$_SESSION['user'].'-'.$_POST['size_multi']?>',
'cancelImg' : '/uploadify/cancel.png',
'multi' : true,
'buttonText' : 'Browse',
'folder' : '/images/',
'fileDesc' : 'jpg;gif;png;jpeg',
'fileExt' : '*.jpg;*.jpeg;*.png;*.gif',
'auto' : false
});
});
</script>
</head>
<body>
<img src="../picuhead.jpg">
<table width="100%" height="295" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="60%" valign="top">
<div id="content">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="50%" valign="top" bgcolor=#EDEDED>
<strong>Массовая загрузка:</strong><br /><br />
<form action="" method="post" enctype="multipart/form-data">
<strong>Размер превью:</strong><br />
<select id="asd" name="size_multi" onchange="document.getElementById('size_multi_sub').click()">
<option value="80" <? if ($_POST['size_multi']=='80') echo 'selected'?>>80*80</option>
<option value="100" <? if ($_POST['size_multi']=='100') echo 'selected'?>>100*100</option>
<option value="120" <? if ($_POST['size_multi']=='120') echo 'selected'?>>120*120</option>
<option value="150" <? if ($_POST['size_multi']=='150') echo 'selected'?>>150*150</option>
<? if ($_POST['toone']!=1) { ?>
<option value="l120" <? if ($_POST['size_multi']=='l120') echo 'selected'?>>Большая 120</option>
<option value="l150" <? if ($_POST['size_multi']=='l150') echo 'selected'?>>Большая 150</option>
<? } ?>
</select>
<br><br>
<input type="checkbox" value="1" name="toone" id="toone" <? if ($_POST['toone']==1) echo 'checked="checked"';?> onchange="document.getElementById('size_multi_sub').click()"> Отоброзить миниатюры одной картинкой
<? if ($_POST['toone']==1) { ?>
<br><br>
Цвет фона:<br>
<input onclick="document.getElementById('size_multi_sub').click()" type="radio" name="color" value="0" <? if (($_SESSION['color']=='') || ($_SESSION['color']==0)) { ?>checked="checked"<? } ?>> Белый<br>
<input onclick="document.getElementById('size_multi_sub').click()" type="radio" name="color" value="1" <? if ($_SESSION['color']==1) { ?>checked="checked"<? } ?>> Черный
<? } ?>
<br><br>
<input type="submit" id="size_multi_sub" style="display:none;" />
<input id="file_upload" name="file_upload" type="file" /><br />
<a href="javascript:$('#file_upload').uploadifyUpload();">Загрузить выбранные фото</a><br /><br />
</form>
</td>
<td valign="top" bgcolor=#DDDDDD>
<strong>Единичная загрузка:</strong><br /><br />
<form action="add_photo.php" method="post" enctype="multipart/form-data">
<strong>Размер превью:</strong><br />
<select name="size">
<option value="80">80*80</option>
<option value="100">100*100</option>
<option value="120">120*120</option>
<option value="150">150*150</option>
<option value="l120">Большая 120</option>
<option value="l150">Большая 150</option>
</select>
<br>
<strong>Выберите фотографию:</strong><br />
<input type="file" name="UploadFile" /><br /><br />
<input type="submit" name="but_addphoto2" value="Загрузить" />
</form>

</td></tr></table>
</div>
</td>
</tr>
</table>
<center>Фотохостинг 2011</center>
<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' "+
"target=_blank><img src='//counter.yadro.ru/hit?t27.1;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet: показано количество просмотров и"+
" посетителей' "+
"border='0' width='0' height='0'><\/a>")
//--></script><!--/LiveInternet-->
<meta name='yandex-verification' content='6309317533f75bae' />
</body>
</html>
Re[7]: Проблема с запросом НTTPSend
От: okman Беларусь https://searchinform.ru/
Дата: 20.05.12 08:46
Оценка:
Здравствуйте, surovnev, Вы писали:

S>Не могли бы вы мне а помочь составить правильный запрос? Всё перепробовал так и не получилось.


Вы с понятием HTTP-сессии знакомы ?
Так вот, этот сервер для загрузки изображений использует несколько запросов-ответов в рамках
одной HTTP-сессии. Сначала, когда клиент первый раз заходит на сервер, тот генерирует
уникальный для него id, который отдает в Cookie. Этот Cookie как бы говорит клиенту: "смотри,
вот id, под которым ты будешь числиться у меня в базе, не потеряй его, пока будешь со
мной работать". Клиент запоминает Cookie и дальше будет вставлять его во все свои запросы на
сервер, пока не выполнит свою работу.
Последующие запросы используются либо для установки параметров, либо для загрузки самого изображения.
То есть, система в действии выглядит примерно так:
Клиент ---> Серверу
"Привет, дай мне код главной страницы"

Сервер ---> Клиенту
"OK, держи: <html><head ... ... ... </html>
Кстати, твой ид будет a8CxB33dyQWbLZ"

Клиент ---> Серверу
"Хочу, чтобы размер превью был 80 на 80
мой ид = a8CxB33dyQWbLZ"

Сервер ---> Клиенту
"OK, установил"

Клиент ---> Серверу
"Хочу, чтобы на странице показывалось только одно изображение
мой ид = a8CxB33dyQWbLZ"

Сервер ---> Клиенту
"OK, нет проблем"

Клиент ---> Серверу
"Все, лови картинку:
0B CD E3 AF 01 01 D4 FF
33 17 BA BC EA 08 03 44
11 3C ...
...
...
... E0 EA
мой ид = a8CxB33dyQWbLZ"

Сервер ---> Клиенту
"Хорошо, принято, вот тебе мой ответ,
там в теле HTML-сообщения ссылки на картинку:
<html><head ... url="..." ... </html>"

В конкретные детали работы данного сервера я не вникал, но в общих чертах оно примерно так и работает.
То есть, Вам нужно включить мониторинг трафика, зайти через браузер на сайт, затем понажимать
контролы/чекбоксы и посмотреть, какие запросы генерирует браузер и что отдает сервер.
Затем загрузить картинку и посмотреть, какие данные ходят там.

В запросах обратите внимание на передающиеся параметры, ну а в целом — на заголовки
Cookie (клиент) и Set-Cookie (сервер), на то, кто, когда и как устанавливает их.
Возможно, вместо Cookie кое-где будет использоваться E-Tag.
Ну а дальше пробуйте делать то же самое программно. Если что-то не получается —
подключаете мониторинг трафика и ищете отличия свой реализации от "браузерной".

Это все, чем я могу помочь.
Как там говорится: "хочешь накормить голодного — дай ему удочку".
Re[8]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 21.05.12 04:52
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev, Вы писали:


S>>Не могли бы вы мне а помочь составить правильный запрос? Всё перепробовал так и не получилось.


O>Вы с понятием HTTP-сессии знакомы ?

O>Так вот, этот сервер для загрузки изображений использует несколько запросов-ответов в рамках
O>одной HTTP-сессии. Сначала, когда клиент первый раз заходит на сервер, тот генерирует
O>уникальный для него id, который отдает в Cookie. Этот Cookie как бы говорит клиенту: "смотри,
O>вот id, под которым ты будешь числиться у меня в базе, не потеряй его, пока будешь со
O>мной работать". Клиент запоминает Cookie и дальше будет вставлять его во все свои запросы на
O>сервер, пока не выполнит свою работу.
O>Последующие запросы используются либо для установки параметров, либо для загрузки самого изображения.
O>То есть, система в действии выглядит примерно так:
O>
O>Клиент ---> Серверу
O>"Привет, дай мне код главной страницы"

O>Сервер ---> Клиенту
O>"OK, держи: <html><head ... ... ... </html>
O>Кстати, твой ид будет a8CxB33dyQWbLZ"

O>Клиент ---> Серверу
O>"Хочу, чтобы размер превью был 80 на 80
O>мой ид = a8CxB33dyQWbLZ"

O>Сервер ---> Клиенту
O>"OK, установил"

O>Клиент ---> Серверу
O>"Хочу, чтобы на странице показывалось только одно изображение
O>мой ид = a8CxB33dyQWbLZ"

O>Сервер ---> Клиенту
O>"OK, нет проблем"

O>Клиент ---> Серверу
O>"Все, лови картинку:
O>0B CD E3 AF 01 01 D4 FF
O>33 17 BA BC EA 08 03 44
O>11 3C ...
O>...
O>...
O>... E0 EA
O>мой ид = a8CxB33dyQWbLZ"

O>Сервер ---> Клиенту
O>"Хорошо, принято, вот тебе мой ответ,
O>там в теле HTML-сообщения ссылки на картинку:
O><html><head ... url="..." ... </html>"
O>

O>В конкретные детали работы данного сервера я не вникал, но в общих чертах оно примерно так и работает.
O>То есть, Вам нужно включить мониторинг трафика, зайти через браузер на сайт, затем понажимать
O>контролы/чекбоксы и посмотреть, какие запросы генерирует браузер и что отдает сервер.
O>Затем загрузить картинку и посмотреть, какие данные ходят там.

O>В запросах обратите внимание на передающиеся параметры, ну а в целом — на заголовки

O>Cookie (клиент) и Set-Cookie (сервер), на то, кто, когда и как устанавливает их.
O>Возможно, вместо Cookie кое-где будет использоваться E-Tag.
O>Ну а дальше пробуйте делать то же самое программно. Если что-то не получается -
O>подключаете мониторинг трафика и ищете отличия свой реализации от "браузерной".

O>Это все, чем я могу помочь.

O>Как там говорится: "хочешь накормить голодного — дай ему удочку".

Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно

O>Клиент ---> Серверу
O>"Все, лови картинку:
O>0B CD E3 AF 01 01 D4 FF
O>33 17 BA BC EA 08 03 44
O>11 3C ...
O>...
O>...
O>... E0 EA
O>мой ид = a8CxB33dyQWbLZ"


Вот это:

O>Клиент ---> Серверу
O>"Все, лови картинку:
O>0B CD E3 AF 01 01 D4 FF
O>33 17 BA BC EA 08 03 44
O>11 3C ...
O>...
O>...
O>... E0 EA


я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать

O>мой ид = a8CxB33dyQWbLZ"


я не знаю... не знаю какой командой или запросом...
Re[9]: Проблема с запросом НTTPSend
От: okman Беларусь https://searchinform.ru/
Дата: 21.05.12 05:54
Оценка:
Здравствуйте, surovnev, Вы писали:

S>Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно


S>...


S>я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать


S>я не знаю... не знаю какой командой или запросом...


Ну вот смотрите.
  Клиент заходит на сайт

GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Connection: Keep-Alive


  А сервер ему и отвечает

HTTP/1.1 200 OK
Server: nginx/0.6.36
Date: Mon, 21 May 2012 05:29:49 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.2.17
Set-Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 3923

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Фотохостинг,Хостинг картинок,Бесплатный хостинг фотографий.</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link ..............

Обратите внимание на заголовок Set-Cookie — там прописан id клиента, присвоенный сервером.

  Щелкаю 'отобразить миниатюры одной картинкой'

POST / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 323
Content-Type: multipart/form-data; boundary=----------QgAK0HI9VuWMH0kEyRVTHi
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size_multi"
80
Часть 2
Content-Disposition: form-data; name="toone"
1
Часть 3
Content-Disposition: form-data; name="file_upload"; filename=""

В Cookie клиент передает id, выданный сервером.
Части multipart-запроса — это параметры будущей загрузки картинки.
Например, size_multi — это размер превьюшек.
В данном запросе он пока 80 (то есть, 80 на 80 пикселей).

  Устанавливаю размер превью 150 на 150

POST / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 411
Content-Type: multipart/form-data; boundary=----------HOVnBcZ97JvReeL9wSog8M
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size_multi"
150
Часть 2
Content-Disposition: form-data; name="toone"
1
Часть 3
Content-Disposition: form-data; name="color"
0
Часть 4
Content-Disposition: form-data; name="file_upload"; filename=""

Снова Cookie. К чему бы это ?
Кстати, размер превью теперь 150 на 150. См. выделенное.

  Делаю черный цвет фона

POST / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 411
Content-Type: multipart/form-data; boundary=----------X6jN5dvwAF93bNePGRg07B
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size_multi"
150
Часть 2
Content-Disposition: form-data; name="toone"
1
Часть 3
Content-Disposition: form-data; name="color"
1
Часть 4
Content-Disposition: form-data; name="file_upload"; filename=""

color=1 — это, очевидно, означает черный цвет.
Пока я его не поменял, было color=1 (см. предыдущие запросы).

  И, наконец, загружаю картинку

POST /add_photo.php HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
Host: picupic.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://picupic.net/
Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
Connection: Keep-Alive
Content-Length: 257305
Content-Type: multipart/form-data; boundary=----------h6PznwZWpAXR2ZgQ5I4bBG
Тело запроса — множественное
Часть 1
Content-Disposition: form-data; name="size"
80
Часть 2
Content-Disposition: form-data; name="UploadFile"; filename="Безымянный.jpg"
Content-Type: image/jpeg
Тело запроса 256933 байт
Часть 3
Content-Disposition: form-data; name="but_addphoto2"

По этой части, надеюсь, вопросов нет.


В том, чтобы "отреверсить" протокол, а потом заставить свое приложение выполнять то же самое,
нет ничего сложного, нужна лишь внимательность и аккуратность. Типы параметров, а также их
значения, Вы сможете легко получить, щелкая элементы управления на странице загрузки и
изучая запросы-ответы.
Re[10]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 21.05.12 06:24
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev, Вы писали:


S>>Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно


S>>...


S>>я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать


S>>я не знаю... не знаю какой командой или запросом...


O>Ну вот смотрите.

O>
  Клиент заходит на сайт
O>

O>GET / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Connection: Keep-Alive


O>
  А сервер ему и отвечает
O>

O>HTTP/1.1 200 OK
O>Server: nginx/0.6.36
O>Date: Mon, 21 May 2012 05:29:49 GMT
O>Content-Type: text/html
O>Connection: keep-alive
O>X-Powered-By: PHP/5.2.17
O>Set-Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53; path=/
O>Expires: Thu, 19 Nov 1981 08:52:00 GMT
O>Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
O>Pragma: no-cache
O>Content-Length: 3923

O><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
O><html xmlns="http://www.w3.org/1999/xhtml">
O><head>
O><title>Фотохостинг,Хостинг картинок,Бесплатный хостинг фотографий.</title>
O><link href="css/style.css" rel="stylesheet" type="text/css" />
O><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
O><link ..............

O>Обратите внимание на заголовок Set-Cookie — там прописан id клиента, присвоенный сервером.

O>
  Щелкаю 'отобразить миниатюры одной картинкой'
O>

O>POST / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 323
O>Content-Type: multipart/form-data; boundary=----------QgAK0HI9VuWMH0kEyRVTHi
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size_multi"
O>80
O>Часть 2
O>Content-Disposition: form-data; name="toone"
O>1
O>Часть 3
O>Content-Disposition: form-data; name="file_upload"; filename=""

O>В Cookie клиент передает id, выданный сервером.
O>Части multipart-запроса — это параметры будущей загрузки картинки.
O>Например, size_multi — это размер превьюшек.
O>В данном запросе он пока 80 (то есть, 80 на 80 пикселей).

O>
  Устанавливаю размер превью 150 на 150
O>

O>POST / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 411
O>Content-Type: multipart/form-data; boundary=----------HOVnBcZ97JvReeL9wSog8M
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size_multi"
O>150
O>Часть 2
O>Content-Disposition: form-data; name="toone"
O>1
O>Часть 3
O>Content-Disposition: form-data; name="color"
O>0
O>Часть 4
O>Content-Disposition: form-data; name="file_upload"; filename=""

O>Снова Cookie. К чему бы это ?
O>Кстати, размер превью теперь 150 на 150. См. выделенное.

O>
  Делаю черный цвет фона
O>

O>POST / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 411
O>Content-Type: multipart/form-data; boundary=----------X6jN5dvwAF93bNePGRg07B
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size_multi"
O>150
O>Часть 2
O>Content-Disposition: form-data; name="toone"
O>1
O>Часть 3
O>Content-Disposition: form-data; name="color"
O>1
O>Часть 4
O>Content-Disposition: form-data; name="file_upload"; filename=""

O>color=1 — это, очевидно, означает черный цвет.
O>Пока я его не поменял, было color=1 (см. предыдущие запросы).

O>
  И, наконец, загружаю картинку
O>

O>POST /add_photo.php HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 257305
O>Content-Type: multipart/form-data; boundary=----------h6PznwZWpAXR2ZgQ5I4bBG
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size"
O>80
O>Часть 2
O>Content-Disposition: form-data; name="UploadFile"; filename="Безымянный.jpg"
O>Content-Type: image/jpeg
O>Тело запроса 256933 байт
O>Часть 3
O>Content-Disposition: form-data; name="but_addphoto2"

O>По этой части, надеюсь, вопросов нет.


O>В том, чтобы "отреверсить" протокол, а потом заставить свое приложение выполнять то же самое,

O>нет ничего сложного, нужна лишь внимательность и аккуратность. Типы параметров, а также их
O>значения, Вы сможете легко получить, щелкая элементы управления на странице загрузки и
O>изучая запросы-ответы.

Всё, разобрался. Там выдача картинок происходит на соснове куков. ДОбавил это http.Headers.Add('Cookie: PHPSESSID='+'55a3glrjhvgc139sgje1pe4af6'+';'); и всё стало нормально. Осталось только научится генерировать вот это 55a3glrjhvgc139sgje1pe4af6
Re[10]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 21.05.12 07:12
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev, Вы писали:


S>>Ну это я уже приблизительно понял. Вот этот ID как раз и присваивается когда открываешь главную страницу. И как я понял без разницы какой он главное чтоб был уникальный. Вот только как его передать вместе с запросом. т.е. как реализовать программно


S>>...


S>>я методом тыка и примерами из инета кое как реализовал (т.е. картинку загружает) вот только как теперь с этой картинкой передать


S>>я не знаю... не знаю какой командой или запросом...


O>Ну вот смотрите.

O>
  Клиент заходит на сайт
O>

O>GET / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Connection: Keep-Alive


O>
  А сервер ему и отвечает
O>

O>HTTP/1.1 200 OK
O>Server: nginx/0.6.36
O>Date: Mon, 21 May 2012 05:29:49 GMT
O>Content-Type: text/html
O>Connection: keep-alive
O>X-Powered-By: PHP/5.2.17
O>Set-Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53; path=/
O>Expires: Thu, 19 Nov 1981 08:52:00 GMT
O>Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
O>Pragma: no-cache
O>Content-Length: 3923

O><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
O><html xmlns="http://www.w3.org/1999/xhtml">
O><head>
O><title>Фотохостинг,Хостинг картинок,Бесплатный хостинг фотографий.</title>
O><link href="css/style.css" rel="stylesheet" type="text/css" />
O><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
O><link ..............

O>Обратите внимание на заголовок Set-Cookie — там прописан id клиента, присвоенный сервером.

O>
  Щелкаю 'отобразить миниатюры одной картинкой'
O>

O>POST / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 323
O>Content-Type: multipart/form-data; boundary=----------QgAK0HI9VuWMH0kEyRVTHi
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size_multi"
O>80
O>Часть 2
O>Content-Disposition: form-data; name="toone"
O>1
O>Часть 3
O>Content-Disposition: form-data; name="file_upload"; filename=""

O>В Cookie клиент передает id, выданный сервером.
O>Части multipart-запроса — это параметры будущей загрузки картинки.
O>Например, size_multi — это размер превьюшек.
O>В данном запросе он пока 80 (то есть, 80 на 80 пикселей).

O>
  Устанавливаю размер превью 150 на 150
O>

O>POST / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 411
O>Content-Type: multipart/form-data; boundary=----------HOVnBcZ97JvReeL9wSog8M
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size_multi"
O>150
O>Часть 2
O>Content-Disposition: form-data; name="toone"
O>1
O>Часть 3
O>Content-Disposition: form-data; name="color"
O>0
O>Часть 4
O>Content-Disposition: form-data; name="file_upload"; filename=""

O>Снова Cookie. К чему бы это ?
O>Кстати, размер превью теперь 150 на 150. См. выделенное.

O>
  Делаю черный цвет фона
O>

O>POST / HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 411
O>Content-Type: multipart/form-data; boundary=----------X6jN5dvwAF93bNePGRg07B
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size_multi"
O>150
O>Часть 2
O>Content-Disposition: form-data; name="toone"
O>1
O>Часть 3
O>Content-Disposition: form-data; name="color"
O>1
O>Часть 4
O>Content-Disposition: form-data; name="file_upload"; filename=""

O>color=1 — это, очевидно, означает черный цвет.
O>Пока я его не поменял, было color=1 (см. предыдущие запросы).

O>
  И, наконец, загружаю картинку
O>

O>POST /add_photo.php HTTP/1.1
O>User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.62
O>Host: picupic.net
O>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
O>Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
O>Accept-Encoding: gzip, deflate
O>Referer: http://picupic.net/
O>Cookie: PHPSESSID=9bkckpg09o8i5oqe0kbbfvgl53
O>Connection: Keep-Alive
O>Content-Length: 257305
O>Content-Type: multipart/form-data; boundary=----------h6PznwZWpAXR2ZgQ5I4bBG
O>Тело запроса — множественное
O>Часть 1
O>Content-Disposition: form-data; name="size"
O>80
O>Часть 2
O>Content-Disposition: form-data; name="UploadFile"; filename="Безымянный.jpg"
O>Content-Type: image/jpeg
O>Тело запроса 256933 байт
O>Часть 3
O>Content-Disposition: form-data; name="but_addphoto2"

O>По этой части, надеюсь, вопросов нет.


O>В том, чтобы "отреверсить" протокол, а потом заставить свое приложение выполнять то же самое,

O>нет ничего сложного, нужна лишь внимательность и аккуратность. Типы параметров, а также их
O>значения, Вы сможете легко получить, щелкая элементы управления на странице загрузки и
O>изучая запросы-ответы.

Спасибо за помощь. Всё получилось
Re[11]: Проблема с запросом НTTPSend
От: okman Беларусь https://searchinform.ru/
Дата: 21.05.12 07:13
Оценка:
Здравствуйте, surovnev, Вы писали:

S>Всё, разобрался. Там выдача картинок происходит на соснове куков. ДОбавил это http.Headers.Add('Cookie: PHPSESSID='+'55a3glrjhvgc139sgje1pe4af6'+';'); и всё стало нормально. Осталось только научится генерировать вот это 55a3glrjhvgc139sgje1pe4af6


Это значение должно генерироваться сервером, а не клиентом.
Он в самом первом ответе отдает заголовок Set-Cookie, вот Вы должны запомнить
его значение и использовать в своих запросах, в заголовке Cookie.
Посмотрите мои ответы выше — я это все подробно расписал.
Вообще, почитайте еще RFC 1945 (HTTP/1.0) и RFC 2616 (HTTP/1.1), а еще лучше
какую-нибудь книжку
Автор: okman
Дата: 15.07.11
по этому протоколу — многие вещи станут на свои места.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.