Open Source Web Development Tutorials - Dev Shed
ネットワーク環境で使える!PHP関数とツール
(2009/02/19公開)
PHPのネットワークツールと関数
PHPには、ネットワークやインターネットとの相互作用に利用できるツールが、数多くあります。その中からいくつかのツールと関数に注目して、ネットワーク環境におけるスクリプトの有用性を向上する方法を探ってみましょう。今回は、2回で構成する連載の第1回です。
ほかのWebサイトにアクセスする
PHPでほかのサイトにアクセスする...簡単なことです。その前にまず、別のWebサイトにアクセスしたい理由は何ですか?例えば「ある街の天気予報を表示するWebサイトがあって、それに関心がある」など、いずれかのWebサイトから情報を入手したいだけなら、スパイダーリンクを貼(は)りさえすれば、情報を入手するだけでなく、それ以上の活動を実行できます。PHPを使って簡単にWebサイトにアクセスできると申し上げたのは、Webサイトにアクセスする方法がハードドライブ上のテキストファイルにアクセスする方法とほぼ同じだからです。利用する関数はfopen()です。
fopen(http://localhost/websecure/ftp.php, “r”);
ファイルを開くのに利用するfopen()関数は、Webページを開く場合にも使用できます。そもそも、Webページとはサーバー上のファイルだからです。fopen()には、以下のモードがあります。
r
読み出しのみ。ファイルの始まりから読み出しを開始する。
r+
読み出しまたは書き込み。ファイルの始まりから読み出しを開始する。
w
書き込みのみ。ファイルが存在しない場合は作成し、すべての既存コンテンツを上書きする。
w+
読み出しまたは書き込み。ファイルが存在しない場合は作成し、すべての既存コンテンツを上書きする(書き込み時)。
a
書き込みのみ。ファイルが存在しない場合は作成し、ファイルの末尾に新規データを追加する。
a+
読み出しまたは書き込み。ファイルが存在しない場合は作成し、すべての既存コンテンツを上書きする(書き込み時)。
x
書き込みのみ。ファイルが存在しない場合は作成するが、ファイルが存在する場合は、何もせず、警告を発する。
x+
読み出しまたは書き込み。ファイルが存在しない場合は作成するが、ファイルが存在する場合は、何もせず、警告を発する。
ほかの活動を実行する許可が設定されてない限り、ファイルを開いて読み出すことしかできません。また、fopenはリダイレクト(出力先の変更)をサポートしないので、ディレクトリの後にスラッシュを続ける必要があります。例えば・・・
fopen(“http://localhost/websecure/ftp.php/”, “r”);
上例なら成功しますが、下例では失敗します。
fopen(http://localhost/websecure/ftp.php, “r”);
ファイルを開いたら、通常ほかのファイルを扱うのとほぼ同じように、扱うことができます。すなわち、file()あるいはfgets()といった一般的な関数を使って、データの掲載や読み出しを実行できます。
以下は、コードの1例です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="tester.php" method="get">
<input name="url" type="text" />
<input name="" type="button" />
</form>
</body>
</html>
以下は、処理コード例です。
<?
$url=$_POST['url'];
$fp=file($url);
$n=count($fp);
$r=rand(0,($n-1));
echo trim($fp[$r]);
echo $n;
?>
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








