0

データベースからランダムな画像IDを取得し、それを有効なファイル名に変換し、それを使用してリンクからランダムな画像を生成するスクリプトを作成しました。

このようなリンクは次のようになります(機能します-試してみてください): http: //imgit.org/roll.php?image = 3J9N0Y4k8g4l4G7

そのリンクをリロードすると、画像が変化することに気付くでしょう。ただし、この画像を追加すると機能しますが、そのリンクをBBCodeタグ<img src="THAT LINK" />内に配置すると、phpBBやvBulletinなどのメッセージボードでは機能しません。[img][/img]

まったく同じことを行うさまざまなサービス(フォーラムのリンク)があり、それが機能するため、スクリプトに問題があると思います。

これが私のroll.phpスクリプトです:

<?php

$imgit_root_path = '.';
include("{$imgit_root_path}/common.php");

if ($config['disable_roll'])
{
    redirect('index.php');  
}

$roll_key = request_var('image', '');
$roll_key = substr($roll_key, 0, 15);

if (!$roll_key)
{
    redirect('index.php?action=404');   
}

if (!$image->roll_key_exists($roll_key))
{
    redirect('index.php?action=404');   
}

$images = $image->roll_info($roll_key);
$images = explode('|', $images);

$count = sizeof($images);
$index = mt_rand(0, $count - 1);

$extList = array();
$extList['gif']  = 'image/gif';
$extList['jpg']  = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$extList['png']  = 'image/png';

$image_url  = generate_site_url() . IMAGES_PATH . $image->get_name($images[$index]);
$image_inf  = pathinfo($image_url);

header('Content-type: ' . $extList[$image_inf['extension']]);
readfile($image_url);
?>
4

2 に答える 2

1

問題は、phpBBが画像として確認されていないリンクを許可しないことだと思います。つまり、.jpgなどの既知の画像拡張子はありません。

https://www.phpbb.com/community/viewtopic.php?f=46&t=1285255

セキュリティ上の理由から、(最初の例のように)拡張子を確認できない画像はBBCodeでは許可されていません。画像の代わりに、誰かがJavaScriptスクリプトを埋め込むことは完全に可能であり、さらに悪いことに、ページにアクセスする人、あるいはサーバーにさえもセキュリティ上のリスクをもたらす可能性があります。

これは、vBulletinでも同じである可能性があります。

多分フォーラム設定でそれを上書きできるようですか?

または、スクリプトを変更して、末尾に「.jpg」拡張子を追加できる場合は、それでも機能する可能性があります。

于 2013-01-27T17:08:26.523 に答える
0

何が起こるかはブラウザのキャッシュ画像だと思います。header('Cache-Control:max-age = 0');を追加してみてください。readfile($ image_url);の前

于 2013-01-27T17:06:10.517 に答える