0

同じサーバーに 2 つのドメインがあります。www.domain1.com & www.domain2.com.

www.domain1.com には、「Pictures」というフォルダがあります。そのフォルダに、ユーザーは自分の ID でフォルダを作成して写真をアップロードできます。(www.domain1.com/Pictures/User_iD) 同時にアップロードされた画像を使用してサムネイルが作成され、動的に作成されるこのパスに保存されます。 (www.domain1.com/Pictures/User_iD/thumbs)

これは、システムで PHP スクリプトを使用して発生しています。

私の問題は、ユーザーがアップロードした画像を www.domain2.com に表示する必要があることです。私はそれを行うために次のコードを使用しましたが、機能していません。

$image_path="http://www.domain1.com/Pictures/"."$user_id";


$thumb_path="http://www.domain1.com/Pictures/"."$user_id/"."thumbs";

$images = glob($image_path.'/*.{jpg,jpeg,png,gif}', GLOB_BRACE);

このような画像を取得し、

               foreach ($images as $image) {
      // Construct path to thumbnail
        $thumbnail = $thumb_path .'/'. basename($image);

     // Check if thumbnail exists
    if (!file_exists($thumbnail)) {
    continue; // skip this image
    }

しかし、それをしようとすると、www.domain2.com/user.php に画像が表示されません。同じコードを使用して同じドメインにある画像を表示すると、画像は正常に表示されます。

状況を正しく説明していただければ幸いです。助けてください。

前もって感謝します

4

1 に答える 1

1

グロブにはファイル アクセスが必要です。しかし、それは別のドメインにあるためです。ファイルアクセスは取得しません (取得すべきではありません)。それらが同じサーバー上にある場合でも、多くの理由により、お互いのファイルにアクセスできないはずです。

あなたができることは、特定のユーザーの画像のリストを返す小さな API を domain1.com に書くことです。次に、for isntance curl を使用してその情報にアクセスします

写真が保存されている domain1.com:

<?php
//get the user id from the request
$user_id = $_GET['user_id'];

$pathToImageFolder = 'path_to_pictures' . $user_id ;

$images = glob($pathToImageFolder.'/*.{jpg,jpeg,png,gif}', GLOB_BRACE);
//return a JSON array of images
print json_encode($images,true); #the true forces it to be an array

domain2.com:

<?php
//retrieve the pictures
$picturesJSON = file_get_contents('http://www.domain1.com/api/images.php?user_id=1');
//because our little API returns JSON data, we have to decode it first
$pictures = json_decode($picturesJSON);
// $pictures is now an array of pictures for the given 'user_id'

ノート:

1) 使いやすいので、ここでは curl の代わりに file_get_contents を使用しました。しかし、すべてのホストが別のドメインへの file_get_contents を許可しているわけではありません。許可されていない場合は、curl を使用します (インターネットには多くのチュートリアルがあります)。

2) $user_id が正しいかどうかを確認し、リクエストに秘密鍵を追加して、hack0rs を締め出す必要があります。例:file_get_contents('http://www.domain1.com/api/images.pgp?user_id=1&secret=mySecret')次に、domain1.com で簡単なチェックを行って、シークレットが正しいかどうかを確認します。

于 2013-07-04T07:38:38.307 に答える