我正在使用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