2

プレーンphpで書かれた古いプロジェクトをzendフレームワークに移植しています(そして、私はzendを初めて使用します)。古いphpプロジェクトのcULR部分を置き換えるために、zendプロジェクトでzend httpクライアント(cURLアダプター付き)を使用しています。zend http クライアントの代替手段がわからないため、行き詰まりました。

$landing_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

cURL リクエスト中のリダイレクト後にランディング ページの URL を返します。zendで次のことを成功させることができました

$config = array(
            'adapter'   => 'Zend_Http_Client_Adapter_Curl',
            'curloptions' => array(
                    CURLOPT_RETURNTRANSFER    =>    true,
                    CURLOPT_FOLLOWLOCATION    =>    true,
            ),
    );
    $redirecting_page_address ='https://www.domain.tld/someredirectingurl';

    $client = new Zend_Http_Client($redirecting_page_address, $config);

    $response = $client->request();

必要なページを出力として取得しました今、リダイレクト$response->getBody()先のランディングページのURLを知りたいです。$redirecting_page_address前もって感謝します。

4

3 に答える 3

2

Cyril が自分自身で答えたように、有効な URL を取得するための zend フレームワーク 2 (2.2.8 2014-09-17) には高レベル API はありません。ただし、元の curl ハンドルをフェッチして、ネイティブ PHP 関数を使用することはできます。

// $client would be a Zend_Http_Client
$handle = $client->getAdapter()->getHandle();
$effectiveUrl = curl_getinfo($handle, CURLINFO_EFFECTIVE_URL);
于 2015-02-26T10:53:50.667 に答える
0

これに関する私の調査では、現在のバージョンのzendフレームワーク(2.0.6)までこれを行う方法がないことがわかりました。将来のバージョンでは、この機能を含めることができるかもしれません。

于 2013-01-19T04:59:19.970 に答える
0

リダイレクトがヘッダーによって行われる場合は、使用できます

if ($response->isRedirect()){
     $newUrl = $response->getHeader('Location');
}
于 2013-01-05T07:33:21.120 に答える