デジットさんの生活便利サイトトップへ デジットさんの動的ページを静的ページに見せる2(PHP)

トップページ > ホームページ作成 > 動的ページを静的に2

PHPで引数を利用した動的ページを作成した時、引数としてスラッシュ(/)は、引き渡せません。ここでは、スラッシュ(/)を引き渡す方法をお教えします。

スラッシュを引数として引き渡す

動的ページを静的にで、静的ページに見せかけた引数を受け渡す方法をお教えしましたが、その方法では、スラッシュ"/"をurlエンコードした「%2F」があると、サーバーエラーになります。404エラーで拒否されます。ちなみに通常の動的ページの引数として「?a=%2F」の様に記載した場合は、スラッシュ"/"でも受け渡すことが出来ます。
静的ページに見せた動的ページでスラッシュ"/"を上手に受け渡せれば、ディレクトリパスなどの情報を利用できとても便利です。

スラッシュ"/"を引き渡す方法

Apache 2.0.46 以降でサーバーの管理者の場合は、「AllowEncodedSlashes ディレクティブ」をONにすれば、スラッシュ"/"の受け渡しを許可することが出来ます。残念ながら、「.htaccess」ファイルで設定の上書きはできません。
そこで、ちょっと裏技を使うことにします。スラッシュ"/"をurlエンコードした結果は「%2F」ですので、「%2F」を別の文字にエスケープします。どんな文字か良いかというと、変換しても支障のでない文字ですので「%2F」を更にurlエンコードするのが安全そうです。そこで、「%2F」をurlエンコードした値「%252F」に置き換えてみます。PHPでは、次のように記載すれば置き換えられます。「$ln_path」をこの方式でエンコードした結果が「$pr_path」に入ります。「$ln_path」をurlエンコードし、更に"%2F"を"%252F"に置き換えています。

$ln_path = "../img/pict/spa/utsukushi.jpg";
$pr_path = str_replace("%2F","%252F",urlencode(mb_convert_encoding($ln_path, "UTF-8")));

スラッシュ"/"を引き渡す応用サンプル

画像をまとめて表示で紹介した、「imgview.php」を静的ページ用に変更してみました。リストは、次のとおりです。ファイル名は「imgview3.php」としました。「str_replace("%2F","/",$_GET["d"])」で、受け取った"%2F"を/"に戻すことが出来ます。
このファイルは「http://*****.**/img_view3/..%252Fimg%252Fpict%252Fspa%252Futsukushi.jpg/」の様に、静的ページの様に呼ぶことが出来ます。ただし、このファイルから相対アドレスを使う場合は、注意が必要です。「imgview3.php」の相対アドレスは、「../imgview3.php」ですが、「$_SERVER['PHP_SELF']」で確認すると引数の情報も入っていて、「/img_view3/..%2Fimg%2Fpict%2Fspa%2Futsukushi.jpg/」となっています。すなわち「../img/pict/spa/utsukushi.jpg」を呼ぶ場合は、「imgview3.php」の下に'/'が2つありますので、2階層下からの相対アドレスにしなければなりません。そこで、「../img/pict/spa/utsukushi.jpg」に"../../"を追加すれば、OKです。自動的に相対アドレスを設定したい場合は、相対アドレス取得を参考にしてください。

<?php
//指定された画像をブラウザに表示 
list(,$_GET["d"]) = explode('/',$_SERVER['PATH_INFO']);//文字列を'/'で分割する echo $_GET["d"];
$file_name = str_replace("%2F","/",$_GET["d"]); //ファイル名
echo $file_name;
if (@getimagesize($file_name)){ //画像かどうか?
echo "<img src = \"../../" .$file_name. "\" >";//PHP似続けた'/'の数だけ'../'を追加
}
?>

これで、スラッシュ"/"の受け渡しも可能な動的ページを静的ページに見せる基本動作が出来ました。
レンタルサーバーのロリポップでは、動作確認できています。

ホームページを公開するレンタルサーバーは、 ロリポップ! がお薦め、 PHP5を使うならPHP5から選ぼう。

Amazon.co.jpアソシエイト:PHP&プログラミング

売れている順 新刊順

:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20php :php2_  :3

関連ページ

ホームページ作成

アフィリエイト

デジットさんのホームページ入門に移行中

スポンサード リンク

とことん!ホームページホームページ入門役立つサイトデジットさんのリストラ日記仮福真琴の精神科医はうそだらけ

2005-2010 Copyright © Digit-01 All Rights Reserved.