<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"> <title>データの更新</title> <LINK rel="stylesheet" href="hpbsite.css" type="text/css"> </head> <BODY bgcolor="#004800" text="#ffffff"> <P> <?php /* ----------------------------------------------- main ----------------------------------------------- */ $flag = 0 ; $photo_sum = 0 ;//-- 写真の掲載枚数 $thumb_num = 0 ;//-- 作成されたサムネイル数 make_data($photo_sum , $flag) ; if($flag == 1){ make_thumbnail($thumb_num) ; //-------------------- 確認コメント表示 --------------------- print "<CENTER>"; print "<BR><BR>"; print "<H4>最新のデータに更新しました</H4>"; print "<H4>掲載写真は " . $photo_sum . " 枚です</H4>"; //print "<BR>"; if($thumb_num > 0){ print $thumb_num . " 個のサムネイルを作成しました"; print "<BR>"; } print "</CENTER>"; }else{ print "<CENTER>"; print "<BR><BR>"; print "<H4>最新のデータに更新されています</H4>" ; //print "<BR>"; print "</CENTER>"; } /* ----------------------------------------------- data.js の確認と作成 ----------------------------------------------- */ function make_data (&$photo_sum , &$flag) { //-- 変数の初期化 $file_log = "../joyful.log" ; $file_data = "data.js" ; $file_temp = "temp.js" ; $dummy_dat = "//-- " ; //-- joyfu.log の1行目を読み込む $f_log = fopen($file_log , "r") ; $dat_log = $dummy_dat . fgets($f_log); fclose($f_log); //-- $file_temp を新規作成 $file_temp を $file_dataへリネームするため $f_temp = fopen($file_temp , "w") ; fwrite($f_temp , $dat_log); fclose($f_temp); //-- $file_data ファイルの有無のチェック $chack == 1 有り $chack = file_exists($file_data); if($chack == 0){ //-- $file_data がないので新規作成する $f_js = fopen($file_data , "w") ; fwrite($f_js , $dat_log); fclose($f_js); }else{ //-- $file_data の1行目を読み込む $f_js = fopen($file_data , "r") ; $dat_js = fgets($f_js); fclose($f_js); } //-- 確認用 //print "Dat_log = " . $dat_log . "<br>" ; //print "Dat__js = " . $dat_js . "<br>"; //-- ここで仮のファイル $file_temp を作成 後で $file_data にファイル名を変更する if($dat_log != $dat_js){ //-- 各種文字列の設定 $q = '"' ;//-- ["] $e = '",' ;//-- [",] $n = "\n" ;//-- 改行 $s = "'" ;//-- ['] $m = "<>" ;//-- 配列区切りマーク $fp = fopen($file_log , "r") ;//-- joyfulyy_diary のデータファイル $fw = fopen($file_temp , "a") ;//-- 作成するデータファイル //-- ファイルのロック flock($fw,LOCK_EX); //-- 先頭部分の書き込み $head = $n . "var f_data = new Array(" . $n ; fwrite($fw ,$head); //-- joyful.logのデータ読み込み配列 $dat = array(); while (($line = fgets($fp))) { //-- 画像の含まれているデータのみを data.js に作成する $jpg_pos = strpos($line , ".jpg"); //-- .jpg の位置を求める if($jpg_pos > 0){ $dat = explode("<>" , $line) ;//-- 配列変数に取り込む $no = $dat[0] ;//-- 番号 $date = substr($dat[2] , 0 , 10) ;//-- 年月日 $name = $dat[3] ;//-- 投稿者氏名 $title = $dat[5] ;//-- タイトル $dd = $no . $m . $date . $m . $name . $m . $title ;//-- タイトルまでの配列データの作成 $jpg = "" ; $p_num = 0 ; $size = array();//-- 画像サイズの取り込み配列 for($ii=15 ; $ii<100 ; $ii = $ii + 3){ if($dat[$ii] == null){ break ; } $p_num++ ; $f_name = $no . "_" . $p_num . $dat[$ii] ; $j_pos = strpos($f_name , ".jpg"); //-- .jpg の位置を求める if($j_pos > 0){ //-- 写真の縦横サイズを取得する $ff = "../img/" . $f_name ; $size = getimagesize($ff) ;//-- 画像データを配列に取り込む $p_width = $size[0] ;//-- 写真の幅 $p_height = $size[1] ;//-- 写真の高さ //-- データの作成 $jpg = $jpg . $m . $f_name . $m . $p_width . $m . $p_height ; $photo_sum++ ; //-- 掲載写真の総数 } } $write_dat = $q . $dd . $jpg . $m . $e . $n ; //-- データの書き込み fwrite($fw ,"$write_dat"); //-- 確認用 //print $photo_sum . " --> " . $write_dat . "<br>" ; } } //-- 最終データの書き込み $d = $q . "<><><><><>" . $q . $n ; fwrite($fw ,"$d"); $d = ")" . $n ; fwrite($fw ,"$d"); //-- ファイルのロック解除 flock($fw,LOCK_UN); //-- ファイルを閉じる fclose($fp); fclose($fw); $flag = 1 ; //-- $file_temp ファイルが作成されたら、data.js を一端削除し //-- $file_data にファイル名を変更する unlink($file_data); rename($file_temp , $file_data); }else{ $flag = 0 ; unlink($file_temp); //-- 一時ファイルの削除 } } /* ----------------------------------------------- サムネイルの確認と作成 参考としたページ http://noongoro.main.jp/note/note0052.html ----------------------------------------------- */ function make_thumbnail (&$thumb_num) { set_time_limit(0); $img_path = "../img/" ;//-- サムネイルを作る元画像のあるディレクトリ(必ず末尾は"/"で閉じる) $thumbnail_path = "img_thumb/" ;//-- サムネイルを保存するディレクトリ $thumbnail_h = 80 ;//-- サムネイルの高さ //-- サムネイル・ディレクトリーの有無を確認 $dir_chack = is_dir($thumbnail_path); if($dir_chack == 0){ mkdir($thumbnail_path); } $dir = opendir($img_path); while(($img_name = readdir()) !== FALSE) { //-- ,jpg 画像のみを data.js に作成する $jpg_pos = strpos($img_name , ".jpg"); //-- .jpg の位置を求める if($jpg_pos > 0){ //-- サムネイルの有無のチェック 無ければ作成する chack == 1 有り $thumbnail = $thumbnail_path . $img_name ; $chack = file_exists($thumbnail); //-- サムネイルの作成する if($chack == 0){ $thumb_num++ ; //-- 写真の縦横サイズを取得する。 $ff = $img_path . $img_name ; $size = getimagesize($ff) ;//-- 画像データを配列に取り込む $img_w = $size[0] ;//-- 写真の幅 $img_h = $size[1] ;//-- 写真の高さ $img_r = $img_w / $img_h ; // $thumbnail_w = 90; //サムネイルの横幅 // $thumbnail_h = 80; //サムネイルの縦幅 $thumbnail_w = $thumbnail_h * $img_r ; create_thumbnail ( $img_name, $img_path, $thumbnail_path, $img_w, $img_h, $thumbnail_w, $thumbnail_h ); } } } closedir($dir) ; } /* ----------------------------------------------- サムネイル作成関数 ----------------------------------------------- */ function create_thumbnail ( $img_name, $img_path, $thumbnail_path, $img_w, $img_h, $thumbnail_w, $thumbnail_h ) { $src_img = @imagecreatefromjpeg ( $img_path.$img_name ); //サムネイル元 ※1 if ( $src_img ) { //サムネイル作成 ※2 $dst_img = imagecreatetruecolor ( $thumbnail_w, $thumbnail_h ); $result = imagecopyresampled ( //$result = imagecopyresized ( $dst_img, //貼り付けするイメージID $src_img, //コピーする元になるイメージID 0, //int dstX (貼り付けを開始するX座標) 0, //int dstY (貼り付けを開始するY座標) 0, //int srcX (コピーを開始するX座標) 0, //int srcY (コピーを開始するY座標) $thumbnail_w, //int dstW (貼り付けする幅) $thumbnail_h, //int dstH (貼り付けする高さ) $img_w, //int srcW (コピーする幅) $img_h //int srcH (コピーする高さ) ); //サムネイルをJPEG形式で保存 imagejpeg ( $dst_img, $thumbnail_path.$img_name ); imagedestroy ( $dst_img ); //サムネイル用イメージIDの破棄 ※3 imagedestroy ( $src_img ); //サムネイル元イメージIDの破棄 ※4 //html_p ( "サムネイルが作成されました。" ); //echo "<img src=\"$thumbnail_path$img_name\">"; } else { html_p ( "error:サムネイル元になる画像が読み込めませんでした。" );//error exit (); } } function html_p ( $str ) { echo ( "<p>$str</>\n" ); } ?> <SCRIPT lauguage="javascript"> <!-- //-- CLOSE var cc ="" cc +="<CENTER>" cc +="<A href='javascript:close()' onfocus='this.blur()'>" cc +="<H4>閉じる</H4>" cc +="</A>" cc +="</CENTER>" document.write(cc) //--> </SCRIPT> </P> </body> </html>