PHP / cURL kullanarak tarayıcı form POST yöntemini taklit etmek için nasıl

2 Cevap php

I'm trying to simulate browser with POST method using PHP/cURL. When I looked at that live Http header it shows Content-Type: multipart/form-data.

Bir özel başlık Content-Type: multipart/form-data, belirtilen zaman cURL multipart/form-data göndereceğiz öne sürüldü nerede internet üzerinden kontrol.

$headers = array(
    'Content-Type' => 'multipart/form-data; boundary='.$boundary
);

Bu I () (curl_getinfo) print_r zaman gösterdi bende de işe yaramadı

[content_type] => text/html; charset=UTF-8

CURL varsayılan başlıklarını gönderilmiş demektir

Ben de cURL ile dosya gönderiyor / veri gönderme multipart/form-data olarak göndermek neden olacağını okudum. Ben yükledi ama ben koştum tekrar curl_getinfo aldım [content_type] => text/html; charset=UTF-8 kıvırmak bir dosya oluşturdum

$data_array = array("field" => "@c:\file_location.txt");

Ben de gönderilen tek şey içerik bağlı değil DOSYA olacağını, böylece bir dosya içeriğini okumak için çalıştı ama bu gösterileri curl_getinfo benim için işe yaramadı [content_type] => text/html; charset=UTF-8.

$data_array = array("field" => "<c:\file_location.txt"); // note  @ replaced with <

Ben burada somthing özlüyor musun?

Bu referer olduğunu

url

    
POST somepath HTTP/1.1
Host: www(dot)domain(dot)com
User-Agent: Mozilla/5.0 (Windows) Gecko/13081217 Firefox/3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: url/some-file.php

Content-Type: multipart/form-data; boundary=--------------------------$boundary
Content-Length: $some_number
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value1"

$some_text1
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value2"

$some_text2
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value3"

$some_text3
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value4"

$some_text4
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value5"

$some_text5
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value6"

$some_text6
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value7"

$some_text7
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value8"

$some_text8
----------------------------$boundary
Content-Disposition: form-data; name="$some_Value9"


----------------------------$boundary
Content-Disposition: form-data; name="$some_Value10"


----------------------------$boundary--

Burada bir kod parçasıdır.

<?

//Include  files

set_time_limit(0);

include'body.php';
include'keyword.php';
include'bio.php';
include'summary.php';
include'headline.php';
include'category.php';
include'spin.php';
include'random-text.php';


$category = category();
$headline = headline() ;
$summary = summary();
$keyword = keyword();
$body = body();
$bio = bio();

$target="url";
$ref ="url_ref";
$c = "Content-Disposition: form-data; name=";
$boundary = "---------------------------".random_text();

$category = category();
$headline = headline() ;
$summary = summary();
$keyword = keyword();
$body = body();
$bio = bio();

// emulating content form as it appears on livehttp header

$data = "\r\n".$boundary."\r\n".$c."\"pen_id\"\r\n\r\n".$Auth_id."\r\n".$boundary."\r\n".$c."\"cat_id\"\r\n\r\n".category()."\r\n".$boundary."\r\n".$c."\"title\"\r\n\r\n".headline()."\r\n".$boundary."\r\n".$c."\"meta_desc\"\r\n\r\n".summary()."\r\n".$boundary."\r\n".$c."\"meta_keys\"\r\n\r\n".keyword()."\r\n".$boundary."\r\n".$c."\"content\"\r\n\r\n".body()."\r\n".$boundary."\r\n".$c."\"author_bio\"\r\n\r\n".bio()."\r\n".$boundary."\r\n".$c."\"allow_comments\"\r\n\r\ny\r\n".$boundary."\r\n".$c."\"id\"\r\n\r\n\r\n".$boundary."\r\n".$c."\"action\"\r\n\r\n\r\n".$boundary."--\r\n";


// inserting content into a file

$file = "C:\file_path.txt";
$fh = fopen($file, 'w+') or die("Can't open file");
fwrite($fh,$data);
fclose($fh);

// pulling out content from a file as multipart/form-data

 $data_array = array ("field" => "<C:\file_path.txt");

$headers = array (
                    'POST /myhome/article/new HTTP/1.1',
                    'Host: url',
                    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)',
                    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9;q=0.8',
                    'Accept-Language: en-us,en;q=0.5',
                    'Accept-Encoding: gzip,deflate',
                    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
                    'Keep-Alive: 300',
                    'Connection: keep-alive',
                    'Content-Type: multipart/form-data; boundary='.$boundary,
                    'Content-Length: '.strlen($data),

                  );



  # Create the cURL session

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target);    // Define target site

    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_HEADER, $headers); // No http head
    //curl_setopt($ch, CURLOPT_REFERER, $ref);
    curl_setopt($ch, CURLOPT_NOBODY, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);      // Return page in string
    curl_setopt($ch, CURLOPT_COOKIEJAR, "c:\cookie\cookies.txt");  // Tell cURL where to write
    curl_setopt($ch, CURLOPT_COOKIEFILE, "c:\cookie\cookies.txt"); // Tell cURL which cookies
    //curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "$data_array");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);      // Follow redirects
    curl_setopt($ch, CURLOPT_MAXREDIRS, 4);

   # Execute the PHP/CURL session and echo the downloaded page
   $page = curl_exec($ch);


$err = curl_error($ch);
$info =curl_getinfo($ch);

   # Close the cURL session
    curl_close($ch);

print_r($err);
print_r($info);

?>

2 Cevap

Kod tutarlı / tutarlı akışı Osted ettik. Size ne beklediğiniz sonunda bit mi? Ya da başka bir şey mi?

Üzgünüz, ama biz bir lot daha fazla bilgi sorunu teşhis yardım gerekiyor - "işe yaramadı" diyorsunuz.

  • Bir hata mesajı var mıydı?

  • Ne için dosyayı göndermek için çalışıyoruz?

  • HTTP ile alıcı URL iş formu mu?

  • Eğer birlikte çalıştığı şeklinde bir örnek verebilir misiniz?

  • Eğer alıcı sonunda kodunu kontrol edebilirim?

  • Bunu nasıl "çalışmıyor" biliyor musunuz?

  • Eğer bir hata mesajı alıyorum? Eğer öyleyse, ne?

: Işlemi gibi basit olmalı

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $THE_REMOTE_URL_YOU_ARE_POSTING_TO);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    "field" => "@c:\\file_location.txt", // note the double \\ when used within double quotes
    'a_number' => 12345.
    'a_string' => "hello world"
  )); 
$response = curl_exec($ch);
?>

The bad path might exaplin why curl_getinfo() is not telling you what you expect to see - looking at the actual data exchange might be a lot more helpful. C.

CURL OF komut satırı sürümü aramak için PHP 'exec' kullanmaya çalışın ..

Bir dosyayı yükleme için, bu benim için hile yaptı ..

Example: A Webform has an input box with name 'Filedata' used for uploading a file to their server And I want to upload myImage.jpg

So on a Linux commandline, (Assuming on in the folder of myImage.jpg)

curl-F "Filedata = @ myImage.jpg;" 'Http://siteyoursubmittingto.php'

If this works, you can call this from php using something like exec ("curl -F 'Filedata = @myImage.jpg;' 'http://siteyoursubmittingto.php'");