Ваш исходный код генерирует Undefined variable:
ошибок по всем вашим переменным, вы всегда должны устанавливать переменные перед их использованием, это включает переменные $ _POST, вы должны включить сообщение об ошибках error_reporting(E_ALL)
при разработке и затем тоже изменить error_reporting(0)
при загрузить на действующий сайт, после чего вы увидите ошибки, которые мешают обработке / обновлению изображения.
Я исправил ваш код с некоторыми изменениями:
<?php
header("Cache-Control: no-cache, must-revalidate"); //remind the browser not to cache the image
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
error_reporting(E_ALL); //Change to 0 when live
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tracker</title>
</head>
<body bgcolor="#4b7bb2">
<font face="arial">
<center>
<?php
$password=''; //pre-set thos vars
$status='';
$server='';
$room='';
if(isset($_POST['submit'])){
$password = $_POST['password'];
if($password == "1234"){
$status = $_POST['status'];
$server = $_POST['server'];
$room = $_POST['room'];
$im = imagecreatefrompng("in.png");
$colour = imagecolorallocate($im, 255, 255, 255);
$font = 'BurbankBigRegular-Bold.ttf'; //
imagettftext($im, 20, 0, 100, 68, $colour, $font, $status);
imagettftext($im, 20, 0, 95, 95, $colour, $font, $server);
imagettftext($im, 20, 0, 85, 127, $colour, $font, $room);
imagepng($im,'out.png');
imagedestroy($im);
$result="<b> Updated! </b>";
}else{
$result="<p><b>Incorrect Password!</b></p>";
}
}
echo (isset($result))?$result:'';
?>
<form action="" method="POST" />
<p>Password: <input type="password" name="password" value="<?php echo htmlentities($password); ?>"/></p>
<p>Status: <select name="status">
<option value="">Select...</option>
<?php
echo "<option value=\"Online\""; if($status=='Online'){ echo" selected=\"selected\"";} echo"> Online</option>\n";
echo "<option value=\"Offline\""; if($status=='Offline'){ echo" selected=\"selected\"";} echo"> Offline</option>\n";
echo "<option value=\"Tracking...\""; if($status=='Tracking...'){ echo" selected=\"selected\"";} echo"> Tracking</option>\n";
?>
</select>
</p>
<p>Server: <input type="text" name="server" value="<?php echo htmlentities($server); ?>"/></p>
<p>Room: <input type="text" name="room" value="<?php echo htmlentities($room); ?>"/></p>
<p><input type="submit" name="submit"/></p>
</form>
<p>Tracker:</p>
<p><img src="out.png" alt="Tracker" /></P>
<a href="http://ClubPenguincheatsy.com/cptrackers"s>Back to Tracker Dashbaord</a>
</center>
</body>
</html>
Обратите внимание на htmlentities()
и неиспользование $_SERVER['PHP_SELF']
в форме.
EDIT:
Взято из http://php.net/manual/en/function.imagettftext.php
Путь к шрифту TrueType, который вы хотите использовать.
В зависимости от того, какую версию библиотеки GD использует PHP, когда
fontfile не начинается с начального / затем .ttf будет добавлен
имя файла и библиотека будет пытаться найти это имя файла
вдоль пути шрифта, определенного библиотекой.
При использовании версий библиотеки GD ниже 2.0.18 пробел
символ, а не точка с запятой, использовался в качестве «разделителя пути»
для разных файлов шрифтов. Непреднамеренное использование этой функции
В результате появится предупреждающее сообщение: Предупреждение: не удалось найти / открыть шрифт. За
эти версии, единственное решение заключается в перемещении шрифта в
путь, который не содержит пробелов.
Во многих случаях, когда шрифт находится в том же каталоге, что и скрипт
использование этого трюка облегчит любые проблемы с включением.
<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));
// Name the font to be used (note the lack of the .ttf extension)
$font = 'BurbankBigRegular-Bold';
?>