Php curl veya fsocket kullanmadan (yönlendirme ile) herhangi bir url için yazılan veri göndermek nasıl

5 Cevap php

I would like my page to be redirected to new url with some post data being sent to it. I don't want to use curl or fsocket because they will not redirect user to that new url.

Is there any alternative for header("Location: blahblahblah"); to send post data? I tried with document.form.submit(); and it worked but some users are facing problem with javascript.

Can any one provide alternate solution for this? Is there any php function to redirect user to new url along with some post data being sent to this url.

Şimdiden teşekkürler.

5 Cevap

function do_post_request($url, $data, $optional_headers = null)
  {
     $params = array('http' => array(
                  'method' => 'POST',
                  'content' => $data
               ));
     if ($optional_headers !== null) {
        $params['http']['header'] = $optional_headers;
     }
     $ctx = stream_context_create($params);
     $fp = @fopen($url, 'rb', false, $ctx);
     if (!$fp) {
        throw new Exception("Problem with $url, $php_errormsg");
     }
     $response = @stream_get_contents($fp);
     if ($response === false) {
        throw new Exception("Problem reading data from $url, $php_errormsg");
     }
     return $response;
 }

Bu linke bir göz http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

bir yönlendirme yapmak için kurallı yolu doğru, javascript ile? Eğer basit bir sayfa olması gerekir:

a) eylem url gitmek istediğiniz bir yer olmanın bir form oluşturmak

b) post_data içeren gizli alanlar yazmak

c) javascript yük sizin için formu göndermek var

PHP kullanarak bir formun davranışını taklit edemez. Aynı isteği ile kullanıcıyı yönlendirme POST veri göndermek, ama olmayabilir. Sen bir form ile yapmanız gerekir. Igor açıklar gibi, Javascript ile formların beklenen davranışını değiştirmek mümkündür ama ben buna karşı tavsiye ederim.

Ne header("Location: $new_url") kullanarak nesi var? Bu bir yönlendirme yapmak ve bunu AFTER POST ing veri yapmak için doğru yoludur.

Düzenleme: Bu veri yayınlanmıştır nasıl olmadığını açıklığa kavuşturmak için güncellendi.

Sadece veri aktarımı gerekir ama POST zorunlu değilse alternatif çözümler:

  • kullanıcıyı yönlendirmek ve sorgu dizesi yoluyla veri iletimi
  • Bir oturumda verileri kaydetmek ve kullanıcıyı yönlendirme