За последние 24 часа нас посетили 22673 программиста и 1264 робота. Сейчас ищут 793 программиста ...

Генерация текста на изображении

Тема в разделе "PHP для новичков", создана пользователем Bfmt, 13 май 2017.

Метки:
  1. Bfmt

    Bfmt Новичок

    С нами с:
    13 май 2017
    Сообщения:
    9
    Симпатии:
    0
    Здравствуйте! Только начал изучать php, поэтому уж слишком сильно не ругайте, пожалуйста.
    Задача такова:
    Пользователь вводит на сайте (l12.html) свои персональные данные.
    Отправляет их на l12.php, php выводит изображение со словами приветствия и введённой пользователем информацией.

    Также она сохраняет дубликат картинки в формате png.

    Проблема в том ( как предполагаю), что передаваемый из html методом POST массив не присваивается в соответствующие переменные в php, php фиксирует наличие не определённых переменных и крашится.

    Проблема скорее всего в том, что я не знаю каких-то нюансов работы php. Все файлы приложил к теме.

    Буду чрезвычайно благодарен за развернутые ответы.
     

    Вложения:

    • l12.zip
      Размер файла:
      231,9 КБ
      Просмотров:
      1
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Можно было код текстом выложить.

    Если вы говорите что проблема, скорее всего, в том, что php не может присвоить переменные, то проверьте что у Вас там приходит в массиве "$_POST" (var_dump ($_POST)). Если там есть то что нужно, значит неправильно присваиваете, если нет - неправильно отправляете форму.
     
    Bfmt нравится это.
  3. Bfmt

    Bfmt Новичок

    С нами с:
    13 май 2017
    Сообщения:
    9
    Симпатии:
    0
    Скорее второй вариант, но в интернете ничего подобного не нашёл...
     
  4. Bfmt

    Bfmt Новичок

    С нами с:
    13 май 2017
    Сообщения:
    9
    Симпатии:
    0
    Форма регистрации.

    HTML:
    1. <!DOCTYPE html>
    2.   <meta charset="utf-8">
    3. <title>Lesson 12</title>
    4. <link rel="stylesheet" href="style.css">
    5. </head>
    6. <div id="content">
    7.   <div id="header">
    8.   <div id="center">
    9.  
    10.     <form action="C:\Server\data\htdocs\l12\l12.php" method="POST">
    11.       <h1>Please fill in the registration form.</h1><br>
    12.  
    13.       <h3>First name: <input type="text" name="firstName"><br>
    14.       Last name: <input type="text" name="lastName"><br>
    15.       Login: <input type="text" name="login"><br>
    16. <input type="submit" value="Submit"></h3><br>
    17. </form>
    18.  
    19. </div>
    20. </div>
    21. </div>
    22. </body>
    23. </html>
    24.  
    Ответ.

    HTML:
    1. <!DOCTYPE html>
    2.   <meta charset="utf-8">
    3. </head>
    4. <?php
    5. header("Content-Type: image/jpeg");
    6. $img=imagecreatefromjpeg("1.jpg");
    7. $txt_color=imagecolorallocate($img,255,0,0);
    8. $shadow=imagecolorallocate($img,0,0,0);
    9. $font="./deutsch_gothic.ttf";
    10. $fontid="./Slaytanic.ttf";
    11.  
    12. $firstName=$_POST['firstName'];
    13. $lastName=$_POST['lastName'];
    14. $login=$_POST['login'];
    15.  
    16. imagettftext($img, 40, 0, 204, 104, $shadow, $font, 'Welcome to our cult!');
    17. imagettftext($img, 40, 0, 200, 100, $txt_color, $font, 'Welcome to our cult!');
    18. imagettftext($img, 40, 0, 54, 204, $shadow, $font, 'firstName: ');
    19. imagettftext($img, 40, 0, 50, 200, $txt_color, $font, 'firstName: ');
    20. imagettftext($img, 40, 0, 54, 304, $shadow, $font, 'lastName: ');
    21. imagettftext($img, 40, 0, 50, 300, $txt_color, $font, 'lastName: ');
    22. imagettftext($img, 40, 0, 54, 404, $shadow, $font, 'login: ');
    23. imagettftext($img, 40, 0, 50, 400, $txt_color, $font, 'login: ');
    24.  
    25. imagettftext($img, 40, 0, 254, 204, $shadow, $fontid, $firstName);
    26. imagettftext($img, 40, 0, 250, 200, $txt_color, $fontid, $firstName);
    27. imagettftext($img, 40, 0, 254, 304, $shadow, $fontid, $lastName);
    28. imagettftext($img, 40, 0, 250, 300, $txt_color, $fontid, $lastName);
    29. imagettftext($img, 40, 0, 254, 404, $shadow, $fontid, $login);
    30. imagettftext($img, 40, 0, 250, 400, $txt_color, $fontid, $login);
    31.  
    32.  
    33. imagejpeg($img,'1a.png',100);
    34. imagejpeg($img,NULL,75);
    35. ?>
    36. </body>
    37. </html>
    38.  
     
  5. gruth

    gruth Активный пользователь

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    В form action нужно указывать путь к скрипту относительно сервера: action="http://localhost/l12/l12.php" или action="l12.php" если страничка с формой в той же папке.
    В чем смысл использовать imagejpeg если сохраняешь в png?
    Почитай
     
    #5 gruth, 13 май 2017
    Последнее редактирование: 13 май 2017
    Bfmt нравится это.
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Интересная идея - вывести бинарное представление jpeg прямо в html-документ :)))
     
    Bfmt нравится это.
  7. Bfmt

    Bfmt Новичок

    С нами с:
    13 май 2017
    Сообщения:
    9
    Симпатии:
    0
    Здесь проблем нет.
    Таковы условия задания.
    Прочитал, теги HTML ввёл т.к. предположил, что метод POST не работает как раз из-за голого php, без них php тоже не работает, просто выводится текст кода php на странице.
    upload_2017-5-14_11-46-19.png
    --- Добавлено ---
    За отсутствием примеров и мануалов для полных нубов приходится изгаляться. :(
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Терпеть не могу это оправдание. Во-первых, мануалов до хрена, но вы все ищите мануал прямо по своей задаче... Во-вторых, не читаете ни официальный мануал на php.net, ни одной книги, которых тоже - покупай/качай-не хочу. В-третьих, не пытаетесь включить хоть на йоту логическое мышление.

    Даже элементарно - вот нахрена выкладывать листинг картинкой? Я что, если захочу замечание сделать, перебивать с неё код должен?

    Давай разберёмся, что вообще ты пытаешься сделать, а то я по этому коду в задачу вообще не врубаюсь
    --- Добавлено ---
    php, по сути, ничего никуда не выводит, если он не запущен в консоли (ну или всякие извращения для написания gui-приложений на php, но я этого не понимаю). Он должен помочь серверу дать ответ, понятный клиенту. Т.е. сервер передаёт ему данные запроса, а php передаёт: в ответ на этот запрос кинь в клиента вот этим бредом. Клиентом обычно у нас выступает браузер, который этот ответ и выводит. Чтобы браузер понял ответ, у ответа должны быть правильные заголовки. Чтоб браузер понял ответ как картинку, заголовки должны соответствовать картинке. По умолчанию, поскольку php чаще всего используется для вывода HTML, заголовки соответствуют HTML, а не картинке. Так что надо отдать правильный для картинки Content Type. Всё, дальше ищи сам
     
    Bfmt нравится это.
  9. Bfmt

    Bfmt Новичок

    С нами с:
    13 май 2017
    Сообщения:
    9
    Симпатии:
    0
    Вложенная картинка - скрин того, что выводит браузер.

    Вот код:
    PHP:
    1. <?php
    2. header("Content-Type: image/jpeg");
    3. $img=imagecreatefromjpeg("1.jpg");
    4. $txt_color=imagecolorallocate($img,255,0,0);
    5. $shadow=imagecolorallocate($img,0,0,0);
    6. $font="./deutsch_gothic.ttf";
    7. $fontid="./Slaytanic.ttf";
    8.  
    9. $firstName=$_POST['firstName'];
    10. $lastName=$_POST['lastName'];
    11. $login=$_POST['login'];
    12.  
    13. imagettftext($img, 40, 0, 204, 104, $shadow, $font, 'Welcome to our cult!');
    14. imagettftext($img, 40, 0, 200, 100, $txt_color, $font, 'Welcome to our cult!');
    15. imagettftext($img, 40, 0, 54, 204, $shadow, $font, 'firstName: ');
    16. imagettftext($img, 40, 0, 50, 200, $txt_color, $font, 'firstName: ');
    17. imagettftext($img, 40, 0, 54, 304, $shadow, $font, 'lastName: ');
    18. imagettftext($img, 40, 0, 50, 300, $txt_color, $font, 'lastName: ');
    19. imagettftext($img, 40, 0, 54, 404, $shadow, $font, 'login: ');
    20. imagettftext($img, 40, 0, 50, 400, $txt_color, $font, 'login: ');
    21.  
    22. imagettftext($img, 40, 0, 254, 204, $shadow, $fontid, $firstName);
    23. imagettftext($img, 40, 0, 250, 200, $txt_color, $fontid, $firstName);
    24. imagettftext($img, 40, 0, 254, 304, $shadow, $fontid, $lastName);
    25. imagettftext($img, 40, 0, 250, 300, $txt_color, $fontid, $lastName);
    26. imagettftext($img, 40, 0, 254, 404, $shadow, $fontid, $login);
    27. imagettftext($img, 40, 0, 250, 400, $txt_color, $fontid, $login);
    28.  
    29.  
    30. imagejpeg($img,'1a.png',100);
    31. imagejpeg($img,NULL,75);
    32. ?>
    Задание ниже.
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Тебе же уже написали, что это бред. Должен быть запущен сервер, и адрес указан относительно домена. Браузер не запускает php, для браузера - это обычный текстовый файл. PHP запускает сервер
     
    Bfmt нравится это.
  11. Bfmt

    Bfmt Новичок

    С нами с:
    13 май 2017
    Сообщения:
    9
    Симпатии:
    0
    Настроил удаленный сервер и в него загрузил php. Теперь всё работает, благодарю.