2013-07-11 3 views
1

나는 이것이 어떻게 작동하는지 잘 모르겠습니다. 웹 사이트 양식의 경우 임의의 captcha 이미지를 생성하여 양식과 함께 표시하고 싶습니다. 그래서 이상적으로 나는 그 라인을 따라 뭔가를 싶습니다PHP에서 웹 사이트에서 직접 만든 GD 라이브러리 이미지를 어떻게 사용합니까?

<form action="post.php" method="post"> 
    ... 
    <?php create_captcha(); ?> 
</form> 

내가 PHP에서 이미지 리소스 (link)

function create_captcha() { 
    $w = 60; $h = 30; 
    $img = imagecreatetruecolor($w, $h); 
    ... 
    //header("Content-Type: image/jpeg"); 
    imagejpeg($img); 
} 

을 생성하는 기능을 수행하는 동안 나는 확실히 알아낼 방법을 출력 할 수 없습니다 해당 이미지를 HTML 양식의 일부로 웹 사이트에 직접 보냅니다. 내 의심은 임시 파일 captcha.jpg에 저장 한 다음 <img src="captcha.jpg" />을 웹 사이트에 생성해야한다는 것입니다.

임시 이미지를 사용하지 않고보다 세련된 방법이 있습니까?

답변

3

<img src="http://domain.com/your-captcha_generating-file-path" /> 
+0

기다림 .. 간단합니까? 필자는'create_captcha()'함수의 본체를 자체 captcha.php 파일에 채우고 폼에서 단순히 ''이라고 부르기 만했다. 매력처럼 작동합니다 : – Jens

+0

어떻게'header()'를 추가 할 수 있습니까? 캡처 이미지가 캐시되지 않도록하려면'header ("Cache-Control : no-cache, must-revalidate");를 설정하고 싶습니다. – Jens

1

당신은 같은 것을 할 수있는 IMG 태그의 소스로 보안 문자 세대의 파일 경로를 사용 : 당신의 img 태그에 Base64로 인코딩 된 데이터 소스를 사용하여

function getCaptcha() { 

    // Begin output buffering 
    ob_start(); 

    // generate the captcha image in some magic way 
    $w = 60; $h = 30; 
    $img = imagecreatetruecolor($w, $h); 
    imagejpeg($img); 

    // and finally retrieve the byte stream 
    $rawImageBytes = ob_get_clean(); 

    return "<img src='data:image/jpeg;base64," . base64_encode($rawImageBytes) . "' />"; 
} 

을, 당신은 원 임시 파일을 저장해야합니다.

+0

감사! 나는 웹 사이트에 이미지 데이터를 임베딩하는 것을 기억하지만, PHP에서이를 수행하는 방법을 알 수 없었다. 위의 코드를 보내 주셔서 감사합니다. @ San 's가 더 깨끗하지 않으면 좋은 해결책이 될 것입니다. – Jens

+0

반갑습니다. 사실, 나는 @ 샌프란의 대답을 upvoted뿐만 아니라 원인이 간단합니다. :디 – ciruvan

관련 문제