Otomatik bir formu gönderme (cURL)

2 Cevap php

Im paypal kapalı veri göndermek için bir form yazma, ve bu iyi çalışır, ben gizli alanları ile form oluşturmak ve sonra paypal her şeyi gönderen bir gönderme düğmesi var.

Kullanıcı bu düğmeye tıkladığında Ancak, ben, do örneğin veritabanındaki cart durumunu değiştirmek istediğiniz daha var. Yani, ben onlar göndermek ve daha sonra paypal için veri göndermek tıkladığınızda bazı kod yürütmek mümkün olmak istiyorum.

Bunun için javascript kullanmak istemiyorum.

Şu anda benim yöntem cURL, geriye geçerli sayfaya Form mesajları kullanıyor, ben o sepeti durumunuzu güncellemek gibi benim diğer komutları yapmak ve sonra bir curl komutu oluşturmak, $ _POST veri kontrol ve form verilerini göndermek paypal. Şimdi, bu başarıyla yayınlandı alır, ama tarayıcı paypal kapalı gitmez.

İlk ben sadece bir dize sonucu retirieving ve sonra dışarı yankılanan ve ben sonrası başarılı olduğunu görebiliyordu at, sonra ben bu tarayıcı paypal kapalı gidelim olacağını varsayarak 1 CURLOPT_FOLLOWLOCATION set ama, bu gibi görünüyor değil ne do paypal bazı şeyler kapmak ve sayfamda koymak olduğunu.

Bunun için doğru olanı cURL kullanıyor? ve eğer öyleyse, nasıl ben bu sorunu yuvarlak alabilirim? Ben onların sepeti güncellendi olurdu etkin javascript ile bu gibi sadece kullanıcılar için uzak javascript uzak kalmak istiyorum.

Curl için kullanan kod im post_data i yarattı ve sonra post_string içine anahtar-değer çiftleri okunan bir dizidir, altındadır.

//Set cURL Options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_MAXREDIRS, 20);

//Set Data to be Posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

//Execute Request
curl_exec($curl_connection);

2 Cevap

Belki bir başlık deyimi ile CURL birleştirmeyi deneyebilirsiniz

<?php
header ("Location: https://www.paypal.com/"); 

Tarayıcı gerek paypal herhangi bir devlet (session) bilgisi geçmesi durumunda bu bağlı olarak çalışabilir. Bu oturum info CURL çağrı toplandı, ama ne yazık ki tarayıcı o geçmek için hiçbir yolu yoktur vardır. Eğer durumunu korumak gerekir, o zaman bu iş olmaz.

Curl sunucu tarafında çalışır. Bu tarayıcı etkilemez. CURLOPT_FOLLOWLOCATION sadece örneğin paypal o yukarıda bahsedilen gibi bir başlık gönderdiğinde itaat CURL bildirir. Bir şey yapmak için tarayıcı talimat tek yolu HTML yanıt örneğin meta tag çeşit yukarıdaki veya benzeri bir HTTP başlığı ile yanıt olduğunu

<META HTTP-EQUIV="refresh" CONTENT="10;URL=https://www.paypal.com/">

Alternatif olarak, paypal, işlem bittiğinde, geri sunucuya yönlendirecek bir yönlendirme işlevi sağlamaz. Eğer öyleyse o zaman sadece bu arama sırasında kart durumunu değiştirmek ve tüm kıvırmak süreci atlamak?

Formu alma ve size tıklayın ve nihayet paypal kapalı kafa kullanıcı için sadece bir düğme (gizli alanlardaki tüm diğer veri) ile başka bir formu sunmalıdır ne yapmak gerekir yaptıktan sonra.