Mesaj başka bir PHP sayfası dosyasını yüklendi?

2 Cevap php

İşte benim sorunum. Ben çok 'kullanıcı dostu' değil bilet izleme sistemi var ama benim kullanıcıların görmek için onlara kalmadan sisteme 'bilet' göndermek için bir istek var.

Ben kadarıyla sadece özel bir HTTP Formu'nu kullanarak ve bilet izleme sistemine gönderme var. Bir sorun 'başarı / tamamlama' sayfa insanların kafasını karıştırmak için bir eğilimi sahiptir. Ben de farklı bir 'başarı' sayfasını kullanmak için bilet sistemini değiştirmek edemez yana iyi ... düşündüm. Ben sadece CURL ile HTTP Post değişimi ele almak ve özel bir başarı ya da sorun sayfa rapor verecek. İşte bazı kod soyutlanmış.

Dosya: tickethelper.php

<?php
extract($_POST);
$url = 'TICKETSYSTEMURL';
$fields = array(
        'fullname'=>urlencode($fullname),
    	/*many more fields*/
        );

foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec($ch); 
curl_close($ch);
if((strlen(strstr($contents,'Your ticket has been submitted')))>0){
        header("Location: http://THANKYOU");
}
        else{
                header("Location: http://OOPS");
        }

?>

Ancak, ne anladım ben benim dosya yükleme eksik olmasıdır. Gördüğüm CURL örnekler çoğu uzak bir HTTP POST sayfa yerel dosyaları yükleme ile ilgisi vardır.

Nasıl benim kullanıcıları HTTP form, sürecin bir dosyayı alan hallederiz 'tickethelper' ve POST 'TICKETSYSTEMURL' o bu?

-İsrail

2 Cevap

Eh, ben kendimi bu yaptım diyemem, ama İşleme CURL ve Dosya ile ilgili PHP belgelerine göre (PHP.net)

CURLOPT_INFILE | aktarma yüklerken okunacağı dosyası.

değer seçenek parametresi aşağıdaki değerleri için (örneğin fopen (),) bir akım kaynağı olmalıdır:

Sen emin değilim (Handling File Uploads ile ilgili belgelere bakın) yüklenmiş dosya üzerinde fopen() aramak için, ama sen (2) [{aramak gerekebilir gerekir }] sunucu üzerinde kontrollü bir dizine aramadan önce fopen()

Örneğin:

$ch = curl_init();

$file = fopen($_FILES['file-field-name']['tmp_name'], 'r');

// OTHER CURL CONFIGURATION
curl_setopt($ch, CURLOPT_INFILE, $file);

curl_exec($ch);

İlk olarak, komut $ _FILES dizi üzerinden yüklenen dosyaya erişebilir.

Dan http://www.tizag.com/phpT/fileupload.php

The $_FILES array is where PHP stores all the information about files. There are two elements of this array that we will need to understand for this example.

  • uploadedfile - uploadedfile is the reference we assigned in our HTML form. We will need this to tell the $_FILES array which file we want to play around with.
  • $ _FILES ['Uploadedfile'] ['name'] - name kullanıcı yüklenen dosyanın özgün yolunu içerir.
  • $_FILES['uploadedfile']['tmp_name'] - tmp_name contains the yol to the temporary file that resides on the server. The file should exist on the server in a temporary directory with a temporary name.

, Sen libcurl ile göndermek POST bu dosyayı içeren alanlarda bir dizi yerine bir dize kullanmak için. Alanlarından biri olarak dosyayı dahil:

$post_fields = array (
    $key => $value,
    ...
    $file_key => "@" . $filename,
);

Eğer "@" sembolünü kullanırsanız, libcurl dosyasını okuyun ve POST da yer alacak.

Sonra kullanımı

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);