2012-06-10 3 views
0

image.php가 유효한 그림 파일인지 확인하려고합니다. 데이터베이스에 크기가 조정 된 그림에 대한 정보가 있으면 유효 할 것입니다. image.php는 원본 그림의 크기를 조정하여 화면에 인쇄하기 때문에 그렇지 않을 수도 있습니다. 또한 대안이 있습니다 - 데이터베이스에 파일 이름 정보가 없으며 오류 메시지 또는 오류 그림이 될 수 있습니다. 이미지의 크기를 가져오고 width = 0이고 height = 0이면 오류 메시지를 출력하고 싶습니다. 나는 getimagesize와 함께 일을하려고했지만 그것은 오류 발생 : 스트림을 열지 못했습니다 : [function.getimagesize] 동적으로 생성 된 그림의 PHP getimagesize

에서 ...

경로 해당 파일이나 디렉토리가 100 % 정확합니다. PHP를 통해 동적으로 만들어진 그림을 얻을 수 없다는 것을 읽었습니다. 난 항상 내 데이터베이스를 확인할 수 있지만 PHP를 통해 동적으로 만들어진 이미지 크기를 얻는 해킹이 있는지 궁금합니다.

코드 :

$file = "image.php?img=1"; 
$a = getimagesize($file); 
echo 'aaaaaaaaa' . $a; 

편집 : 솔루션 중 누구도 나를 위해 일하지 않기 때문에 내가 다른 방법을했다

- 난 그냥 올바른 파일 이름 실존에 대한 데이터베이스를 확인합니다.

도움 주셔서 감사합니다. http://etc

+1

'getimagesize()'는 배열을 반환하지 않습니까? 만약 그렇다면,'echo'는 당신에게 아무런 도움이되지 않을 것입니다. –

답변

1

당신은 당신이 전체 URL이 필요 file_get_contents 필요 PHP는 당신이 URL을 요청한다는 것을 깨닫게됩니다. image.php?img=1

$file = 'http://example.com/image.php?img=1'; // full-blown HTTP request 
$file = 'image.php'; // local-only request 

을 요청하지만 본격적인 HTTP 왕복 요청을하고있는 때문에이 다소 비효율적 단지 로컬 전용 파일 시스템이다. 해당 URL이 암호/세션으로 보호 된 경우 먼저 "로그인"해야합니다.

해당 이미지가 로컬 데이터베이스에서 오는 경우 다음을 통해 가져 오기 논리를 다시 만들어야합니다. 함수 호출을 사용하여 HTTP 요청을하지 않고 단순히 스크립트 내에서 "내부적으로"작업 한 다음 GD의 imagecreatefromstring()에 데이터를 전달하면 알려진 이미지 유형을 모두 받아 들일 수 있습니다. imagesx()imagesy() 함수를 사용하면 높이/폭

+2

동일한 글을 쓰고 있었지만 가장 먼저 끝내었다. 이것이 적절한 http 요청을하기 위해서는'$ file = 'http : //127.0.0.1/image.php? img = 1'; 또는 요청을하기 위해 필요한 URL을 사용하십시오. –

+0

당신은'image.php? img = 1'을 얻을 수 없으며 당신이 무엇을하려고하는지 이해하지 못할 것입니다. 전체 경로로 스왑하거나 그냥'$ _GET [ 'img']'그리고 나서'file_get_contents ('image.php');' – judda

+0

나는 당신의 충고를 가장 좋아하지만 imagecreatefromstring (function.imagecreatefromstring)을 얻는다 : 데이터는 398 행의 add_picture.php에서 인식 된 형식이 아닙니다.이 행은 $ r = imagecreatefromstring ($ cont)입니다. 경로는 정상이며 사진은 정상이며 2 줄 아래에 인쇄됩니다. 왜 거기에 오류가 있습니다 : ( – Kalreg

4

당신을 위해 본격적인 절대 URL을 사용해야 할 것 : image.php?img=1 시스템 물론

$cont = file_get_contents($file); 
$r = imagecreatefromstring($cont); 
imagesx($r); 
imagerx($r); 

에 실제 파일이 아니므로