| チュウトリアル | |
| |TOP| |1||2||3||4||5||6||インスト1||インスト2||インスト3||Linux| | |
6.Webページの処理他
PHPではファイルを扱う多くの関数において、httpやftp アドレスを使用することができます。 以下の方法でWEBページを表示できます。 注意 Windows上では、リモート(外部)ファイルに include() および require() 文を使用することはできません。つまり1の方法は使えません。またレンタルサーバによっては禁止している場合があります。 1. includeやrequire関数で読みコム include("http://www.yahoo.co.jp/index.html");
require("http://www.yahoo.co.jp/index.html");
・違いは?☆ include - 読み込めなくてもスルー ☆ require - 読み込めないと中止 2. readfile関数で出力する $byte = @readfile("http://www.yahoo.co.jp/index.html");
$byteにバイト数が入ります。関数のあたまに「@」をつけるとエラーメッセージを抑止できますよ。
3. ファイル読み込み的に1024バイト or 改行ずつ取得する $fp = fopen("http://www.yahoo.co.jp/index.html", "r");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
4. file関数で一気に配列に読み込む
$arr = file("http://php.s3.to/i.php");
// print_r($arr);
foreach ($arr as $line) {
echo $line;
}
配列の1要素は、改行までとなってます。foreachで配列を分解しています。
5. file_get_contents関数で一気に変数に読み込む $val = file_get_contents("http://blog.livedoor.com/");
echo $val;
PHP4.3.0以降から使える関数で、いまヤン具に人気の方法です。file関数は配列に読み込みますが、file_get_contents関数は変数に読み込みます。臨機応変で PHP5からは、file_put_contents関数ってのも使えます 6. fsockopen関数で、ネットワーク的に取得する $fp = @fsockopen("www.2ch.net", 80);
if($fp){
fputs($fp, "GET /test/dat/2.dat HTTP/1.0\r\n");
fputs($fp, "User-Agent: Monazilla/1.0+kage/1.0\r\n\r\n");
while (!feof($fp) && $o != "\r\n")
$o = fgets($fp, 512);
while (!feof($fp))
echo fgets($fp, 4096);
fclose($fp);
}
80番ポートを叩くとかいうヤツですね。ブラウザ名をアレコレしたり、クッキー送信や、ベーシック認証も出来ますよ。 TOMOさんのサイトが詳しいです。 7. PEARのHTTP_Requestでサクッと取得する// 自フォルダの場合 require_once('Request.php');
require_once "HTTP/Request.php";
$req =& new HTTP_Request("http://www.yahoo.com/");
if (!PEAR::isError($req->sendRequest())) {
echo $req->getResponseBody();
}
コマンドラインから「pear install HTTP_Request」でインストール可能です。
Yahoo株価情報の取得と並び替え 実行例 ソースの一部分 if (mb_ereg("始値([0-9,]+)高値([0-9,]+)安値([0-9,]+)", $l, $v)) {
$out[$i][open] = $v[1];
$out[$i][high] = $v[2];
$out[$i][low] = $v[3];
}
ログイン情報をクッキーで保存するサイトから、クッキーを取得し、送信しよう PEARのHTTP_Requestを使ったmixiログインの例 ソース
画像の保存場所が異なる場合、FTPを使って書き込んでみましょう。この場合、相手サーバにはFTPのアクセス許可が必要になります。
$body = "画像データ";
$fp = fopen("ftp://homepage:FTPパス@192.168.ホスト名/public_html/g/$fname", "w");
fputs($fp,$body);
fclose($fp);
まずはHTMLファイル(or URL)の中からリンクを抜き出す方法を考えましょう。要はページの中の<a href="http://〜の部分を見つければいいですね。 以下がソースですが、正規表現の部分はあまり深く考えないでいいです。意味は文中のhref="http://????"からhttp://????を抜き出すものです。 <?php
// ターゲットのファイル名(URLでも可)
$filename = "tt6.php";
// ファイルを開き配列に格納して、一行ずつ展開
$page = file($filename);
foreach ($page as $line) {
if (preg_match("/\bhref\s*=\s*[\"']?(http:\/\/[^\s\"'>]*)/i",$line,$reg)) {
echo "$reg[1]<br>";
}
}
?>
サンプル
マニュアルのまんまですが、、、アップロードフォームのHTML <form enctype="multipart/form-data" action="up.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="upfile" type="file" />
<input type="submit" value="送信する" />
</form>
「name="MAX_FILE_SIZE" value="30000" 」の部分はファイルサイズ制限バイト数です。<input type="file"の前に置いてください。
制限バイト数はフォーム上での制限なので、厳密には$_FILES['upfile']['size']でチェックするとよろしいかと思います。 投稿処理の部分
// 保存ディレクトリの設定(書き込み権限を与える)
$up_dir = './img-box/';
// 保存場所を決定する(元のファイル名部分を使用)
$up_name = basename($_FILES['upfile']['name']);
$up_file = $up_dir . $up_name;
// アップファイルは一旦/tmp/dh32hfdjhなどに保存されるので、
// move_uploaded_file関数で保存ディレクトリに安全に移動させる。
if (!move_uploaded_file($_FILES['upfile']['tmp_name'], $up_file)) {
die ("アップロード攻撃!かも?!");
}
// 保存に成功したら、ログなどの書き込み処理〜〜〜
// $dat = "$id|$up_name|\n";
アップロード関係のphp.iniの項目PHPのデフォルトでは、2メガまでしかアップロードできない仕様ですので大きなファイルをアップロードするときには、php.iniの設定の変更が必要となります。 <? phpinfo() ?>を表示させて確認してください。 関係ありそうな項目
10メガとか大きなファイルをアップロードできるようにする為には、「 post_max_size > upload_max_filesize」となるようにして下さい。設定変更後はhttpdを再起動してphpinfo()で変更を確認しましょう。
<?php
$target = dirname($_SERVER["SCRIPT_FILENAME"]);
if ($dh = opendir($target)) {
while (($filename = readdir($dh)) !== false) {
if ($filename != "." && $filename != "..") {
echo "$filename<br>";
//$day = date("Y-m-d H:i", filemtime($filename));
//$size = filesize($filename) / 1024;
//printf("% -24s %-s %1.1fK\n<br>", $filename, $day, $size);
}
}
closedir($dh);
}
?>
サンプル ソース
PHPは関数が多すぎて、目的までたどり着く前に迷子になってしまいますよね。 ここでは埋もれた関数の中から「こんなんあったの?!」ってなモノを気まぐれに紹介していくコーナーです。 ・disk_free_space - ディレクトリの空き容量が分かる! ・glob - パターンマッチでファイル検索が出来る!*.txtとか 「これ知ってるゥ?」とか「こんなの無いかな?」を募集中!! 下↓に書いてくださいませ
LastModified May 29 2005 18:34:20
|
| |HOME||チュウトリアル||使用上の注意||スクリプト||無料鯖情報||BBS||リンク| Copyright(C) 1999-2001 ToR all rights reserved. |