WebProgramming
Next Entries »CURLでBasic認証がかかったページへアクセスする
水曜日, 12 月 26th, 2007たとえば、Basic認証がかかったURL
http://basicninsyo.funny-k.com/test.html
ユーザ名:guest
パスワード:password
というのがあったとして、このページをPHPで取得するのに
$buf = join(””, file(”http://basicninsyo.funny-k.com/test.html”));
なんてすると、当然のようにWarningではじかれてしまいます。
しかし、CURLを利用すると、Basic認証がかかったページでもアクセスすることができます。
———-
$URL = “http://basicninsyo.funny-k.com/test.html”;
$USERNAME = “guest”;
$PASSWORD = “password”;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $USERNAME . “:” . $PASSWORD);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$buf = curl_exec($ch);
curl_close($ch);
$fp = fopen(”./output.html”, “w”);
fputs($fp, $buf);
fclose($fp);
———-
こんな感じです。
関数のエラー制御
土曜日, 12 月 22nd, 2007関数の前に「@」をつけると、その関数の処理で失敗した際にエラーメッセージが出力されないようになります。
そのかわり、「$php_errormsg」というグローバル変数にエラーメッセージが入ります。
たとえば、こんな感じで使います。
@copy(”abc.txt”, “def.txt”);
if($php_errormsg){
print $php_errormsg;
}
formのsubmitでエラー
土曜日, 12 月 22nd, 2007こんな感じのよくあるフォーム。
<html>
<body>
<script language=”javascript”>
<!–
function _go(){
document.testform.submit();
}
–>
</script>
<form name=”testform” action=”test.php” method=”post”>
<input type=”text” name=”text”>
<input type=”button” name=”submit” id=”submit” value=”submit” onclick=”_go()”>
</form>
</body>
</html>
実は、これではエラーとなってしまいます。
調べたところ、「name」や「id」の値に『submit』をセットすると、実際のsubmitが上書き(?)されてしまうとのことらしいです。
ということで、「name」や「id」にちがう値をセットしてやることで解決できます。

