2013-07-04 4 views
0

동일한 서버에 두 개의 도메인이 있습니다. 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에 표시를 실 거예요. 동일한 코드를 사용하여 동일한 도메인에있는 이미지를 표시하면 이미지가 잘 보입니다.

희망 상황을 올바르게 설명하겠습니다. 도와주세요.

미리 감사드립니다.

+0

사용자가 두 도메인 모두에 대해 priveliges를 읽었습니까? 일반적으로 2 개의 도메인은 서로 다른 파일에 액세스 할 수 없습니다. 또는 보조 하위 디렉토리에 파일을 넣을 수 있습니다. –

+0

읽기 권한을 확인합니다. 우리가 할 수있는 다른 것이 있습니까? –

답변

1

글로브는 파일 액세스가 필요합니다. 그러나 다른 도메인에 있기 때문에. 그것은 파일 접근을 얻지 못한다. 동일한 서버에 있어도 여러 가지 이유로 서로 파일에 액세스 할 수 없어야합니다.

할 수있는 일은 domain1.com에 특정 사용자의 이미지 목록을 반환하는 작은 API를 작성하는 것입니다.

<?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 domain2.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 

: 그런 다음 사진이 저장되는 domain1.com에

말림 isntance에 대한 사용하여 해당 정보에 액세스) 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에 simpel 수표를 보거나 비밀이 맞습니다.

+0

당신은 저를 도울 수 있습니까? 왜냐하면 저는 PHP에 익숙하지 않고 인스턴스 컬에 대해 많은 것을 알고 있습니다. –

+0

작은 예제로 제 답변에 작은 편집을했습니다. 더 많은 정보는 여기 : http://www.binarymoon.co.uk/2010/05/alternative-curl/ – Pinoniq