PHPに渡して実行したいこの変数を正確に何を期待するかは、やや不明確です。私はあなたがあなたが望むのはどの画像であるか、あるいはある種のユーザー識別子などを単に示したいと思っていると思います...
そのような変数をPHPに渡したい場合querystring
は、リクエストのを使用できます。(GET
リクエストに対して機能します)
たとえば<img>
、次の要素を作成できますsrc
:http ://example.com/new_size_image.php?image=imagename&otherparam=1&otherparam2=2
ここで、imagenameは画像の識別子であり、otherparam1と2はオプションの引数です。次のように、PHPでこれらの変数にアクセスできます。
$imagename = $_GET['image'];
$otherparam = $_GET['otherparam'];
$otherparam2 = $_GET['otherparam2'];
次に、これを使用して、クライアントに提供する画像を特定できます。
次に、なぜiframeが必要だと思うのか混乱しています。何も難読化したり、ユーザーがリンクをコピーするのを阻止したりすることはありません。画像を使用する方がはるかに優れています。適切なヘッダーを設定するだけです。たとえば、$filename
ロードする画像へのパスである引数をとるこの関数を試してください。
function outputImage( $filename ) {
header('Content-Description: File Transfer');
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename='.basename($filename ));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename ));
ob_clean();
flush();
readfile($filename );
exit;
}
(これは関連する質問からです:ランダムな画像へのURL)
セキュリティに関する注意:クエリ文字列を使用してスクリプトに渡す画像(?image=
最初のブロックからの画像)を使用する場合は、ディスク上のファイルの場所を渡さないようにしてください。渡さない場合は、十分な知識のあるユーザーがスクリプトが選択したファイルを送信するようにするリクエストを作成します。代わりに、などのある種の識別子を使用することをお勧めし?image=123456
ます。
<img>
これにより、次のように、このスクリプトのURLを要素として使用できるようになります。
<img src="http://example.com/new_size_image.php?image=imagename&otherparam=1&otherparam2=2" width="300" height="200" />
編集
本当にGETを使用したくない場合は、AJAXでjQueryを使用して画像を読み込むことができます。次に、サーバーへのPOSTリクエストを作成して、base64でエンコードされた画像を返します。この画像はページに挿入されます。これは、<img>
タグに実際には画像のURLが含まれず、代わりに生のbase64でエンコードされたデータが含まれることを意味します。あまりきれいではありませんが、やや難解です。
jQueryとAJAXを使用して画像を読み込むには、次の応答を確認してください:https ://stackoverflow.com/a/12714338/747811
このアプローチを採用した場合は、画像を提供するたびにエンコードを計算するのではなく、base64でエンコードされたファイルとして画像を保存することをお勧めします。画像をエンコードするには、次のようなものを使用できます:http: //www.freeformatter.com/base64-encoder.html
それらをPHPでエンコードするには、次を使用します:http base64_encode()
: //php.net/manual/en/function.base64-encode.php