Я создаю изображение, используя php i, почти код, но я застрял в очень важной точке. Я хочу, чтобы семейство Font по своему выбору было на этом изображении, но только когда я выбираю семейство шрифтов, в противном случае выполняется шрифт по умолчанию. Эта логика работает неправильно. Когда я не выбрал ни одного семейства шрифтов, шрифт по умолчанию запускает и показывает мне ввод, но когда я выбираю любой шрифт, он также запускается и существующее изображение перезаписывается, но оно не показывает мне входные данные на экране.Создать изображение в 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_start() перед использованием $ _SESSION –
Это позволит злоумышленнику писать файлы где угодно, где текущий пользователь имеет доступ. Вероятно, вы захотите очистить содержимое $ _GET ['txt'], прежде чем использовать его как имя файла. – MatsLindh