PHP를 사용하여 이미지를 만들었습니다. 코드를 작성하는 것이지만 매우 중요한 시점에 갇혔습니다. 그 이미지에서 내 선택의 글꼴 모음을 원하지만, 그렇지 않으면 기본 글꼴이 실행될 때만 글꼴 모음을 선택합니다. 이 논리가 제대로 실행되지 않습니다. 내가 어떤 폰트 패밀리를 선택하지 않았을 때 기본 폰트가 실행되고 입력을 보여 주지만 어떤 폰트를 선택할 때도 실행되고 기존 이미지를 덮어 쓰지만 화면에 입력을 보여주지 않습니다.이미지를 PHP로 생성
문제점을 말씀해주십시오. 다음은 php 파일의 코드입니다.
<?php
include_once('includes/includes.inc.php');
if(isset($_GET['txt'])){
$txt = $_GET['txt'];
$_SESSION['txt'] = $txt;
}
if(!isset($_SESSION['rand'])){
$rand = mt_rand(100,1000);
$_SESSION['rand'] = $rand;
}
$im = @imagecreate(288, 288) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 230, 248, 248);
$text_color = imagecolorallocate($im, 85, 85, 85);
if(isset($_GET['Smile'])){
$query = mysql_query("SELECT * FROm tbl_fonts WHERE font_name = '".$_GET['Smile']."'");
$get = mysql_fetch_array($query);
$desfon = 'images/fonts/'.$get['font_name'].'.ttf';
//echo $desfon;
imagettftext($im, 55, 0, 155, 55, $text_color, $desfon, $_SESSION['txt']);
}
else{
imagestring($im, 55, 155, 55, $_SESSION['txt'], $text_color);
}
header("Content-Type: image/png");
$filename1 = $_SESSION['txt'].$_SESSION['rand'].'.png';
imagepng($im,$filename);
echo '<img src="'.$filename.'" alt="" />';
?>
브라우저 캐시로 인해 이미지가 표시되지 않는 경우. 이미지 소스에 타임 스탬프를 넣으려고하므로 항상
먼저 $ _SESSION –
을 사용하기 전에 session_start()를 호출해야합니다. 이렇게하면 공격자가 현재 사용자가 액세스 할 수있는 위치에 파일을 쓸 수 있습니다. 파일 이름으로 사용하기 전에 $ _GET [ 'txt'] 내용을 정리하고 싶을 것입니다. – MatsLindh