2015年03月08日


allow_url_fopen と allow_url_include

allow_url_fopen は、デフォルトで有効ですが、allow_url_include はそうではありません
名前デフォルト変更可能変更履歴
allow_url_fopen"1"PHP_INI_SYSTEMPHP <= 4.3.4 では PHP_INI_ALL。
PHP 4.0.4 から利用可能です。
allow_url_include"0"PHP_INI_SYSTEMPHP 5.2.0 から利用可能です。
何れも、セキュリティ上の理由により、アプリケーションからは変更できませんが、allow_url_fopen が有効であれば、allow_url_include が無効でも代替方法があります。
function inc( $path ) {
// *******************************
// 配列にセット
// *******************************
	$inc = @file( $path );
// *******************************
// 最初と最後の行を削除
// *******************************
	array_shift($inc);
	array_pop($inc);
// *******************************
// 配列をテキストに戻す
// *******************************
	$GLOBALS['inc_eval_txt'] = implode( "", $inc );
// *******************************
// テキストを実行する
// *******************************
	eval($GLOBALS['inc_eval_txt']);
}

まず、ファイルを配列にセットして、最初と最後の行を取り除きます( <?php と ?> の削除 ) 
※ うまくいくように、ファイルの記述方法を定める必要があります。
( その前提ならば、ただのテキストファイルにするといいです )
※ ファイルの拡張子は、テキストの内容がサーバによって加工されないものを使います。

テストしてみると解りますが、include を使った場合でも、http 経由で読み込むテキストの拡張子は、php であってはいけません。( .php では サーバがソースコードを返す事が無いからです )

その後、テキストに戻してからグローバル変数に代入して eval して内容を実行します。

eval は危険な処理ですが、それはユーザーから受け取ったデータを対象にする場合です。ここでの処理は、本来allow_url_include によって利用可能な信頼できる文字列が対象です。
http://winofsql.jp/php/test/print.txt
<?php
inc("http://winofsql.jp/php/test/print.txt");

allow_url_inc();

print "<pre>";

$arr = get_defined_functions();
print_r( $arr["user"] );

print "</pre>";

function inc( $path ) {
// *******************************
// 配列にセット
// *******************************
	$inc = @file( $path );
// *******************************
// 最初と最後の行を削除
// *******************************
	array_shift($inc);
	array_pop($inc);
// *******************************
// 配列をテキストに戻す
// *******************************
	$GLOBALS['inc_eval_txt'] = implode( "", $inc );
// *******************************
// テキストを実行する
// *******************************
	eval($GLOBALS['inc_eval_txt']);
}


?>



タグ:PHP
posted by at 2015-03-08 16:01 | Comment(0) | PHP | このブログの読者になる | 更新情報をチェックする

2015年02月27日


DIV に入れて、ドロップシャドウ( inline-block で、縦のスペースを取り去る方法 )

DIV を普通に使って中にコンテンツを入れると、DIV の横幅は中身の幅に同期しないので、inline-block を指定しました。そのおかげで横幅はぴったりになりましたが、縦の高さが何故か 2px 大きくなるので、line-height: 0px; を指定してみると、見事に綺麗に収まりました。

デモ

ただ、<!DOCTYPE html> で、HTML5 指定している場合に起きるのでこのブログでは必要ありません。

<style>
.shadow_bug {
	display:inline-block; 
	box-shadow: 10px 10px 20px #000;
}

.shadow_div {
	display:inline-block; 
	box-shadow: 10px 10px 20px #000;
	line-height: 0px;
}
</style>

<div class="shadow_bug">
<iframe width="420" height="315" src="https://www.youtube.com/embed/L_QVB4Qdh6o" frameborder="0" allowfullscreen></iframe>
</div>

<br><br><br><br>

<div class="shadow_div">
<iframe width="420" height="315" src="https://www.youtube.com/embed/L_QVB4Qdh6o" frameborder="0" allowfullscreen></iframe>
</div>

関連する Stack Overflow

Why display=inline-block adds uncontrollable vertical margins


posted by at 2015-02-27 00:39 | Comment(0) | テクニック | このブログの読者になる | 更新情報をチェックする

2015年02月26日


Seesaa のテンプレートのタイトル部分 ( 2015年2月現在 ) 晴れ

このままですと、改行が入ってしまうので使える事は使えますが、展開された HTML ソースはあまり見栄えは良くありません。
<title>
<% if:page_name eq 'search' %>
  <% keyword %>: 
<% /if %>

<% if:page_name eq 'archive' %>
  <% extra_title_datetime | date_format("%Y年%m月") %> : 
<% else %>
  <% if:extra_title %>
    <% extra_title | remove_emoji %> :
  <% /if %>
<% /if %>

<% if:current_page > 1 %>(
  <% current_page %>) 
<% /if %>

<% blog.title %>
</title>

しかし、タイトルだけでかなりのテンプレート情報が含まれています。少なくとも if 文による HTML の出力についてとても参考になると思います。

まず、通常の記事ページとカテゴリページの場合のタイトルは、extra_title であり、それがある時に extra_title より絵文字を省いて出力しています。

remove_emoji は、記事のテキストエリアで使える絵文字です。結局 img 要素ですが、この記事でもタイトルとして使えています。ですが、title 要素内で使うのはまずいので remove_emoji で削除できるという事です。

この際の |(縦棒)は、いわゆるパイプの役目をして、他の文字列変換に繋げる事ができます。

current_page は、複数ページがある場合、現在が何ページかという数値が入っているので、この例では 2 ページ目以降ではタイトルに ( ページ数 ) が出力されます

※ 昔は、<%- または -%> で前後の改行コードを取り除いていた記憶があるのですが、動作しませんでした。


posted by at 2015-02-26 19:22 | Comment(0) | Seesaa | このブログの読者になる | 更新情報をチェックする

2015年02月22日


超簡単。Panoramio

ブックマークレツトをブラウザに登録
Panoranioサイト用ブックマークレット
Panoramio へ行って好きな画像を表示

ブックマークレットを実行すると、コードを取得するページへ移動するのでそれをブログに貼り付ける。
※ 移動したら、プレビューボタンをクリックしてから、とりあえず『画像サイズで最適化』ボタンをクリックして下さい
<script> 
if ( window[window.location.hostname+'.panoramio'] !== true ) { 
	window[window.location.hostname+'.panoramio'] = true; 
	if ( !window.CPWA ) { 
		document.write("<"+"script src=\"http://www.panoramio.com/wapi/wapi.js?v=1&hl=ja_JP\"></"+"script>"); 
	} 
	(function(){ 
	var str; 
	str=""; 
	str+="<style type=\"text/css\">"; 
	str+=".panoramio-wapi-photo .panoramio-wapi-images {"; 
	str+="	background-color: #ffffff;"; 
	str+="}"; 
	str+="</style>  "; 
	document.write(str); 
	})(); 
} 
</script> 
<div id="p90768"></div> 
<script> 
(function() {  
var wapiblock = document.getElementById('p90768'); 
var myOptions = { 
	'width': 600, 
	'height': 408, 
	'openLinksInNewWindow': true 
}; 
var photoRequestOptions = { 
	ids: [{ 
		'photoId': 90768, 
		'userId': 7 
	}] 
}; 
window[window.location.hostname+'.widget'] = new panoramio.PhotoWidget(wapiblock, photoRequestOptions, myOptions); 
window[window.location.hostname+'.widget'].setPosition(0); 
})();  
</script> 

Cathedral of Segovia
金閣寺




posted by at 2015-02-22 21:17 | Comment(0) | WEBサービス | このブログの読者になる | 更新情報をチェックする

2014年11月28日


WEB アーカイブと Google ウェブマスターツール / ペンギンアップデート以来不明なリンク切れエントリが急増


(Panguin Tool ( ペンギン・パンダアップデート影響確認ツール ) | Technology by Barracuda Digital)

気のせいか、この間のペンギンアップデート以来、よく解らないリンク切れのエラーが Google ウェブマスターツールで積み重なって行くのですが、どれも全く意味の無いエントリで、かなり前に公開をやめたブログの記事ばかりです。



しかも、リンク元にはそのリンクは無く、そもそも、リンク元がリンク切れしているものもあります。どうも、Google の解析が失敗しているらしいと思われる現象が他にもあって、JavaScript 内の処理結果を間違って判断しているような形跡もあります。

とは言え、Google に何か言うのはお角違いなので、こちらは対症療法を頑張るしかありません。( 該当する JavaScript は消しました )なので、リンク切れの記事をリニューアルして公開する方向で作業していますが・・・・・

ここで一つ問題が。

Google ウェブマスターツールでは、URL は解るのですがタイトルが解らないのでどの非公開記事なのかわかりません。リンク元にはもう既に無いのですから( 普通はこれで確認しますけれど )

そこで。

WEB アーカイブの出番です。一般のブログであれなんであれ、WEB アーカイブには見事に保存されていました。ほとんど当時のまま表示可能で、タイトルを取得する事は簡単で、そこからブログシステム内の検索で取り出す事ができます。

Wayback Machine - Internet Archive


WEB アーカイブは他にもいろいろ助かっています。

■ 対象サーバーがダウンしていてもダウンロード可能で記事も読める。
■ サイトが閉鎖していても、当時のままのソフトウェアがダウンロードできる。

特に、最近良くフリーフォントの配布先がなくなったりしていた事が多かったので、助かっています。

これは自分のサイトでも言える事で、URL さえどこかに保存できていたら、当時の文章やファイルを手に入れる事ができます。

関連する情報

サイトが閉鎖された Gray Graphics さんのフリーフォント



タグ:google
posted by at 2014-11-28 21:20 | Comment(0) | テクニック | このブログの読者になる | 更新情報をチェックする