저는 업무용 애플리케이션을 설계하고 있습니다. 제공된 데이터를 받아 아래 제공된 양식에 삽입하고 자동으로 제출해야합니다. 다른 페이지에는 문제가 없으며, 로그인, 쿠키 저장, 읽기, 같은 사이트의 다른 링크로 이동할 수 있습니다. 내가 가지고있는 문제는 특히 양식의 페이지에서 컬이 실행되어 페이지를 가져 오지만 포스트 데이터가 전송되지 않습니다. (데이터가 배열로 전송되고 urlencoded 문자열도 전송됩니다) 생각할 수 있습니다. 양식이 구조화되는 방식에 문제가있을 수 있습니다 (아래 코드). 또한 양식이있는 사이트는 내 것이 아니지만 내가 물어 보는 헤더와 게시물 변수를 제공합니다.컬 변수 (php) 제출 양식을 제출하지 않았습니다.
시작하는 중입니다. 형태 :
<form action="newFault" method="GET" id="typeForm">
<div style="margin:5px">
Tip smetnje:
<select name="type" id="type">
<option value="SVA" selected>SVA VA</option>
<option value="SNBS">SNBS - NBSA</option>
<option value="SULL">SULL - ULL</option>
</select>
</div>
</form>
<div>
<form method="POST" action="createFault" enctype="multipart/form-data">
<input type="hidden" name="type" value="SVA">
<table class="tableLight" cellpadding="0" cellspacing="1" style="margin: 5px;">
<tr>
<td colspan="2" style="text-align: right">Virtual account code:</td>
<td><input name="accountCode" size="60"></td>
<td></td>
</tr>
<tr>
<th>konos</th>
<th style="text-align: right">Kontakt osoba:</th>
<td><input name="param.konos" size="60"></td>
<td></td>
</tr>
<tr>
<th>tel</th>
<th style="text-align: right">Telefon:</th>
<td><input name="param.tel" size="60"></td>
<td></td>
</tr>
<tr>
<th>tfx</th>
<td style="text-align: right">Telefax:</th>
<td><input name="param.tfx" size="60"></td>
<td></td>
</tr>
<tr>
<th>eml</th>
<td style="text-align: right">E-mail:</td>
<td><input name="param.eml" size="60"></td>
<td></td>
</tr>
<tr>
<th>vrkv</th>
<th style="text-align: right">Vrsta:</th>
<td><input name="param.vrkv" size="60"></td>
<td></td>
</tr>
<tr>
<th>lpb</th>
<td style="text-align: right">Lokalni pozivni broj:</td>
<td><input name="param.lpb" size="60"></td>
<td></td>
</tr>
<tr>
<th>idkod</th>
<th style="text-align: right">nesto pristupa:</th>
<td><input name="param.idkod" size="60"></td>
<td></td>
</tr>
<tr>
<th>ugbrz</th>
<td style="text-align: right">brzina:</td>
<td><input name="param.ugbrz" size="60"></td>
<td></td>
</tr>
<tr>
<th>iatk</th>
<th style="text-align: right; ">Name:</th>
<td><textarea name="param.iatk" cols="40" rows="3"></textarea></td>
<td></td>
</tr>
<tr>
<th>dkk</th>
<td style="text-align: right">Datum koji odredi krajnji korisnik (ukoliko je to primjenjivo):</td>
<td><input name="param.dkk" size="60"></td>
<td></td>
</tr>
<tr>
<th>opkv</th>
<th style="text-align: right">Opis kvara:</th>
<td><textarea name="param.opkv" cols="40"></textarea></td>
<td></td>
</tr>
<tr>
<th colspan="2" style="text-align: right">Dokumentacija u TIFF formatu:</th>
<td><input type="file" name="attachment"></td>
<td></td>
</tr>
<tr>
<td colspan="2"></td>
<td colspan="2">
<input type="submit" value="Pozovi">
PHP 번호 :
function saljipostom()
{
$postdata = 'type=SVA&accountCode=101010¶m.konos=osoba¶m.tel=016000840¶m.tfx=¶m.eml=¶m.vrkv=vrsta¶m.lpb=¶m.idkod=02637992641¶m.ugbrz=¶m.iatk=imekorisnika¶m.dkk=¶m.opkv=opis&attachment=&submit=Pozovi';
$fields = array(
'type'=>'SVA',
'accountCode'=>'101010',
'param.konos'=>'osoba',
'param.tel'=>'016000840',
'param.tfx'=>'',
'param.eml'=>'',
'param.vrkv'=>'vrsta',
'param.lpb'=>'',
'param.idkod'=>'02637992641',
'param.ugbrz'=>'',
'param.iatk'=>'imekorisnika',
'param.dkk'=>'',
'param.opkv'=>'opis',
'attachment'=>''
);
$polje = $fields;
foreach ($fields as $key => $value)
{
$post_items[] = $key . '=' . urlencode($value);
}
$post_string = implode ('&', $post_items);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://something.something/ui/ganimed/b2b/newFault?type=SVA");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'curl/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'curl/cookies.txt');
$result = curl_exec ($ch);
curl_close ($ch);
unset($ch);
$page = str_get_html($result);
echo $page;
}
출력 컬에서
응답 헤더 된 .js하는 반향된다
HTTP/1.1 200 OK Date: Thu, 24 Jan 2013 08:05:17 GMT Content-Type: text/html;charset=UTF-8 Content-Language: en-US Vary: Accept-Encoding Transfer-Encoding: chunked
방화범 말한다 포스트 필드는 :
방화 IN헤더
Response Headers
Connection Keep-Alive
Content-Language en-US
Content-Length 0
Content-Type text/plain
Date Thu, 24 Jan 2013 12:52:46 GMT
Keep-Alive timeout=15, max=100
Location https://something.something/ui/something/b2b/faults?type=SVA&guid=40898022-1b33-42ab-a9f2-696cc5f70950
요청 헤더
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Cookie JSESSIONID=DD0148C1D1701FA237704C42DE093687.node1
Host something
Referer https://something.something/ui/something/something/newFault?type=SVA
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
질문 : 데있어 문제는, 특히, 양식 페이지에서 발생하는 컬 실행하고 페이지를 가져, 하지만 게시물 데이터가 전송되지 않습니다. 양식을 받아들이지 않습니다 (데이터는 배열로 전송됩니다, 또한 urlencoded 문자열을 시도) 어떤 아이디어?
기타 문의 사항이 있으시면 언제든지 문의하십시오.
나는 이것을 포기했습니다. 비슷한 상황에있는 사람이 있다면 컬을 사용하여 그 일을 포기할 것을 제안합니다. 아약스로 작성된 양식 때문에 컬로 해결할 수 없었습니다. 최근 비슷한 프로젝트가 있었지만 이번에는 파이썬/기계화로 작성했으며 매력처럼 작동했습니다. 그래서 파이썬은 갈 길입니다. – Notoc