Здравствуйте! Только начал изучать php, поэтому уж слишком сильно не ругайте, пожалуйста. Задача такова: Пользователь вводит на сайте (l12.html) свои персональные данные. Отправляет их на l12.php, php выводит изображение со словами приветствия и введённой пользователем информацией. Также она сохраняет дубликат картинки в формате png. Проблема в том ( как предполагаю), что передаваемый из html методом POST массив не присваивается в соответствующие переменные в php, php фиксирует наличие не определённых переменных и крашится. Проблема скорее всего в том, что я не знаю каких-то нюансов работы php. Все файлы приложил к теме. Буду чрезвычайно благодарен за развернутые ответы.
Можно было код текстом выложить. Если вы говорите что проблема, скорее всего, в том, что php не может присвоить переменные, то проверьте что у Вас там приходит в массиве "$_POST" (var_dump ($_POST)). Если там есть то что нужно, значит неправильно присваиваете, если нет - неправильно отправляете форму.
Форма регистрации. HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Lesson 12</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id="content"> <div id="header"> <div id="center"> <form action="C:\Server\data\htdocs\l12\l12.php" method="POST"> <h1>Please fill in the registration form.</h1><br> <h3>First name: <input type="text" name="firstName"><br> Last name: <input type="text" name="lastName"><br> Login: <input type="text" name="login"><br> <input type="submit" value="Submit"></h3><br> </form> </div> </div> </div> </body> </html> Ответ. HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php header("Content-Type: image/jpeg"); $img=imagecreatefromjpeg("1.jpg"); $txt_color=imagecolorallocate($img,255,0,0); $shadow=imagecolorallocate($img,0,0,0); $font="./deutsch_gothic.ttf"; $fontid="./Slaytanic.ttf"; $firstName=$_POST['firstName']; $lastName=$_POST['lastName']; $login=$_POST['login']; imagettftext($img, 40, 0, 204, 104, $shadow, $font, 'Welcome to our cult!'); imagettftext($img, 40, 0, 200, 100, $txt_color, $font, 'Welcome to our cult!'); imagettftext($img, 40, 0, 54, 204, $shadow, $font, 'firstName: '); imagettftext($img, 40, 0, 50, 200, $txt_color, $font, 'firstName: '); imagettftext($img, 40, 0, 54, 304, $shadow, $font, 'lastName: '); imagettftext($img, 40, 0, 50, 300, $txt_color, $font, 'lastName: '); imagettftext($img, 40, 0, 54, 404, $shadow, $font, 'login: '); imagettftext($img, 40, 0, 50, 400, $txt_color, $font, 'login: '); imagettftext($img, 40, 0, 254, 204, $shadow, $fontid, $firstName); imagettftext($img, 40, 0, 250, 200, $txt_color, $fontid, $firstName); imagettftext($img, 40, 0, 254, 304, $shadow, $fontid, $lastName); imagettftext($img, 40, 0, 250, 300, $txt_color, $fontid, $lastName); imagettftext($img, 40, 0, 254, 404, $shadow, $fontid, $login); imagettftext($img, 40, 0, 250, 400, $txt_color, $fontid, $login); imagejpeg($img,'1a.png',100); imagejpeg($img,NULL,75); ?> </body> </html>
В form action нужно указывать путь к скрипту относительно сервера: action="http://localhost/l12/l12.php" или action="l12.php" если страничка с формой в той же папке. В чем смысл использовать imagejpeg если сохраняешь в png? Почитай
Здесь проблем нет. Таковы условия задания. Прочитал, теги HTML ввёл т.к. предположил, что метод POST не работает как раз из-за голого php, без них php тоже не работает, просто выводится текст кода php на странице. --- Добавлено --- За отсутствием примеров и мануалов для полных нубов приходится изгаляться.
Терпеть не могу это оправдание. Во-первых, мануалов до хрена, но вы все ищите мануал прямо по своей задаче... Во-вторых, не читаете ни официальный мануал на php.net, ни одной книги, которых тоже - покупай/качай-не хочу. В-третьих, не пытаетесь включить хоть на йоту логическое мышление. Даже элементарно - вот нахрена выкладывать листинг картинкой? Я что, если захочу замечание сделать, перебивать с неё код должен? Давай разберёмся, что вообще ты пытаешься сделать, а то я по этому коду в задачу вообще не врубаюсь --- Добавлено --- php, по сути, ничего никуда не выводит, если он не запущен в консоли (ну или всякие извращения для написания gui-приложений на php, но я этого не понимаю). Он должен помочь серверу дать ответ, понятный клиенту. Т.е. сервер передаёт ему данные запроса, а php передаёт: в ответ на этот запрос кинь в клиента вот этим бредом. Клиентом обычно у нас выступает браузер, который этот ответ и выводит. Чтобы браузер понял ответ, у ответа должны быть правильные заголовки. Чтоб браузер понял ответ как картинку, заголовки должны соответствовать картинке. По умолчанию, поскольку php чаще всего используется для вывода HTML, заголовки соответствуют HTML, а не картинке. Так что надо отдать правильный для картинки Content Type. Всё, дальше ищи сам
Вложенная картинка - скрин того, что выводит браузер. Вот код: PHP: <?php header("Content-Type: image/jpeg"); $img=imagecreatefromjpeg("1.jpg"); $txt_color=imagecolorallocate($img,255,0,0); $shadow=imagecolorallocate($img,0,0,0); $font="./deutsch_gothic.ttf"; $fontid="./Slaytanic.ttf"; $firstName=$_POST['firstName']; $lastName=$_POST['lastName']; $login=$_POST['login']; imagettftext($img, 40, 0, 204, 104, $shadow, $font, 'Welcome to our cult!'); imagettftext($img, 40, 0, 200, 100, $txt_color, $font, 'Welcome to our cult!'); imagettftext($img, 40, 0, 54, 204, $shadow, $font, 'firstName: '); imagettftext($img, 40, 0, 50, 200, $txt_color, $font, 'firstName: '); imagettftext($img, 40, 0, 54, 304, $shadow, $font, 'lastName: '); imagettftext($img, 40, 0, 50, 300, $txt_color, $font, 'lastName: '); imagettftext($img, 40, 0, 54, 404, $shadow, $font, 'login: '); imagettftext($img, 40, 0, 50, 400, $txt_color, $font, 'login: '); imagettftext($img, 40, 0, 254, 204, $shadow, $fontid, $firstName); imagettftext($img, 40, 0, 250, 200, $txt_color, $fontid, $firstName); imagettftext($img, 40, 0, 254, 304, $shadow, $fontid, $lastName); imagettftext($img, 40, 0, 250, 300, $txt_color, $fontid, $lastName); imagettftext($img, 40, 0, 254, 404, $shadow, $fontid, $login); imagettftext($img, 40, 0, 250, 400, $txt_color, $fontid, $login); imagejpeg($img,'1a.png',100); imagejpeg($img,NULL,75); ?> Задание ниже.
Тебе же уже написали, что это бред. Должен быть запущен сервер, и адрес указан относительно домена. Браузер не запускает php, для браузера - это обычный текстовый файл. PHP запускает сервер