Bir form POST başka forma DİREKLERİ

5 Cevap php

Harici bir siteden, ben bir form sunmak gerektiğini secure.domain.com / index.php için DİREKLERİ veri. Index.php içinde, ben sırayla secure.domain.com / foo / index.php gönderilecek gereken bazı gizli alanları doldurun. Ben de bazı oturum değişkenleri ayarlayın.

Ben secure.domain.com / canlı bir kullanıcı portal bina bittikten ederken Bunun nedeni, geçici bir yönlendirme olduğunu. Birkaç hafta içinde, ben sadece secure.domain.com / index.php veri göndermek için ihtiyacınız olacak

Ancak şimdilik, ben secure.domain.com / foo / yatıyor ne insanları denemek ve otomatik olarak oturum açmanız gerekir. Ben sadece çeşitli sitelerde formlar için hedef değiştiremezsiniz.

Nasıl PHP ile bunu gerçekleştirmek olabilir? Şu anda, ben sadece sunan kulüpler bir secure.domain.com / index.php butonuna tıklayın ben o düğmeye kurtulmak için umuyorum "giriş tamamlamak için buraya tıklayınız."

B Planı düğmesinin üzerinde bir captcha koymak ve dış site formları biri için hiçbir yer yoktu, çünkü cilvesi insan doğrulama amaçlı tasarım gereği olduğunu yönetimini anlatmaktır. Ben doğrusu bunu istemem.

Edit:

Cevaplar için teşekkürler. only PHP kullanarak bunu yapmak için hiçbir yolu yok gibi görünüyor. Dahili kullanıcılar plug-in noscript yapılandırılmış çok sıkı öncesi ince istemcileri kullanarak olacaktır, onlar sadece birkaç hafta için düğmesi ile başa çıkabilirim.

5 Cevap

Otomatik JavaScript kullanarak ikinci form sonrası olabilir:

<script>document.forms[0].submit()</script>

Bu Aklıma basit yöntem ama ben uzman bir web adam değilim ;)

Ayrıca mevcut düğmesini tutmak ve devre dışı JavaScript ile kullanıcılar için etrafında bir <noscript> sarılmalıdır.

Düzenleme: JQuery kullanıyorsanız, Wookai cevabı daha iyi bir çözüm olacaktır. Ama noscript basılı tutun.

Sen cURL ile yapabilirsiniz ...

Örnek:

$ch = curl_init(); // initialize curl handle
$url = "http://www.mydomain.com/test.php"; // URL to calc.cgi
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // times out after 10s
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, "text=hi&name=fortega"); // fields to POST to calc.cgi
$data = curl_exec($ch); // run the whole process
curl_close($ch);

Eğer bir HTTP yeniden yönlendirme yapmak mümkün olacak ve içinde POST veri içerir, ancak bu, bildiğim kadarıyla, imkansız için ne gerekir.

Ancak, basit bir çözüm var: JavaScript kullanarak mevcut formu otomatik teslim. Sadece, "yönlendiriliyorsunuz Lütfen bekleyin" tüm formlar / düğmelerini gizlemek ve (jQuery örnek) sayfa yük gönderebilirsiniz gibi bir mesaj görüntüler:

<script type='text/javascript'>
    $(function() {
        $('#yourHiddenForm').submit();
    });
</script>

Diğer yanıtlar dediği gibi, JavaScript engelli olan kullanıcılar için bir <noscript> etiketi mevcut düğmeyi tutmak emin olun.

Eğer ikinci forma bir kimliği iletme, geçici bir tabloda tüm verileri tüm POST veri kopyalama ve ikinci forma GET isteği yaparken, ya da depolama gibi, diğer çözümlerin düşünebildiğim , ve orada gelen verileri yüklemek, ama bu sizin ikinci formu değiştirerek ima ve gerçekten kabul edilebilir değil sanırım.

Eğer CURL kullanmak istemiyorsanız:

http://www.sajithmr.me/php-post-without-curl/

Sen ikinci bir gizli form doldurmak olacak ilk formun bir ajax görevini yapabilir. Sonra yoursecondform.submit () yapacağız ikinci form tamamlanması üzerine bir javascript geri arama ekleyin;