2017-02-23 29 views
-5

У меня есть код ниже, и я пытаюсь его получить, поэтому у меня есть поле ввода, которое я отправляю, а затем он использует поле ввода как текст на изображении генерироваться.Php execute function on form submit не работает

<form id="MyForm" method="post" action="process()"> 
<input> 
<input type="submit"> 
</form> 

<?php 
function process() 
{ 
/* Create some objects */ 
$image = new Imagick(); 
$draw = new ImagickDraw(); 
$pixel = new ImagickPixel('gray'); 

/* New image */ 
$image->newImage(800, 75, $pixel); 

/* Black text */ 
$draw->setFillColor('black'); 

/* Font properties */ 
$draw->setFont('Bookman-DemiItalic'); 
$draw->setFontSize(30); 

/* Create text */ 
$image->annotateImage($draw, 10, 45, 0, 
    'The quick brown fox jumps over the lazy dog'); 

/* Give image a format */ 
$image->setImageFormat('png'); 

/* Output the image with headers */ 
header('Content-type: image/png'); 
echo $image; 
} 
?> 

Когда я пробую этот код, он говорит файл www.site.com/process() не найден. Я последовал за учебником, чтобы получить это, поэтому я не уверен, где я ошибся.

+2

РНР на стороне сервера так, конечно, выше, не будет работать. – Cyclonecode

+0

'process()' что он дает? – C2486

+0

вызов функции в атрибуте действия формы? Ты делаешь это неправильно. –

ответ

1

Значение атрибута action должно быть URL-адресом.

Этот URL-адрес может обрабатываться скриптом PHP. Этот скрипт PHP может запускать функцию.

Вы можете запустить функцию для любого запроса на этот URL-адрес или использовать оператор if для проверки данных, представленных формой (на данный момент данных нет, поэтому сначала вам нужно будет поместить их в форму) и вызывать функцию условно.


NB Ваш PHP скрипт не может одновременно выводить text/html и image/png данных. Вы должны выбрать один файл для отправки в браузер.


Если вы хотите запустить функцию непосредственно от формы представления, то вам необходимо запустить код в браузере вместо сервера, писать код в JavaScript, и связать функцию как event listener для формы submit.

+0

Привет. Поэтому вы рекомендуете мне обратиться к файлу PHP из моей HTML-формы, например: '' '

' '' – Jimmy

+0

@Jimmy - Это не Это такая рекомендация, поскольку это единственный способ, которым подход, который вы принимаете, может работать. (Единственная альтернатива - сделать HTTP-запрос с JavaScript вместо отправки формы) – Quentin

2

Вы можете сделать это, добавив имя одного из элементов управления формы, а затем проверить, так это значение устанавливается на форме представления:

<!-- submit the form to the same page --> 
<form id="MyForm" method="post" action="/"> 
    <input type="submit" name="submit"> 
</form> 

// check if the form is set in the $_POST array 
if (isset($_POST['submit'])) { 
    process(); 
} 
+0

Это не сработает. Функция 'process' пытается вывести изображение. Вы не можете этого сделать после того, как вы уже выпустили некоторый HTML. – Quentin

+0

@Quentin - конечно, я знаю это, но приведенный выше пример должен только показать, как вызвать исполняемый php-код при отправке формы. Я не буду писать код для него =) – Cyclonecode

+0

Привет @ Cyclonecode благодарю вас за информацию. Итак, должен ли я иметь HTML-файл с формой, в которой последействие будет опубликовано, чтобы сказать myfile.php '' '' '' – Jimmy

 Смежные вопросы

  • Нет связанных вопросов^_^