[PHP-users 33690] httpsのページに対して、POST送信をし、結果ページをテキストで取得したい

tanig108 @ edogawa.home.ne.jp tanig108 @ edogawa.home.ne.jp
2008年 6月 24日 (火) 04:52:22 JST


tyと申します。再び質問させていただきます。

httpsのページに対して、POST送信をし、結果ページをテキストで取得したいです。
環境:WindowsXP + PHP5.2.6
php -mでopenssl表示されている。phpinfo()でもopensslがenabledとなっている。

以下にソース内容で実装を記述しています。
しかし、実行しても、a.outには何も出力されません。
(a.outに取得したhttpsのhtmlのテキストが出力される予定)

考えられる問題点1:もしかしたら、サーバー(https://www.aaaa.bbbbb.cccc.jp)の
アクセス権限が存在しないかもしれません。
事実、接続してみると、「Error 403--Forbidden」と表示されます。
この場合、どのような実装を行えばよいのでしょうか?
どうぞご教授くださいませm(_ _)m。


☆ソース内容:GetHttps.php
「
<?php
$fp = fsockopen('ssl://www.deal.matsui.co.jp',443,&$err_num,&$err_msg,30);
$data = "var1=xx&var2=yy";
$header = "POST ${PATH} HTTPS/1.0 \r\n" .
	"Host: ' . 'www.aaaa.bbbbb.cccc.jp \r\n" .
	"Accept: text/plain,text/html \r\n" .
	"User-Agent: php-client \r\n" .
	"Content-Type: application/x-www-form-urlencoded \r\n" .
	"Content-Length: ". strlen($data) . " \r\n" .
	"\r\n";
if(!$fp){
    die('Sorry, the server is not currently available!');
}
// Send everything
fputs($fp, $header . $data . " \r\n");
$response = "";
// Get the response
while(!feof($fp)){
    $response .= fgets($fp,4096);
}
echo "★\n$err_num\n$err_msg\n";
$fs = fopen("c:\a.out", "w");
fputs($fs, $response);
fclose($fs);
?>
」
☆:実行方法
「php -f GetHttps.php」
☆:実行結果
「★
0
」

以上よろしくお願いいたします。



PHP-users メーリングリストの案内