PHPに最悪の脆弱性 

category-icon

PHP史上最悪の脆弱性(ぜいじゃくせい)が発見されたようです。まずすべき対策は、PHP4.4.1以上にアップグレードすることのようです。が、多くの方は、独自でドメインを取っていても、レンタルサーバーなのでPHPのバージョンアップには手が出せないという状況だと思います。

 これは、暫くはサーバー会社なり管理人さんの反応を見るしかないですね。とにかく重大な脆弱性らしいです。具体的な部分を自分のブログLink に少し書きましたが、まだよく呑み込めていません。ppBlogのプログラム自体は、現時点では、怪しい箇所は思いつきませんが見直しておきます。


— posted by martin at 04:37 pm   commentComment [1]  pingTrackBack [1]

ベータ版アップデート

category-icon

だいぶ仕上がってきた感じの1.5です。まだ、未実装のものもありますが。今回では、前回のアップデート時に指摘されていたものを中心にデバッグを行いました。

 ここにきて、やや大きめの修正がありました。それは、各テーマディレクトリにあるテンプレートファイルtemplate.phpの中での記述です。これまでは、「最近のエントリー」や「コメント」などのエリア表示の設定は、環境設定から行っていたのですが、今回のバージョンからは、各テーマにより柔軟性を持たせようと、template.phpでエリア表示指定も行うようにしました。各テーマによって表示させたいエリアが違ってくることもあるでしょうから。これまでは、各テーマでのエリア関連のタグの記述は、例えば「最近のエントリー」エリアは

<div id="recently">%_RECENTLY:Recently:block_%</div><!--#recently-->

のような感じでした。%で囲まれた中に2つのコロン(:)があって、真ん中の「Recently」がエリアでのタイトル表示になり、次のblockというのが、ボックスを展開した状態で表示させるか(block)、それとも閉じた状態で表示させるか(none)を表していました。今回はこれにもうひとつコロンを最初に加えて、この「最近のエントリー」エリアの場合は、

<div id="recently">%_RECENTLY:1:Recently:1_%</div><!--#recently-->

みたいになります。エリアでのタイトル表示「Recently」の前に、このエリア自体の表示・非表示を指定する10を指定します。ボックス展開のon/offを指定していたnone/blockはそれぞれ、01に変更になります。今回のバージョンアップでは、従来のこの部分を変更しないときちんと表示されません。この変更は、お使いのエディタでやってもよいでしょうし、また、従来どおり、オンラインで管理画面の「テーマの編集」から編集してもいいです。ちなみに、エリアボックスでのタイトル「Recently」を日本語表示にしたいなら、

<div id="recently">%_RECENTLY:1:最近のエントリー:1_%</div><!--#recently-->

とすればいいです。簡単ですね。あ、たしか配布中のやつは、この「最近のエントリー」エリアが「非表示」の設定(0)になっていたと思うので、動作確認も兼ねて表示させるように編集してみて下さい。で、この変更により、これまでownerディレクトリにあるキモの設定ファイルini.inc.phpでのエリア関連の設定値はなくなっています。

 あとは、細かいところでは、アクセス解析関連で、ぼちぼち出てた次世代ウェブ技術「Web2.0G」指向の新鋭ブラウザ(ベースはFirefox)FlockLink のトラックもキャッチするようにしています。なのでこのFlockアイコンも追加してます。

 何だか、AjaxのコメントボタンがMacOSX Safariで再び利かなくなったという報告もあるようで、帰宅したら確認してみます。。

 あ、それからひとつ前の書き庫にある「画像ギャラリーでのドロップシャドウLink 」にも対応しています。これは環境設定で「サムネイルでのドロップシャドウを・・・」というところでon/offの設定が可能です(いや、ドロップシャドウなんお 別に興味ないよという方もいらっしゃるでしょうから)。画像ギャラリーでのサムネイルにはPIXディレクトリにあるs1ディレクトリの中の画像が使われます。で、既存のサムネイルに、新しくこの効果をつけてみたいという方は、以下の手順で可能です。まずはFFFTPGなどのFTPソフトの画面で
  • s1ディレクトリにあるサムネイル画像をすべて削除
  • cacheディレクトリにあるImages.db,Images_linked.db, Images_unlinked.dbも削除
で作業は終わりです。この状態でブロッグのトップページを開いて、「ギャラリー」アイコンをクリックして画像ギャラリーを開いてみると、一番最初は、サムネイルをガガガッと作成していくので、ちょいと間があるかもしれませんが、2度目からは影付きサムネイルがすでに出来上がっているので、サクッと表示されると思います。

 今回の修正ファイルを添付しておきます。

添付ファイル: DIFF1025.zipattachedIcon 

— posted by martin at 12:08 am   commentComment [16]  pingTrackBack [0]

PHPでドロップシャドウ

category-icon

最近のエントリーはアップデートばかりでバランスが悪いので、たまには開発日誌を書いてみよう。

 それなりにプロ意識を持ったデザイナー達がざわざわとエントリーしてそうなDeviantARTLink のサイト。ここでは至る所で作品のサムネイル画像を目にすることができます。で、どの画像にもいい感じでドロップシャドウが利いていますね。ドロップッシャドウ自体はppBlogでも指定出来るのですが、このDeviantのサイトのように綺麗ではありません。何故なら、おそらくDeviantのサイトでは、個々のサムネイルの大きさに合わせて、動的に「影」を生成しているからです(おそらく。ソースを見た感じでの推論です)。ppBlogでは、サーバーへの負荷やパフォーマンスを考慮して、このアプローチは取っていません。何より、PHPでのドロップシャドウのプログラムは「何だかややこしそうだ」というのがありました。

 でも、画像ギャラリーのサムネイル画像で、ぜひともDeviantみたいなドロップシャドウを実現したくて勉強がてらスクリプトを書いてみました。こんな感じです。左上にある「エリア拡張ボタン」を押すと見やすいと思います。

function ImageDropShadow($from='', $output, $borderW=5){
 $size = GetImageSize($from);
 $tl_shadow = ImageCreateFromPNG("Images/top-left.png");
 $offsetX = ImageSX($tl_shadow);
 $offsetY = ImageSY($tl_shadow);
 $br_shadow = ImageCreateFromPNG("Images/bottom-right.png");
 $shadowX = ImageSX($br_shadow);
 $shadowY = ImageSY($br_shadow);

 $canvas = ImageCreateTrueColor($size[0]+$offsetX+$shadowX+$borderW*2, $size[1]+$offsetY+$shadowY+$borderW*2);
 ImageAlphaBlending($canvas, true);

 switch ($size[2]){
  case 1 : $out = ImageCreateFromGIF($from); break;
  case 2 : $out = ImageCreateFromJPEG($from); break;
  case 3 : $out = ImageCreateFromPNG($from); break;
 }
 
 $bg_color = ImageColorAllocate($canvas, 255, 255, 255);
 Imagefilledrectangle ($canvas, 0, 0, ImageSX($canvas), ImageSY($canvas), $bg_color);

 ImageCopy ($canvas, $out, $offsetX+$borderW, $offsetY+$borderW, 0, 0, $size[0], $size[1]);
 // top left
 ImageCopyResampled($canvas, $tl_shadow, 0,0, 0,0, $offsetX,$offsetY, $offsetX,$offsetY);

 $tp_shadow = ImageCreateFromPNG("Images/top.png");  // top
 ImageCopyResampled ($canvas, $tp_shadow, $offsetX,0, 0,0, $size[0]+$borderW*2,$offsetY, ImageSX($tp_shadow),ImageSY($tp_shadow));

 $tr_shadow = ImageCreateFromPNG("Images/top-right.png");  // top right
 ImageCopyResampled ($canvas, $tr_shadow, $offsetX+$size[0]+$borderW*2,0, 0,0,
                     $offsetX,$offsetY, ImageSX($tr_shadow),ImageSY($tr_shadow));

 $r_shadow = ImageCreateFromPNG("Images/right.png");  // right
 ImageCopyResampled ($canvas, $r_shadow, $size[0]+$offsetX+$borderW*2,$offsetY, 0,0,
                     $shadowX,$size[1]+$borderW*2, ImageSX($r_shadow),ImageSY($r_shadow));

 $l_shadow = ImageCreateFromPNG("Images/left.png");   // left
 ImageCopyResampled ($canvas, $l_shadow, 0,$offsetY, 0,0,
                     $offsetX,$size[1]+$borderW*2, ImageSX($l_shadow),ImageSY($l_shadow));

 $bl_shadow = ImageCreateFromPNG("Images/bottom-left.png"); // bottom left
 ImageCopyResampled ($canvas, $bl_shadow, 0,$size[1]+$offsetY+$borderW*2, 0,0,
                     $offsetX,$shadowY, ImageSX($bl_shadow),ImageSY($bl_shadow)); 

 ImageCopyResampled ($canvas, $br_shadow, $offsetX+$size[0]+$borderW*2,$offsetY+$size[1]+$borderW*2,// bottom right
                     0,0, $shadowX,$shadowY,$shadowX,$shadowY);

 $bm_shadow = ImageCreateFromPNG("Images/bottom.png"); // bottom
 ImageCopyResampled ($canvas, $bm_shadow, $offsetX,$offsetY+$size[1]+$borderW*2, 0,0,
                     $size[0]+$borderW*2,$shadowY, ImageSX($bm_shadow),ImageSY($bm_shadow)); 

 ImageDestroy($tl_shadow); ImageDestroy($tp_shadow); ImageDestroy($tr_shadow);
 ImageDestroy($l_shadow);  ImageDestroy($r_shadow);
 ImageDestroy($bl_shadow); ImageDestroy($bm_shadow); ImageDestroy($br_shadow);
 ImageDestroy($out);
 
 switch ($size[2]){
  case 1 : case 3: ImagePNG($canvas, $output); break; // GIF and PNG 
  case 2 : $out = ImageJPEG($canvas, $output); break; // JPEG to JPEG
 }
 ImageDestroy ($canvas);
}

 いやー、長い長い。メモ紙に模式図を書きながらでないと、とても頭の中だけでは無理でした。改良の余地はありそうですが、これをutils.phpに組み込んで、画像ギャラリーのサムネイル画像はそれっぽいドロップシャドウ付きで表示できるようになりました。Deviantと違う点は、Deviantはサムネイル画像とは別に、背景に影を(動的に)用意しているのですが、この上に挙げた関数で生成される影はサムネイルと一体化しています。なので、一度サムネイル画像を作ってしまえばおしまいなので、サーバー負荷などを気にする必要もありません。

 上のギャラリーアイコンをクリックして雰囲気を見てください。最初にしては、まぁまぁかなと。なお、ここのギャラリーは、まだ画像が少ないんでイマイチな感じですが、weblogの方は画像が揃っているので、なかなか見ごたえはあります→http://martin.p2b.jp/index.php?mode=galleryLink

— posted by martin at 02:15 am   commentComment [0]  pingTrackBack [0]

23日2回目のアップデート

category-icon

こんにちは。とりあえず、今朝のアップしたやつでバグ報告のあったところで、手直ししたやつです。修正したところは、コメント数の取得と、Ajaxモードでのコメント内リンクをきちんとリンクになるようにした点です。

 まだ、カテゴリーのソート関連でバグがあるようですが、これはまた午後からのときに見てみます。修正した3点のファイルを添付しておきます。

添付ファイル: comment.jsattachedIcon  script.jsattachedIcon  utils.phpattachedIcon 

— posted by martin at 10:53 am   commentComment [20]  pingTrackBack [0]

Created in 0.0038 sec.
prev
2025.5
next
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31