2017-02-23 20 views
-5

私は以下のコードを持っていますので、私が入力したボックスを持つことができますし、入力ボックスを画像のテキストとして使用します生成される。PHPがフォーム送信時に関数を実行しない

<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

PHPはサーバー側です。 – Cyclonecode

+0

'process()'それは何を与えるのですか? – C2486

+0

フォームのアクション属性で関数を呼び出していますか?あなたはそれを誤解している。 –

答えて

1

action属性の値は、URLである必要があります。

このURLは、PHPスクリプトで処理できるURLです。そのPHPスクリプトは関数を実行できます。

このURLへのリクエストに対してこの関数を実行するか、ifステートメントを使用してフォームから送信されたデータを調べることができます(現時点ではデータがないため、フォームに最初に入力する必要があります)、条件付きで関数を呼び出します。


NBあなたのPHPスクリプトではありません同時に出力することができtext/htmlimage/pngデータ。あなたはファイルを1つ選んでブラウザに送信する必要があります。


あなたが直接フォームの送信から機能を実行したい場合、あなたは、ブラウザの代わりに、サーバーでコードを実行するJavaScriptのコードを書き、event listenerとしての機能をバインドする必要がありますフォームのsubmitイベントのために。

+0

こんにちは。ですから、私はHTML形式のPHPファイルを以下のように呼び出すことをお勧めします: '' '

' '' – Jimmy

+0

@Jimmy - isnあなたが取っているアプローチが働く唯一の方法であるので、それほど推奨はしません。 (唯一の選択肢は、フォームを送信する代わりにJavaScriptを使用してHTTPリクエストを行うことです) – Quentin

2

あなたは、フォームコントロールの1つに名前を追加することによって、これを行うと、この値は、フォームの送信に設定されているので、チェックすることができ:上記は動作しませんもちろんのよう

<!-- 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ファイルを持っていなければなりません。これは、postアクションがmyfile.php '' '' ' – Jimmy

関連する問題