CURL aynen formu gibi gibi davranmasına

3 Cevap php

I have a form on my site which sends data to some remote site - simple html form. What I want to do is to use data user enters into form for statistical purposes. So I instead of sending data to the remote page I send it first to my script which resends it the remote site.

Şey, ben bunu kesin bir şekilde her zamanki formu uzak siteye kullanıcı alarak ve kaynak göstererek davranacağını davranmaya ihtiyaç vardır.

Bu kodu kullandığınızda bu tür onu istediğiniz şekilde çalışıyor ama değil:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $action);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);

Problem is that it displays response in the same script. For example if $action is for example: somesite.com/processform.php and my script name is mysqcript.php it would display the response of "somesite.com/processform.php" inside "mysqcript.php" so all the relative links are not working. How do I make it to send the user to "somesite.com/processform.php"? Same thing that pressing the button would do?

Leonti

3 Cevap

Bunu yapmak için çeşitli yollar vardır. Burada en kolay biri: sadece 307 yönlendirme kullanın.

 header('Location: http://realsite.com/form_url.php', true, 307');

Sen header() önce ya da sonra kendi günlüğü ve şeyler yapabilirsiniz ama sonra arama yaparsanız header() Eğer komut ile başlamak gerekir

ignore_user_abort(true);

Tarayıcılar form yönlendirilir ediliyor kullanıcıyı uyarması gereken unutmayın.

Göreli yolları çeviri müşterinin iş olarak ben, sizin sonundan bu yapmak zorunda olacağını düşünüyorum. Bu basit olmalıdır: Sadece yapılan isteğin temel dizin almak

http://otherdomain.com/my/request/path.php

ve "/" veya protokol ("http://", "ftp://") ile başlamayan her giden bağlantının önüne ekleyin.

Tüm giden bağlantılar tespit zordur, ama ben bunu hazır PHP sınıfları vardır% 100 eminim. Örneğin this article ve kullanıcı görüşleri GetLinks () fonksiyonunu kontrol edin. Bu ne ihtiyaç vardır ama kesinlikle doğru yönde gidiyor olmadığını% 100 emin değilim.

İşte onlar tavsiye biriyle karışık alamadım bu yüzden ayrı ayrı yayınlamak olası çözümleri, bir çift vardır:

1 - cURL kullanarak devam yanıtı ayrıştırmak ve buna bir <base/> tag ekleyin. O sayfada hemen hemen her şey için çalışması gerekir.

<base href="http://realsite.com/form_url.php" />

2 - teslim URL'yi değiştirmez. Gerçek URL'ye formu göndermek, ama (YUI yapar) bazı JavaScript kütüphanesini kullanarak içeriği yakalamak ve XHR'de yoluyla komut dosyası gönderin. Ama hala tür hacky bulunuyor.