ホームページ  >  記事  >  バックエンド開発  >  PHP のcurl_exec に関連する問題についてアドバイスをお願いします。

PHP のcurl_exec に関連する問題についてアドバイスをお願いします。

WBOY
WBOYオリジナル
2016-06-13 12:03:061130ブラウズ

PHP のcurl_exec の問題についてアドバイスをお願いします

この投稿は、2014-07-25 08:17:46 に easyrecovery8 によって最終的に編集されました 某社の圧縮パッケージ rar 形式の外部リンクネットワークディスクにはホットリンクを検出するためのリファラーがあり、ブログに載せてダウンロードしてもらいたかったのでリファラーを偽造するためにPHPを勉強したのですが、圧縮されたパッケージが文字化けの文字列として出力されてしまいました。テキスト形式です。開く方法についてアドバイスをお願いします。
私のコードは次のとおりです:
<?php<br />$url = '某个连接地址url.rar格式';<br />$ch = curl_init(); //初始化<br />curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面<br />curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); <br /><br />$content = curl_exec($ch); //执行<br />curl_close($ch); //关闭<br />echo $content;<br />?>

-----解決策----- ----
これらの結果を rar 形式で保存できれば、それは意味します。内容は正しいです。この場合、ヘッダー情報を出力するだけで済みます:
header("Content-type: application/octet-stream");<br />Header("Content-Disposition: attachment; filename=download.rar" );<br />

------解決策------ - --
Quote:
Quote: Quote:

場合、これらの結果を rar 形式で保存します。開くことができるということは、内容が正しいことを意味します。この場合、ヘッダー情報を出力するだけです:
header("Content-type: application/octet-stream");<br />Header("Content-Disposition: attachment; filename=download.rar" );<br />


これでダウンロードして開くことができます。ありがとうございます。
しかし、元の RAR のファイル名は変更されています。たとえば、元のダウンロード アドレスの rar 名は e-book.rar ですが、ダウンロードしたものは download.rar として保存する方法はありますか。元の名前は?

これには、ダウンロード アドレス間の関係を自分で分析する必要があります
------解決策---------------- -- --
まあ、それはうまくいきません。ヘッダーがテキストになってしまいます。これは次のように行う必要があります
相手はダウンロードを提供しているため、ファイル名やファイル長を含む関連情報は当然提供されています
$url = '/某个连接地址url.rar格式';<br />$ch = curl_init(); //初始化<br />curl_setopt($ch, CURLOPT_URL, $url); //你要访问的页面<br />curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面<br />curl_setopt($ch, CURLOPT_HEADER, 1); //要读回 http 头<br />curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'func'); //监听返回的数据<br />curl_exec($ch); //执行<br /><br />function func($ch, $str) {<br />  static $s = '@';<br />  if($s) {<br />    $s = trim($str);<br />    if($s) header($s); //如果是头信息,则发送相应的头<br />  }else echo $str; //否则发送数据<br />  return strlen($str);<br />}<br />


----- -解決策---- ----------------
中国語のファイル名が文字化けして表示されるのは正常です
サーバーは gbk または utf-8 である可能性がありますエンコードされている
クライアントも gbk または utf-8 エンコードされている可能性があります
Content-Disposition:attachment; filename=download.rar の形式でヘッダー情報を受信するときに、中国語のファイル名を判断する必要があります。 、必要に応じてクライアントの文字を使用します トランスコーディング用に設定します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。